Skip to content

Commit dfe9bb4

Browse files
refactor: Simplify tests
1 parent 8578368 commit dfe9bb4

File tree

1 file changed

+79
-93
lines changed

1 file changed

+79
-93
lines changed

server_test.go

Lines changed: 79 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -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-
6349
func (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
495423
func s(s string) *string { return &s }
496424
func 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

Comments
 (0)