Browse Source

Refactor edns subnet test to make it reusable

Ask Bjørn Hansen 12 years ago
parent
commit
4f15f55386
2 changed files with 22 additions and 15 deletions
  1. 4 4
      dns/test.example.com.json
  2. 18 11
      serve_test.go

+ 4 - 4
dns/test.example.com.json

@@ -10,15 +10,15 @@
             ]
     },
     "europe": { "mx": [ { "mx": "mx-eu.example.net" }]},
-    "foo": { 
+    "foo": {
       "a": [ [ "192.168.1.2", 10 ], [ "192.168.1.3", 10 ], [ "192.168.1.4", 10 ] ],
       "aaaa": [ ["fd06:c1d3:e902::2", 10], ["fd06:c1d3:e902:202:a5ff:fecd:13a6:a", 10], ["fd06:c1d3:e902::4", 10] ]
     },
-    "weight": { 
+    "weight": {
       "a": [ [ "192.168.1.2", 100 ], [ "192.168.1.3", 50 ], [ "192.168.1.4", 25 ] ],
       "max_hosts": "1"
     },
-    "bar": { 
+    "bar": {
       "a": [ [ "192.168.1.2" ] ],
       "ttl": "601"
     },
@@ -49,7 +49,7 @@
       "ttl": 86400
     },
     "cname-internal-referal": {
-      "cname": "bar"      
+      "cname": "bar"
     }
   }
 }

+ 18 - 11
serve_test.go

@@ -59,10 +59,18 @@ func (s *ConfigSuite) TestServing(c *C) {
 }
 
 func (s *ConfigSuite) TestServingEDNS(c *C) {
+	// MX test
+	r := exchangeSubnet(c, "test.example.com.", dns.TypeMX, "194.239.134.1")
+	c.Check(r.Answer, HasLen, 1)
+	if len(r.Answer) > 0 {
+		c.Check(r.Answer[0].(*dns.MX).Mx, Equals, "mx-eu.example.net.")
+	}
+}
+
+func exchangeSubnet(c *C, name string, dnstype uint16, ip string) *dns.Msg {
 	msg := new(dns.Msg)
-	cli := new(dns.Client)
 
-	msg.SetQuestion("example.com.", dns.TypeMX)
+	msg.SetQuestion(name, dnstype)
 
 	o := new(dns.OPT)
 	o.Hdr.Name = "."
@@ -70,27 +78,26 @@ func (s *ConfigSuite) TestServingEDNS(c *C) {
 	e := new(dns.EDNS0_SUBNET)
 	e.Code = dns.EDNS0SUBNET
 	e.SourceScope = 0
-	e.Address = net.ParseIP("194.239.134.1")
+	e.Address = net.ParseIP(ip)
 	e.Family = 1 // IP4
 	e.SourceNetmask = net.IPv4len * 8
 	o.Option = append(o.Option, e)
 	msg.Extra = append(msg.Extra, o)
 
-	r, _, err := cli.Exchange(msg, "127.0.0.1"+PORT)
-	if err != nil {
-		c.Log("err", err)
-		c.Fail()
-	}
-
-	c.Check(r.Answer[0].(*dns.MX).Mx, Equals, "mx-eu.example.net.")
+	c.Log("msg", msg)
 
+	return dorequest(c, msg)
 }
 
 func exchange(c *C, name string, dnstype uint16) *dns.Msg {
 	msg := new(dns.Msg)
-	cli := new(dns.Client)
 
 	msg.SetQuestion(name, dnstype)
+	return dorequest(c, msg)
+}
+
+func dorequest(c *C, msg *dns.Msg) *dns.Msg {
+	cli := new(dns.Client)
 	r, _, err := cli.Exchange(msg, "127.0.0.1"+PORT)
 	if err != nil {
 		c.Log("err", err)