summaryrefslogtreecommitdiff
path: root/caddyconfig/httpcaddyfile/directives_test.go
blob: 03768ac98d5070a761b8419c434c5d193d9c706b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package httpcaddyfile

import (
	"reflect"
	"sort"
	"testing"
)

func TestHostsFromKeys(t *testing.T) {
	for i, tc := range []struct {
		keys             []Address
		expectNormalMode []string
		expectLoggerMode []string
	}{
		{
			[]Address{
				Address{Original: "foo", Host: "foo"},
			},
			[]string{"foo"},
			[]string{"foo"},
		},
		{
			[]Address{
				Address{Original: "foo", Host: "foo"},
				Address{Original: "bar", Host: "bar"},
			},
			[]string{"bar", "foo"},
			[]string{"bar", "foo"},
		},
		{
			[]Address{
				Address{Original: ":2015", Port: "2015"},
			},
			[]string{}, []string{},
		},
		{
			[]Address{
				Address{Original: ":443", Port: "443"},
			},
			[]string{}, []string{},
		},
		{
			[]Address{
				Address{Original: "foo", Host: "foo"},
				Address{Original: ":2015", Port: "2015"},
			},
			[]string{}, []string{"foo"},
		},
		{
			[]Address{
				Address{Original: "example.com:2015", Host: "example.com", Port: "2015"},
			},
			[]string{"example.com"},
			[]string{"example.com:2015"},
		},
		{
			[]Address{
				Address{Original: "example.com:80", Host: "example.com", Port: "80"},
			},
			[]string{"example.com"},
			[]string{"example.com"},
		},
		{
			[]Address{
				Address{Original: "https://:2015/foo", Scheme: "https", Port: "2015", Path: "/foo"},
			},
			[]string{},
			[]string{},
		},
		{
			[]Address{
				Address{Original: "https://example.com:2015/foo", Scheme: "https", Host: "example.com", Port: "2015", Path: "/foo"},
			},
			[]string{"example.com"},
			[]string{"example.com:2015"},
		},
	} {
		sb := serverBlock{keys: tc.keys}

		// test in normal mode
		actual := sb.hostsFromKeys(false)
		sort.Strings(actual)
		if !reflect.DeepEqual(tc.expectNormalMode, actual) {
			t.Errorf("Test %d (loggerMode=false): Expected: %v Actual: %v", i, tc.expectNormalMode, actual)
		}

		// test in logger mode
		actual = sb.hostsFromKeys(true)
		sort.Strings(actual)
		if !reflect.DeepEqual(tc.expectLoggerMode, actual) {
			t.Errorf("Test %d (loggerMode=true): Expected: %v Actual: %v", i, tc.expectLoggerMode, actual)
		}
	}
}