@@ -3,6 +3,7 @@ package main
3
3
import (
4
4
"bytes"
5
5
"io/ioutil"
6
+ "net/http"
6
7
"os"
7
8
"testing"
8
9
@@ -89,6 +90,7 @@ func Test_WriteTemplate(t *testing.T) {
89
90
90
91
func Test_UpdateNginx (t * testing.T ) {
91
92
Convey ("UpdateNginx()" , t , func () {
93
+ httpmock .Reset ()
92
94
previousServers := []string {}
93
95
94
96
outFile , err := ioutil .TempFile ("" , "UpdateNginx" )
@@ -109,21 +111,23 @@ func Test_UpdateNginx(t *testing.T) {
109
111
"10.10.10.10:26858" ,
110
112
}
111
113
112
- httpmock .RegisterResponder ("GET" , "http://beowulf:31337/services/foo.json" ,
114
+ httpmock .RegisterResponder ("GET" , "http://beowulf:31337/api/ services/foo.json" ,
113
115
httpmock .NewStringResponder (
114
116
200 , ValidResponse ,
115
117
),
116
118
)
117
119
118
- httpmock .Activate ()
120
+ client := & http.Client {}
121
+
122
+ httpmock .ActivateNonDefault (client )
119
123
120
124
Reset (func () {
121
125
httpmock .Reset ()
122
126
os .Remove (outFile .Name ())
123
127
})
124
128
125
129
Convey ("Writes a template when the servers changed" , func () {
126
- newServers , err := innerUpdate (& config , previousServers )
130
+ newServers , err := innerUpdate (& config , previousServers , client )
127
131
128
132
stat , _ := outFile .Stat ()
129
133
So (err , ShouldBeNil )
@@ -132,7 +136,7 @@ func Test_UpdateNginx(t *testing.T) {
132
136
})
133
137
134
138
Convey ("Does not write a template when the servers are the same" , func () {
135
- newServers , err := innerUpdate (& config , servers )
139
+ newServers , err := innerUpdate (& config , servers , client )
136
140
137
141
stat , _ := outFile .Stat ()
138
142
So (err , ShouldBeNil )
@@ -143,7 +147,7 @@ func Test_UpdateNginx(t *testing.T) {
143
147
Convey ("Bubbles up errors in validation" , func () {
144
148
config .ValidateCommand = "false"
145
149
146
- _ , err := innerUpdate (& config , previousServers )
150
+ _ , err := innerUpdate (& config , previousServers , client )
147
151
So (err , ShouldNotBeNil )
148
152
So (err .Error (), ShouldContainSubstring , "Unable to validate" )
149
153
})
@@ -152,17 +156,39 @@ func Test_UpdateNginx(t *testing.T) {
152
156
config .ValidateCommand = "true"
153
157
config .UpdateCommand = "false"
154
158
155
- _ , err := innerUpdate (& config , previousServers )
159
+ _ , err := innerUpdate (& config , previousServers , client )
156
160
So (err , ShouldNotBeNil )
157
161
So (err .Error (), ShouldContainSubstring , "Unable to reload" )
158
162
})
159
163
160
164
Convey ("Does not add non-healthy servers" , func () {
161
165
config .TemplateFile = ""
162
- newServers , err := innerUpdate (& config , servers )
166
+ newServers , err := innerUpdate (& config , servers , client )
163
167
164
168
So (err , ShouldBeNil )
165
169
So (newServers , ShouldResemble , servers )
166
170
})
171
+
172
+ Convey ("Does not blow up when FetchServers has no services" , func () {
173
+ httpmock .Reset ()
174
+
175
+ httpmock .RegisterResponder ("GET" , "http://beowulf:31337/api/services/foo.json" ,
176
+ httpmock .NewStringResponder (
177
+ 200 , "null" ,
178
+ ),
179
+ )
180
+
181
+ newServers , err := innerUpdate (& config , servers , client )
182
+
183
+ So (err , ShouldBeNil )
184
+ So (newServers , ShouldBeNil )
185
+ })
186
+
187
+ Convey ("Does update when previousServers was nil and FetchServers returns servers" , func () {
188
+ newServers , err := innerUpdate (& config , nil , client )
189
+
190
+ So (err , ShouldBeNil )
191
+ So (newServers , ShouldResemble , []string {"10.10.10.10:26858" })
192
+ })
167
193
})
168
194
}
0 commit comments