aboutsummaryrefslogtreecommitdiff
path: root/plugin/hosts/setup_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/hosts/setup_test.go')
-rw-r--r--plugin/hosts/setup_test.go86
1 files changed, 86 insertions, 0 deletions
diff --git a/plugin/hosts/setup_test.go b/plugin/hosts/setup_test.go
new file mode 100644
index 000000000..a4c95b1c6
--- /dev/null
+++ b/plugin/hosts/setup_test.go
@@ -0,0 +1,86 @@
+package hosts
+
+import (
+ "testing"
+
+ "github.com/mholt/caddy"
+)
+
+func TestHostsParse(t *testing.T) {
+ tests := []struct {
+ inputFileRules string
+ shouldErr bool
+ expectedPath string
+ expectedOrigins []string
+ expectedFallthrough bool
+ }{
+ {
+ `hosts
+`,
+ false, "/etc/hosts", nil, false,
+ },
+ {
+ `hosts /tmp`,
+ false, "/tmp", nil, false,
+ },
+ {
+ `hosts /etc/hosts miek.nl.`,
+ false, "/etc/hosts", []string{"miek.nl."}, false,
+ },
+ {
+ `hosts /etc/hosts miek.nl. pun.gent.`,
+ false, "/etc/hosts", []string{"miek.nl.", "pun.gent."}, false,
+ },
+ {
+ `hosts {
+ fallthrough
+ }`,
+ false, "/etc/hosts", nil, true,
+ },
+ {
+ `hosts /tmp {
+ fallthrough
+ }`,
+ false, "/tmp", nil, true,
+ },
+ {
+ `hosts /etc/hosts miek.nl. {
+ fallthrough
+ }`,
+ false, "/etc/hosts", []string{"miek.nl."}, true,
+ },
+ {
+ `hosts /etc/hosts miek.nl 10.0.0.9/8 {
+ fallthrough
+ }`,
+ false, "/etc/hosts", []string{"miek.nl.", "10.in-addr.arpa."}, true,
+ },
+ }
+
+ for i, test := range tests {
+ c := caddy.NewTestController("dns", test.inputFileRules)
+ h, err := hostsParse(c)
+
+ if err == nil && test.shouldErr {
+ t.Fatalf("Test %d expected errors, but got no error", i)
+ } else if err != nil && !test.shouldErr {
+ t.Fatalf("Test %d expected no errors, but got '%v'", i, err)
+ } else if !test.shouldErr {
+ if h.path != test.expectedPath {
+ t.Fatalf("Test %d expected %v, got %v", i, test.expectedPath, h.path)
+ }
+ } else {
+ if h.Fallthrough != test.expectedFallthrough {
+ t.Fatalf("Test %d expected fallthrough of %v, got %v", i, test.expectedFallthrough, h.Fallthrough)
+ }
+ if len(h.Origins) != len(test.expectedOrigins) {
+ t.Fatalf("Test %d expected %v, got %v", i, test.expectedOrigins, h.Origins)
+ }
+ for j, name := range test.expectedOrigins {
+ if h.Origins[j] != name {
+ t.Fatalf("Test %d expected %v for %d th zone, got %v", i, name, j, h.Origins[j])
+ }
+ }
+ }
+ }
+}