@@ -46,20 +46,6 @@ func (suite *ServerTestSuite) SetupTest() {
4646 suite .db = db
4747}
4848
49- func (suite * ServerTestSuite ) getAuthToken () string {
50- request , _ := http .NewRequest (http .MethodGet , "/api/auth/token" , nil )
51- request .SetBasicAuth ("test" , "password" )
52- response := httptest .NewRecorder ()
53-
54- suite .server .ServeHTTP (response , request )
55-
56- assert .Equal (suite .T (), response .Code , http .StatusOK )
57-
58- var clientToken clientToken
59- assert .Nil (suite .T (), json .Unmarshal (response .Body .Bytes (), & clientToken ))
60- return clientToken .Token
61- }
62-
6349func (suite * ServerTestSuite ) TestGetAuthToken () {
6450 request , _ := http .NewRequest (http .MethodGet , "/api/auth/token" , nil )
6551 request .SetBasicAuth ("test" , "password" )
@@ -132,16 +118,10 @@ func (suite *ServerTestSuite) TestGetHis() {
132118 }
133119 suite .db .Create (& dbHistory )
134120
135- request , _ := http .NewRequest (http .MethodGet , fmt .Sprintf ("/api/recs/%s/history?start=%d&end=%d" , pointId1 , nowMinus10Min .Unix (), now .Unix ()), nil )
136- request .Header .Add ("Authorization" , fmt .Sprintf ("Bearer %s" , suite .getAuthToken ()))
137- response := httptest .NewRecorder ()
138- suite .server .ServeHTTP (response , request )
121+ authToken := suite .getAuthToken ()
139122
140- assert .Equal (suite .T (), response .Code , http .StatusOK )
141- decoder := json .NewDecoder (response .Result ().Body )
142123 var history []hisItem
143- assert .Nil (suite .T (), decoder .Decode (& history ))
144-
124+ suite .get (fmt .Sprintf ("/api/recs/%s/history?start=%d&end=%d" , pointId1 , nowMinus10Min .Unix (), now .Unix ()), authToken , & history )
145125 assert .Equal (suite .T (), 2 , len (history ))
146126
147127 // TODO: timezones are not matching up :(
@@ -178,16 +158,10 @@ func (suite *ServerTestSuite) TestPostHis() {
178158 Ts : & ts ,
179159 Value : & value ,
180160 }
181- body , err := json .Marshal (hisItem )
182- assert .Nil (suite .T (), err )
183-
184- request , _ := http .NewRequest (http .MethodPost , fmt .Sprintf ("/api/recs/%s/history" , pointId ), bytes .NewReader (body ))
185- request .Header .Add ("Authorization" , fmt .Sprintf ("Bearer %s" , suite .getAuthToken ()))
186- response := httptest .NewRecorder ()
187161
188- suite .server . ServeHTTP ( response , request )
162+ authToken := suite .getAuthToken ( )
189163
190- assert . Equal ( suite . T ( ), response . Code , http . StatusOK )
164+ suite . post ( fmt . Sprintf ( "/api/recs/%s/history" , pointId ), authToken , hisItem )
191165
192166 var dbHis gormHis
193167 suite .db .First (& dbHis )
@@ -224,16 +198,10 @@ func (suite *ServerTestSuite) TestGetRecs() {
224198 }
225199 suite .db .Create (& gormRecs )
226200
227- request , _ := http .NewRequest (http .MethodGet , "/api/recs" , nil )
228- request .Header .Add ("Authorization" , fmt .Sprintf ("Bearer %s" , suite .getAuthToken ()))
229- response := httptest .NewRecorder ()
230-
231- suite .server .ServeHTTP (response , request )
201+ authToken := suite .getAuthToken ()
232202
233- assert .Equal (suite .T (), response .Code , http .StatusOK )
234- decoder := json .NewDecoder (response .Result ().Body )
235203 var recs []rec
236- assert . Nil ( suite .T (), decoder . Decode ( & recs ) )
204+ suite .get ( "/api/recs" , authToken , & recs )
237205
238206 rec1 := "rec1"
239207 kW := "kW"
@@ -269,16 +237,9 @@ func (suite *ServerTestSuite) TestPostRecs() {
269237 Tags : datatypes .JSON ([]byte (`{"tag":"value1"}` )),
270238 Unit : & kW ,
271239 }
272- body , err := json .Marshal (rec )
273- assert .Nil (suite .T (), err )
274-
275- request , _ := http .NewRequest (http .MethodPost , "/api/recs" , bytes .NewReader (body ))
276- request .Header .Add ("Authorization" , fmt .Sprintf ("Bearer %s" , suite .getAuthToken ()))
277- response := httptest .NewRecorder ()
240+ authToken := suite .getAuthToken ()
278241
279- suite .server .ServeHTTP (response , request )
280-
281- assert .Equal (suite .T (), response .Code , http .StatusOK )
242+ suite .post ("/api/recs" , authToken , rec )
282243
283244 var gormRecs []gormRec
284245 suite .db .Find (& gormRecs )
@@ -315,16 +276,10 @@ func (suite *ServerTestSuite) TestGetRecsByTag() {
315276 }
316277 suite .db .Create (& gormRecs )
317278
318- request , _ := http .NewRequest (http .MethodGet , "/api/recs?tag=tag1" , nil )
319- request .Header .Add ("Authorization" , fmt .Sprintf ("Bearer %s" , suite .getAuthToken ()))
320- response := httptest .NewRecorder ()
321-
322- suite .server .ServeHTTP (response , request )
279+ authToken := suite .getAuthToken ()
323280
324- assert .Equal (suite .T (), response .Code , http .StatusOK )
325- decoder := json .NewDecoder (response .Result ().Body )
326281 var recs []rec
327- assert . Nil ( suite .T (), decoder . Decode ( & recs ) )
282+ suite .get ( "/api/recs?tag=tag1" , authToken , & recs )
328283
329284 rec1 := "rec1"
330285 kW := "kW"
@@ -361,16 +316,10 @@ func (suite *ServerTestSuite) TestGetRec() {
361316 }
362317 suite .db .Create (& gormRecs )
363318
364- request , _ := http .NewRequest (http .MethodGet , fmt .Sprintf ("/api/recs/%s" , id2 ), nil )
365- request .Header .Add ("Authorization" , fmt .Sprintf ("Bearer %s" , suite .getAuthToken ()))
366- response := httptest .NewRecorder ()
367-
368- suite .server .ServeHTTP (response , request )
319+ authToken := suite .getAuthToken ()
369320
370- assert .Equal (suite .T (), response .Code , http .StatusOK )
371- decoder := json .NewDecoder (response .Result ().Body )
372321 var rec2 rec
373- assert . Nil ( suite . T ( ), decoder . Decode ( & rec2 ) )
322+ suite . get ( fmt . Sprintf ( "/api/recs/%s" , id2 ), authToken , & rec2 )
374323
375324 rec2Dis := "rec2"
376325 lb := "lb"
@@ -406,16 +355,10 @@ func (suite *ServerTestSuite) TestPutRec() {
406355 Tags : datatypes .JSON ([]byte (`{"tag":"value1"}` )),
407356 Unit : & lb ,
408357 }
409- body , err := json .Marshal (rec )
410- assert .Nil (suite .T (), err )
411358
412- request , _ := http .NewRequest (http .MethodPut , fmt .Sprintf ("/api/recs/%s" , id ), bytes .NewReader (body ))
413- request .Header .Add ("Authorization" , fmt .Sprintf ("Bearer %s" , suite .getAuthToken ()))
414- response := httptest .NewRecorder ()
415-
416- suite .server .ServeHTTP (response , request )
359+ authToken := suite .getAuthToken ()
417360
418- assert . Equal ( suite . T ( ), response . Code , http . StatusOK )
361+ suite . put ( fmt . Sprintf ( "/api/recs/%s" , id ), authToken , rec )
419362
420363 var updatedRec gormRec
421364 suite .db .First (& updatedRec , id )
@@ -443,13 +386,8 @@ func (suite *ServerTestSuite) TestDeleteRec() {
443386 }
444387 suite .db .Create (& gormRecs )
445388
446- request , _ := http .NewRequest (http .MethodDelete , fmt .Sprintf ("/api/recs/%s" , id ), nil )
447- request .Header .Add ("Authorization" , fmt .Sprintf ("Bearer %s" , suite .getAuthToken ()))
448- response := httptest .NewRecorder ()
449-
450- suite .server .ServeHTTP (response , request )
451-
452- assert .Equal (suite .T (), response .Code , http .StatusOK )
389+ authToken := suite .getAuthToken ()
390+ suite .delete (fmt .Sprintf ("/api/recs/%s" , id ), authToken )
453391
454392 var gormRecCount int64
455393 suite .db .Where ("id = ?" , id ).Count (& gormRecCount )
@@ -468,29 +406,77 @@ func (suite *ServerTestSuite) TestCurrent() {
468406 }
469407 suite .db .Create (& gormRecs )
470408
409+ authToken := suite .getAuthToken ()
410+
471411 value := 123.456
472412 currentInput := currentInput {
473413 Value : & value ,
474414 }
475- body , err := json .Marshal (currentInput )
476- assert .Nil (suite .T (), err )
477- setRequest , _ := http .NewRequest (http .MethodPost , fmt .Sprintf ("/api/recs/%s/current" , id ), bytes .NewReader (body ))
478- setRequest .Header .Add ("Authorization" , fmt .Sprintf ("Bearer %s" , suite .getAuthToken ()))
479- setResponse := httptest .NewRecorder ()
480- suite .server .ServeHTTP (setResponse , setRequest )
481- assert .Equal (suite .T (), setResponse .Code , http .StatusOK )
482-
483- getRequest , _ := http .NewRequest (http .MethodGet , fmt .Sprintf ("/api/recs/%s/current" , id ), nil )
484- getRequest .Header .Add ("Authorization" , fmt .Sprintf ("Bearer %s" , suite .getAuthToken ()))
485- getResponse := httptest .NewRecorder ()
486- suite .server .ServeHTTP (getResponse , getRequest )
487- assert .Equal (suite .T (), getResponse .Code , http .StatusOK )
488- decoder := json .NewDecoder (getResponse .Result ().Body )
415+ suite .post (fmt .Sprintf ("/api/recs/%s/current" , id ), authToken , currentInput )
416+
489417 var current current
490- assert . Nil ( suite . T ( ), decoder . Decode ( & current ) )
418+ suite . get ( fmt . Sprintf ( "/api/recs/%s/current" , id ), authToken , & current )
491419 assert .Equal (suite .T (), 123.456 , * current .Value )
492420}
493421
494422// These functions just take literals and return a pointer to them. For easier DB/JSON construction
495423func s (s string ) * string { return & s }
496424func f (f float64 ) * float64 { return & f }
425+
426+ func (suite * ServerTestSuite ) getAuthToken () string {
427+ request , _ := http .NewRequest (http .MethodGet , "/api/auth/token" , nil )
428+ request .SetBasicAuth ("test" , "password" )
429+ response := httptest .NewRecorder ()
430+
431+ suite .server .ServeHTTP (response , request )
432+
433+ assert .Equal (suite .T (), response .Code , http .StatusOK )
434+
435+ var clientToken clientToken
436+ assert .Nil (suite .T (), json .Unmarshal (response .Body .Bytes (), & clientToken ))
437+ return clientToken .Token
438+ }
439+
440+ func (suite * ServerTestSuite ) delete (route string , authToken string ) {
441+ request , err := http .NewRequest (http .MethodDelete , route , nil )
442+ assert .Nil (suite .T (), err )
443+ request .Header .Add ("Authorization" , fmt .Sprintf ("Bearer %s" , authToken ))
444+ response := httptest .NewRecorder ()
445+ suite .server .ServeHTTP (response , request )
446+ assert .Equal (suite .T (), response .Code , http .StatusOK )
447+ }
448+
449+ func (suite * ServerTestSuite ) get (route string , authToken string , unmarshalTo any ) {
450+ request , err := http .NewRequest (http .MethodGet , route , nil )
451+ assert .Nil (suite .T (), err )
452+ request .Header .Add ("Authorization" , fmt .Sprintf ("Bearer %s" , authToken ))
453+ response := httptest .NewRecorder ()
454+ suite .server .ServeHTTP (response , request )
455+ assert .Equal (suite .T (), response .Code , http .StatusOK )
456+ assert .Nil (suite .T (), json .Unmarshal (response .Body .Bytes (), & unmarshalTo ))
457+ }
458+
459+ func (suite * ServerTestSuite ) post (route string , authToken string , toMarshal any ) {
460+ body , err := json .Marshal (toMarshal )
461+ assert .Nil (suite .T (), err )
462+ request , err := http .NewRequest (http .MethodPost , route , bytes .NewReader (body ))
463+ assert .Nil (suite .T (), err )
464+ request .Header .Add (
465+ "Authorization" ,
466+ fmt .Sprintf ("Bearer %s" , authToken ),
467+ )
468+ response := httptest .NewRecorder ()
469+ suite .server .ServeHTTP (response , request )
470+ assert .Equal (suite .T (), response .Code , http .StatusOK )
471+ }
472+
473+ func (suite * ServerTestSuite ) put (route string , authToken string , toMarshal any ) {
474+ body , err := json .Marshal (toMarshal )
475+ assert .Nil (suite .T (), err )
476+ request , err := http .NewRequest (http .MethodPut , route , bytes .NewReader (body ))
477+ assert .Nil (suite .T (), err )
478+ request .Header .Add ("Authorization" , fmt .Sprintf ("Bearer %s" , authToken ))
479+ response := httptest .NewRecorder ()
480+ suite .server .ServeHTTP (response , request )
481+ assert .Equal (suite .T (), response .Code , http .StatusOK )
482+ }
0 commit comments