diff options
author | 2018-09-22 13:25:31 +0100 | |
---|---|---|
committer | 2018-09-22 13:25:31 +0100 | |
commit | 1697ab359d28e1af271ba8e41012c318b7846562 (patch) | |
tree | d54a316d72b1f54347a01ee17ca7c077fbe2d457 /plugin | |
parent | aea2e9f62ec1a3b222b3258c10ce52f3477e7dea (diff) | |
download | coredns-1697ab359d28e1af271ba8e41012c318b7846562.tar.gz coredns-1697ab359d28e1af271ba8e41012c318b7846562.tar.zst coredns-1697ab359d28e1af271ba8e41012c318b7846562.zip |
Add test for #2003 (#2115)
This adds a test for cleanup in c349446a
Signed-off-by: Miek Gieben <miek@miek.nl>
Diffstat (limited to 'plugin')
-rw-r--r-- | plugin/forward/setup_test.go | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/plugin/forward/setup_test.go b/plugin/forward/setup_test.go index c72cd1106..0875560bb 100644 --- a/plugin/forward/setup_test.go +++ b/plugin/forward/setup_test.go @@ -1,6 +1,8 @@ package forward import ( + "io/ioutil" + "os" "reflect" "strings" "testing" @@ -118,3 +120,55 @@ func TestSetupTLS(t *testing.T) { } } } + +func TestSetupResolvconf(t *testing.T) { + const resolv = "resolv.conf" + if err := ioutil.WriteFile(resolv, + []byte(`nameserver 10.10.255.252 +nameserver 10.10.255.253`), 0666); err != nil { + t.Fatalf("Failed to write resolv.conf file: %s", err) + } + defer os.Remove(resolv) + + tests := []struct { + input string + shouldErr bool + expectedErr string + expectedNames []string + }{ + // pass + {`forward . ` + resolv, false, "", []string{"10.10.255.252:53", "10.10.255.253:53"}}, + } + + for i, test := range tests { + c := caddy.NewTestController("dns", test.input) + f, err := parseForward(c) + + if test.shouldErr && err == nil { + t.Errorf("Test %d: expected error but found %s for input %s", i, err, test.input) + continue + } + + if err != nil { + if !test.shouldErr { + t.Errorf("Test %d: expected no error but found one for input %s, got: %v", i, test.input, err) + } + + if !strings.Contains(err.Error(), test.expectedErr) { + t.Errorf("Test %d: expected error to contain: %v, found error: %v, input: %s", i, test.expectedErr, err, test.input) + } + } + + if !test.shouldErr { + for j, n := range test.expectedNames { + addr := f.proxies[j].addr + if n != addr { + t.Errorf("Test %d, expected %q, got %q", j, n, addr) + } + } + } + for _, p := range f.proxies { + p.health.Check(p) // this should almost always err, we don't care it shoulnd't crash + } + } +} |