mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-29 17:24:20 -04:00 
			
		
		
		
	Parse fix (#974)
* mw/kubernetes: add apex test This adds small test case for apex queries: SOA and HINFO. Fix (obvious) parse bug in parse.go. * Test Ns request also here
This commit is contained in:
		
							
								
								
									
										68
									
								
								middleware/kubernetes/kubernetes_apex_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								middleware/kubernetes/kubernetes_apex_test.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,68 @@ | |||||||
|  | package kubernetes | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"testing" | ||||||
|  |  | ||||||
|  | 	"github.com/coredns/coredns/middleware/pkg/dnsrecorder" | ||||||
|  | 	"github.com/coredns/coredns/middleware/test" | ||||||
|  |  | ||||||
|  | 	"github.com/miekg/dns" | ||||||
|  | 	"golang.org/x/net/context" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | var kubeApexCases = [](test.Case){ | ||||||
|  | 	{ | ||||||
|  | 		Qname: "cluster.local.", Qtype: dns.TypeSOA, | ||||||
|  | 		Rcode: dns.RcodeSuccess, | ||||||
|  | 		Answer: []dns.RR{ | ||||||
|  | 			test.SOA("cluster.local.	303	IN	SOA	ns.dns.cluster.local. hostmaster.cluster.local. 1499347823 7200 1800 86400 60"), | ||||||
|  | 		}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		Qname: "cluster.local.", Qtype: dns.TypeHINFO, | ||||||
|  | 		Rcode: dns.RcodeSuccess, | ||||||
|  | 		Ns: []dns.RR{ | ||||||
|  | 			test.SOA("cluster.local.	303	IN	SOA	ns.dns.cluster.local. hostmaster.cluster.local. 1499347823 7200 1800 86400 60"), | ||||||
|  | 		}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		Qname: "cluster.local.", Qtype: dns.TypeNS, | ||||||
|  | 		Rcode: dns.RcodeSuccess, | ||||||
|  | 		Answer: []dns.RR{ | ||||||
|  | 			test.NS("cluster.local. 303     IN      NS     ns.dns.cluster.local."), | ||||||
|  | 		}, | ||||||
|  | 		Extra: []dns.RR{ | ||||||
|  | 			test.A("ns.dns.cluster.local.   303       IN      A       127.0.0.1"), | ||||||
|  | 		}, | ||||||
|  | 	}, | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func TestServeDNSApex(t *testing.T) { | ||||||
|  |  | ||||||
|  | 	k := New([]string{"cluster.local."}) | ||||||
|  | 	k.APIConn = &APIConnServeTest{} | ||||||
|  | 	k.Next = test.NextHandler(dns.RcodeSuccess, nil) | ||||||
|  | 	ctx := context.TODO() | ||||||
|  |  | ||||||
|  | 	for i, tc := range kubeApexCases { | ||||||
|  | 		r := tc.Msg() | ||||||
|  |  | ||||||
|  | 		w := dnsrecorder.New(&test.ResponseWriter{}) | ||||||
|  |  | ||||||
|  | 		_, err := k.ServeDNS(ctx, w, r) | ||||||
|  | 		if err != tc.Error { | ||||||
|  | 			t.Errorf("Test %d, expected no error, got %v\n", i, err) | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
|  | 		if tc.Error != nil { | ||||||
|  | 			continue | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		resp := w.Msg | ||||||
|  | 		if resp == nil { | ||||||
|  | 			t.Fatalf("Test %d, got nil message and no error ford", i) | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		test.SortAndCheck(t, resp, tc) | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @@ -50,6 +50,9 @@ func parseRequest(state request.Request) (r recordRequest, err error) { | |||||||
| 	// *_protocol._port | 	// *_protocol._port | ||||||
|  |  | ||||||
| 	last := len(segs) - 1 | 	last := len(segs) - 1 | ||||||
|  | 	if last < 0 { | ||||||
|  | 		return r, nil | ||||||
|  | 	} | ||||||
| 	r.podOrSvc = segs[last] | 	r.podOrSvc = segs[last] | ||||||
| 	if r.podOrSvc != Pod && r.podOrSvc != Svc { | 	if r.podOrSvc != Pod && r.podOrSvc != Svc { | ||||||
| 		return r, errInvalidRequest | 		return r, errInvalidRequest | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user