/
proxy_test.go
120 lines (97 loc) · 2.89 KB
/
proxy_test.go
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
package proxy
import (
"testing"
mocks "github.com/eko/monday/internal/tests/mocks/hostfile"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
)
func TestNewProxy(t *testing.T) {
// Given
hostfileMock := &mocks.HostfileInterface{}
// When
proxy := NewProxy(hostfileMock)
// Then
assert.IsType(t, new(Proxy), proxy)
assert.Len(t, proxy.ProxyForwards, 0)
assert.Len(t, proxy.attributedIPs, 0)
assert.Equal(t, proxy.latestPort, "9400")
assert.Equal(t, proxy.ipLastByte, 1)
}
func TestAddProxyForward(t *testing.T) {
// Given
pf := NewProxyForward("test", "hostname.svc.local", "", "8080", "8080")
hostfileMock := &mocks.HostfileInterface{}
hostfileMock.On("AddHost", "127.1.2.1", "hostname.svc.local").Return(nil)
proxy := NewProxy(hostfileMock)
// When
proxy.AddProxyForward("test", pf)
// Then
assert.Len(t, proxy.ProxyForwards, 1)
assert.Len(t, proxy.attributedIPs, 1)
assert.Equal(t, proxy.latestPort, "9401")
assert.Equal(t, proxy.ipLastByte, 2)
}
func TestAddProxyForwardWhenMultiple(t *testing.T) {
// Given
testCases := []struct {
name string
hostname string
localPort string
forwardPort string
}{
{name: "test", hostname: "hostname.svc.local", localPort: "8080", forwardPort: "8081"},
{name: "test-2", hostname: "hostname2.svc.local", localPort: "8080", forwardPort: "8081"},
{name: "test-2", hostname: "hostname3.svc.local", localPort: "8081", forwardPort: "8082"},
}
hostfileMock := &mocks.HostfileInterface{}
hostfileMock.ExpectedCalls = []*mock.Call{
&mock.Call{
Method: "AddHost",
Arguments: mock.Arguments{
"127.1.2.1", "hostname.svc.local",
},
ReturnArguments: mock.Arguments{nil},
},
&mock.Call{
Method: "AddHost",
Arguments: mock.Arguments{
"127.1.2.2", "hostname2.svc.local",
},
ReturnArguments: mock.Arguments{nil},
},
&mock.Call{
Method: "AddHost",
Arguments: mock.Arguments{
"127.1.2.2", "hostname3.svc.local",
},
ReturnArguments: mock.Arguments{nil},
},
}
proxy := NewProxy(hostfileMock)
// When
for _, testCase := range testCases {
pf := NewProxyForward(testCase.name, testCase.hostname, "", testCase.localPort, testCase.forwardPort)
proxy.AddProxyForward(testCase.name, pf)
}
// Then
assert.Len(t, proxy.ProxyForwards, 2)
assert.Len(t, proxy.attributedIPs, 2)
assert.Equal(t, proxy.latestPort, "9403")
assert.Equal(t, proxy.ipLastByte, 3)
}
func TestListen(t *testing.T) {
// Given
pf := NewProxyForward("test", "hostname.svc.local", "", "8080", "8080")
hostfileMock := &mocks.HostfileInterface{}
hostfileMock.On("AddHost", "127.1.2.1", "hostname.svc.local").Return(nil)
proxy := NewProxy(hostfileMock)
proxy.AddProxyForward("test", pf)
// When
err := proxy.Listen()
// Then
assert.Nil(t, err)
assert.Len(t, proxy.ProxyForwards, 1)
assert.Len(t, proxy.attributedIPs, 1)
assert.Equal(t, proxy.latestPort, "9401")
assert.Equal(t, proxy.ipLastByte, 2)
}