From 1697ab359d28e1af271ba8e41012c318b7846562 Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Sat, 22 Sep 2018 13:25:31 +0100 Subject: [PATCH] Add test for #2003 (#2115) This adds a test for cleanup in c349446a Signed-off-by: Miek Gieben --- plugin/forward/setup_test.go | 54 ++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/plugin/forward/setup_test.go b/plugin/forward/setup_test.go index c72cd110674..0875560bb9e 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 + } + } +}