diff options
author | 2018-05-21 19:40:46 +0100 | |
---|---|---|
committer | 2018-05-21 19:40:46 +0100 | |
commit | 18b92e1117b67d27f98b14b46b19385c2dd23645 (patch) | |
tree | 6be110117ef16181a3a2d6a4703ac781037deabb /core/dnsserver/https_test.go | |
parent | 67c9075331b3c32f55e32836ab261d9364aefeb5 (diff) | |
download | coredns-18b92e1117b67d27f98b14b46b19385c2dd23645.tar.gz coredns-18b92e1117b67d27f98b14b46b19385c2dd23645.tar.zst coredns-18b92e1117b67d27f98b14b46b19385c2dd23645.zip |
make CoreDNS DoH Server (#1619)
* WIP: make CoreDNS DoH Server
* It works
* Fix tests
* Review from Tom - on diff. PR
* correct mime type
* Cleanups and use the pkg/nonwriter
* rename and updates
* implement get
* implement GET
* Code review comments
* correct context
* tweaks
* code review
Diffstat (limited to 'core/dnsserver/https_test.go')
-rw-r--r-- | core/dnsserver/https_test.go | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/core/dnsserver/https_test.go b/core/dnsserver/https_test.go new file mode 100644 index 000000000..a0ddc4b25 --- /dev/null +++ b/core/dnsserver/https_test.go @@ -0,0 +1,66 @@ +package dnsserver + +import ( + "bytes" + "encoding/base64" + "net/http" + "testing" + + "github.com/miekg/dns" +) + +func TestPostRequest(t *testing.T) { + const ex = "example.org." + + m := new(dns.Msg) + m.SetQuestion(ex, dns.TypeDNSKEY) + + out, _ := m.Pack() + req, err := http.NewRequest(http.MethodPost, "https://"+ex+pathDOH+"?bla=foo:443", bytes.NewReader(out)) + if err != nil { + t.Errorf("Failure to make request: %s", err) + } + req.Header.Set("content-type", mimeTypeDOH) + req.Header.Set("accept", mimeTypeDOH) + + m, err = postRequestToMsg(req) + if err != nil { + t.Fatalf("Failure to get message from request: %s", err) + } + + if x := m.Question[0].Name; x != ex { + t.Errorf("Qname expected %s, got %s", ex, x) + } + if x := m.Question[0].Qtype; x != dns.TypeDNSKEY { + t.Errorf("Qname expected %d, got %d", x, dns.TypeDNSKEY) + } +} + +func TestGetRequest(t *testing.T) { + const ex = "example.org." + + m := new(dns.Msg) + m.SetQuestion(ex, dns.TypeDNSKEY) + + out, _ := m.Pack() + b64 := base64.RawURLEncoding.EncodeToString(out) + + req, err := http.NewRequest(http.MethodGet, "https://"+ex+pathDOH+"?dns="+b64, nil) + if err != nil { + t.Errorf("Failure to make request: %s", err) + } + req.Header.Set("content-type", mimeTypeDOH) + req.Header.Set("accept", mimeTypeDOH) + + m, err = getRequestToMsg(req) + if err != nil { + t.Fatalf("Failure to get message from request: %s", err) + } + + if x := m.Question[0].Name; x != ex { + t.Errorf("Qname expected %s, got %s", ex, x) + } + if x := m.Question[0].Qtype; x != dns.TypeDNSKEY { + t.Errorf("Qname expected %d, got %d", x, dns.TypeDNSKEY) + } +} |