mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-29 01:04:15 -04:00 
			
		
		
		
	* Move *proxy* to external move the proxy plugin into coredns/proxy and remove it as a default plugin. Link the proxy to deprecated in plugin.cfg coredns/proxy doesn't compile because of the vendoring :( Signed-off-by: Miek Gieben <miek@miek.nl> * Add github.com/coredns/proxy Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
		
			
				
	
	
		
			121 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			121 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package test
 | |
| 
 | |
| import (
 | |
| 	"io/ioutil"
 | |
| 	"os"
 | |
| 	"path/filepath"
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/miekg/dns"
 | |
| )
 | |
| 
 | |
| func setupProxyTargetCoreDNS(t *testing.T, fn func(string)) {
 | |
| 	tmpdir, err := ioutil.TempDir(os.TempDir(), "coredns")
 | |
| 	if err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 	defer os.Remove(tmpdir)
 | |
| 
 | |
| 	content := `
 | |
| example.org. IN	SOA sns.dns.icann.org. noc.dns.icann.org. 1 3600 3600 3600 3600
 | |
| 
 | |
| google.com. IN SOA ns1.google.com. dns-admin.google.com. 1 3600 3600 3600 3600
 | |
| google.com. IN A 172.217.25.110
 | |
| `
 | |
| 
 | |
| 	path := filepath.Join(tmpdir, "file")
 | |
| 	if err = ioutil.WriteFile(path, []byte(content), 0644); err != nil {
 | |
| 		t.Fatalf("Could not write to temp file: %s", err)
 | |
| 	}
 | |
| 	defer os.Remove(path)
 | |
| 
 | |
| 	corefile := `.:0 {
 | |
| 	file ` + path + `
 | |
| }
 | |
| `
 | |
| 	i, udp, _, err := CoreDNSServerAndPorts(corefile)
 | |
| 	if err != nil {
 | |
| 		t.Fatalf("Could not get proxy target CoreDNS serving instance: %s", err)
 | |
| 	}
 | |
| 	defer i.Stop()
 | |
| 
 | |
| 	fn(udp)
 | |
| }
 | |
| 
 | |
| func TestLookupAutoPathErratic(t *testing.T) {
 | |
| 	setupProxyTargetCoreDNS(t, func(proxyPath string) {
 | |
| 		corefile := `.:0 {
 | |
| 		erratic
 | |
| 		autopath @erratic
 | |
| 		forward . ` + proxyPath + `
 | |
| 		debug
 | |
| 		}
 | |
| `
 | |
| 		i, udp, _, err := CoreDNSServerAndPorts(corefile)
 | |
| 		if err != nil {
 | |
| 			t.Fatalf("Could not get CoreDNS serving instance: %s", err)
 | |
| 		}
 | |
| 		defer i.Stop()
 | |
| 
 | |
| 		tests := []struct {
 | |
| 			qname          string
 | |
| 			expectedAnswer string
 | |
| 			expectedType   uint16
 | |
| 		}{
 | |
| 			{"google.com.a.example.org.", "google.com.a.example.org.", dns.TypeCNAME},
 | |
| 			{"google.com.", "google.com.", dns.TypeA},
 | |
| 		}
 | |
| 
 | |
| 		for i, tc := range tests {
 | |
| 			m := new(dns.Msg)
 | |
| 			// erratic always returns this search path: "a.example.org.", "b.example.org.", "".
 | |
| 			m.SetQuestion(tc.qname, dns.TypeA)
 | |
| 
 | |
| 			r, err := dns.Exchange(m, udp)
 | |
| 			if err != nil {
 | |
| 				t.Fatalf("Test %d, failed to sent query: %q", i, err)
 | |
| 			}
 | |
| 			if len(r.Answer) == 0 {
 | |
| 				t.Fatalf("Test %d, answer section should have RRs", i)
 | |
| 			}
 | |
| 			if x := r.Answer[0].Header().Name; x != tc.expectedAnswer {
 | |
| 				t.Fatalf("Test %d, expected answer %s, got %s", i, tc.expectedAnswer, x)
 | |
| 			}
 | |
| 			if x := r.Answer[0].Header().Rrtype; x != tc.expectedType {
 | |
| 				t.Fatalf("Test %d, expected answer type %d, got %d", i, tc.expectedType, x)
 | |
| 			}
 | |
| 		}
 | |
| 	})
 | |
| }
 | |
| 
 | |
| func TestAutoPathErraticNotLoaded(t *testing.T) {
 | |
| 	setupProxyTargetCoreDNS(t, func(proxyPath string) {
 | |
| 		corefile := `.:0 {
 | |
| 	autopath @erratic
 | |
| 	forward . ` + proxyPath + `
 | |
| 	debug
 | |
|     }
 | |
| `
 | |
| 		i, err := CoreDNSServer(corefile)
 | |
| 		if err != nil {
 | |
| 			t.Fatalf("Could not get CoreDNS serving instance: %s", err)
 | |
| 		}
 | |
| 
 | |
| 		udp, _ := CoreDNSServerPorts(i, 0)
 | |
| 		if udp == "" {
 | |
| 			t.Fatalf("Could not get UDP listening port")
 | |
| 		}
 | |
| 		defer i.Stop()
 | |
| 
 | |
| 		m := new(dns.Msg)
 | |
| 		m.SetQuestion("google.com.a.example.org.", dns.TypeA)
 | |
| 		r, err := dns.Exchange(m, udp)
 | |
| 		if err != nil {
 | |
| 			t.Fatalf("Failed to sent query: %q", err)
 | |
| 		}
 | |
| 		if r.Rcode != dns.RcodeNameError {
 | |
| 			t.Fatalf("Expected NXDOMAIN, got %d", r.Rcode)
 | |
| 		}
 | |
| 	})
 | |
| }
 |