@@ -10,11 +10,12 @@ import (
1010 "io/ioutil"
1111 "log"
1212 "net/http"
13+ "net/http/httptest"
1314 "os"
1415 "runtime"
1516 "testing"
1617
17- "github.com/stretchr/testify/assert "
18+ "github.com/stretchr/testify/require "
1819)
1920
2021func respondWithJSON (w http.ResponseWriter , v interface {}, status int ) {
@@ -33,7 +34,7 @@ func respondWithData(w http.ResponseWriter, b []byte, status int) {
3334
3435func updateHandler (w http.ResponseWriter , r * http.Request ) {
3536 version := "2020.08.05"
36- host := "http://localhost:8090"
37+ host := fmt . Sprintf ( "http://%s" , r . Host )
3738 url := host + "/download"
3839
3940 query := r .URL .Query ()
@@ -69,7 +70,8 @@ func gzipUpdateHandler(w http.ResponseWriter, r *http.Request) {
6970 fmt .Fprint (h , version )
7071 checksum := fmt .Sprintf ("%x" , h .Sum (nil ))
7172
72- v := VersionResponse {URL : "http://localhost:8090/gzip-download.tgz" , Version : version , Checksum : checksum }
73+ url := fmt .Sprintf ("http://%s/gzip-download.tgz" , r .Host )
74+ v := VersionResponse {URL : url , Version : version , Checksum : checksum }
7375 respondWithJSON (w , v , http .StatusOK )
7476}
7577
@@ -110,154 +112,162 @@ func failureHandler(w http.ResponseWriter, r *http.Request) {
110112 respondWithJSON (w , VersionResponse {Error : "unsupported os and architecture" }, http .StatusBadRequest )
111113}
112114
113- func startServer () {
115+ func createServer () * httptest. Server {
114116 mux := http .NewServeMux ()
115117 mux .HandleFunc ("/updater" , updateHandler )
116118 mux .HandleFunc ("/download" , downloadHandler )
117119 mux .HandleFunc ("/beta" , betaHandler )
118120 mux .HandleFunc ("/fail" , failureHandler )
119121 mux .HandleFunc ("/compressed" , gzipUpdateHandler )
120122 mux .HandleFunc ("/gzip-download.tgz" , compressedDownloadHandler )
121- http . ListenAndServe ( ":8090" , mux )
123+ return httptest . NewServer ( mux )
122124}
123125
124126func createTestFile (t * testing.T , path string ) {
125127 f , err := os .Create ("tmpfile" )
126- assert .NoError (t , err )
128+ require .NoError (t , err )
127129 fmt .Fprint (f , "2020.08.04" )
128130 f .Close ()
129131}
130132
131133func TestUpdateService (t * testing.T ) {
132- go startServer ()
134+ ts := createServer ()
135+ defer ts .Close ()
133136
134137 testFilePath := "tmpfile"
135138 createTestFile (t , testFilePath )
136139 defer os .Remove (testFilePath )
140+ log .Println ("server url: " , ts .URL )
137141
138- s := NewWorkersService ("2020.8.2" , "http://localhost:8090/ updater" , testFilePath , Options {})
142+ s := NewWorkersService ("2020.8.2" , fmt . Sprintf ( "%s/ updater", ts . URL ) , testFilePath , Options {})
139143 v , err := s .Check ()
140- assert .NoError (t , err )
141- assert .Equal (t , v .String (), "2020.08.05" )
144+ require .NoError (t , err )
145+ require .Equal (t , v .String (), "2020.08.05" )
142146
143- assert .NoError (t , v .Apply ())
147+ require .NoError (t , v .Apply ())
144148 dat , err := ioutil .ReadFile (testFilePath )
145- assert .NoError (t , err )
149+ require .NoError (t , err )
146150
147- assert .Equal (t , string (dat ), "2020.08.05" )
151+ require .Equal (t , string (dat ), "2020.08.05" )
148152}
149153
150154func TestBetaUpdateService (t * testing.T ) {
151- go startServer ()
155+ ts := createServer ()
156+ defer ts .Close ()
152157
153158 testFilePath := "tmpfile"
154159 createTestFile (t , testFilePath )
155160 defer os .Remove (testFilePath )
156161
157- s := NewWorkersService ("2020.8.2" , "http://localhost:8090/ updater" , testFilePath , Options {IsBeta : true })
162+ s := NewWorkersService ("2020.8.2" , fmt . Sprintf ( "%s/ updater", ts . URL ) , testFilePath , Options {IsBeta : true })
158163 v , err := s .Check ()
159- assert .NoError (t , err )
160- assert .Equal (t , v .String (), "2020.08.06" )
164+ require .NoError (t , err )
165+ require .Equal (t , v .String (), "2020.08.06" )
161166
162- assert .NoError (t , v .Apply ())
167+ require .NoError (t , v .Apply ())
163168 dat , err := ioutil .ReadFile (testFilePath )
164- assert .NoError (t , err )
169+ require .NoError (t , err )
165170
166- assert .Equal (t , string (dat ), "2020.08.06" )
171+ require .Equal (t , string (dat ), "2020.08.06" )
167172}
168173
169174func TestFailUpdateService (t * testing.T ) {
170- go startServer ()
175+ ts := createServer ()
176+ defer ts .Close ()
171177
172178 testFilePath := "tmpfile"
173179 createTestFile (t , testFilePath )
174180 defer os .Remove (testFilePath )
175181
176- s := NewWorkersService ("2020.8.2" , "http://localhost:8090/ fail" , testFilePath , Options {})
182+ s := NewWorkersService ("2020.8.2" , fmt . Sprintf ( "%s/ fail", ts . URL ) , testFilePath , Options {})
177183 v , err := s .Check ()
178- assert .Error (t , err )
179- assert .Nil (t , v )
184+ require .Error (t , err )
185+ require .Nil (t , v )
180186}
181187
182188func TestNoUpdateService (t * testing.T ) {
183- go startServer ()
189+ ts := createServer ()
190+ defer ts .Close ()
184191
185192 testFilePath := "tmpfile"
186193 createTestFile (t , testFilePath )
187194 defer os .Remove (testFilePath )
188195
189- s := NewWorkersService ("2020.8.5" , "http://localhost:8090/ updater" , testFilePath , Options {})
196+ s := NewWorkersService ("2020.8.5" , fmt . Sprintf ( "%s/ updater", ts . URL ) , testFilePath , Options {})
190197 v , err := s .Check ()
191- assert .NoError (t , err )
192- assert .Nil (t , v )
198+ require .NoError (t , err )
199+ require .Nil (t , v )
193200}
194201
195202func TestForcedUpdateService (t * testing.T ) {
196- go startServer ()
203+ ts := createServer ()
204+ defer ts .Close ()
197205
198206 testFilePath := "tmpfile"
199207 createTestFile (t , testFilePath )
200208 defer os .Remove (testFilePath )
201209
202- s := NewWorkersService ("2020.8.5" , "http://localhost:8090/ updater" , testFilePath , Options {IsForced : true })
210+ s := NewWorkersService ("2020.8.5" , fmt . Sprintf ( "%s/ updater", ts . URL ) , testFilePath , Options {IsForced : true })
203211 v , err := s .Check ()
204- assert .NoError (t , err )
205- assert .Equal (t , v .String (), "2020.08.05" )
212+ require .NoError (t , err )
213+ require .Equal (t , v .String (), "2020.08.05" )
206214
207- assert .NoError (t , v .Apply ())
215+ require .NoError (t , v .Apply ())
208216 dat , err := ioutil .ReadFile (testFilePath )
209- assert .NoError (t , err )
217+ require .NoError (t , err )
210218
211- assert .Equal (t , string (dat ), "2020.08.05" )
219+ require .Equal (t , string (dat ), "2020.08.05" )
212220}
213221
214222func TestUpdateSpecificVersionService (t * testing.T ) {
215- go startServer ()
223+ ts := createServer ()
224+ defer ts .Close ()
216225
217226 testFilePath := "tmpfile"
218227 createTestFile (t , testFilePath )
219228 defer os .Remove (testFilePath )
220229 reqVersion := "2020.9.1"
221230
222- s := NewWorkersService ("2020.8.2" , "http://localhost:8090/ updater" , testFilePath , Options {RequestedVersion : reqVersion })
231+ s := NewWorkersService ("2020.8.2" , fmt . Sprintf ( "%s/ updater", ts . URL ) , testFilePath , Options {RequestedVersion : reqVersion })
223232 v , err := s .Check ()
224- assert .NoError (t , err )
225- assert .Equal (t , reqVersion , v .String ())
233+ require .NoError (t , err )
234+ require .Equal (t , reqVersion , v .String ())
226235
227- assert .NoError (t , v .Apply ())
236+ require .NoError (t , v .Apply ())
228237 dat , err := ioutil .ReadFile (testFilePath )
229- assert .NoError (t , err )
238+ require .NoError (t , err )
230239
231- assert .Equal (t , reqVersion , string (dat ))
240+ require .Equal (t , reqVersion , string (dat ))
232241}
233242
234243func TestCompressedUpdateService (t * testing.T ) {
235- go startServer ()
244+ ts := createServer ()
245+ defer ts .Close ()
236246
237247 testFilePath := "tmpfile"
238248 createTestFile (t , testFilePath )
239249 defer os .Remove (testFilePath )
240250
241- s := NewWorkersService ("2020.8.2" , "http://localhost:8090/ compressed" , testFilePath , Options {})
251+ s := NewWorkersService ("2020.8.2" , fmt . Sprintf ( "%s/ compressed", ts . URL ) , testFilePath , Options {})
242252 v , err := s .Check ()
243- assert .NoError (t , err )
244- assert .Equal (t , "2020.09.02" , v .String ())
253+ require .NoError (t , err )
254+ require .Equal (t , "2020.09.02" , v .String ())
245255
246- assert .NoError (t , v .Apply ())
256+ require .NoError (t , v .Apply ())
247257 dat , err := ioutil .ReadFile (testFilePath )
248- assert .NoError (t , err )
258+ require .NoError (t , err )
249259
250- assert .Equal (t , "2020.09.02" , string (dat ))
260+ require .Equal (t , "2020.09.02" , string (dat ))
251261}
252262
253263func TestVersionParsing (t * testing.T ) {
254- assert .False (t , IsNewerVersion ("2020.8.2" , "2020.8.2" ))
255- assert .True (t , IsNewerVersion ("2020.8.2" , "2020.8.3" ))
256- assert .True (t , IsNewerVersion ("2020.8.2" , "2021.1.2" ))
257- assert .True (t , IsNewerVersion ("2020.8.2" , "2020.9.1" ))
258- assert .True (t , IsNewerVersion ("2020.8.2" , "2020.12.45" ))
259- assert .False (t , IsNewerVersion ("2020.8.2" , "2020.6.3" ))
260- assert .False (t , IsNewerVersion ("DEV" , "2020.8.5" ))
261- assert .False (t , IsNewerVersion ("2020.8.2" , "asdlkfjasdf" ))
262- assert .True (t , IsNewerVersion ("3.0.1" , "4.2.1" ))
264+ require .False (t , IsNewerVersion ("2020.8.2" , "2020.8.2" ))
265+ require .True (t , IsNewerVersion ("2020.8.2" , "2020.8.3" ))
266+ require .True (t , IsNewerVersion ("2020.8.2" , "2021.1.2" ))
267+ require .True (t , IsNewerVersion ("2020.8.2" , "2020.9.1" ))
268+ require .True (t , IsNewerVersion ("2020.8.2" , "2020.12.45" ))
269+ require .False (t , IsNewerVersion ("2020.8.2" , "2020.6.3" ))
270+ require .False (t , IsNewerVersion ("DEV" , "2020.8.5" ))
271+ require .False (t , IsNewerVersion ("2020.8.2" , "asdlkfjasdf" ))
272+ require .True (t , IsNewerVersion ("3.0.1" , "4.2.1" ))
263273}
0 commit comments