package server import ( "errors" "net/http" "net/http/httptest" "testing" "github.com/stretchr/testify/assert" ) func Test_Respond_NoContent(t *testing.T) { recorder := httptest.NewRecorder() dummystruct := struct { Name string }{ Name: "dummy", } Respond(recorder, http.StatusNoContent, dummystruct) assert.Equal(t, http.StatusNoContent, recorder.Code) assert.Empty(t, recorder.Body.String()) } func Test_Respond_JSON(t *testing.T) { recorder := httptest.NewRecorder() dummystruct := struct { Name string `json:"name"` }{ Name: "dummy", } Respond(recorder, http.StatusCreated, dummystruct) assert.Equal(t, http.StatusCreated, recorder.Code) assert.JSONEq(t, recorder.Body.String(), `{"name":"dummy"}`) assert.Equal(t, "application/json", recorder.Header().Get("Content-Type")) } func Test_RespondError(t *testing.T) { recorder := httptest.NewRecorder() var customError = errors.New("custom error") RespondError(recorder, http.StatusBadRequest, customError) assert.Equal(t, http.StatusBadRequest, recorder.Code) assert.JSONEq(t, recorder.Body.String(), `{"details":["custom error"], "message":"Bad Request", "error":true}`) } func Test_RespondInternalServerError(t *testing.T) { recorder := httptest.NewRecorder() RespondServerError(recorder) assert.Equal(t, http.StatusInternalServerError, recorder.Code) assert.JSONEq(t, recorder.Body.String(), `{"details":["internal server error"], "message":"Internal Server Error", "error":true}`) } func Test_RespondUnauthorized(t *testing.T) { recorder := httptest.NewRecorder() RespondUnauthorized(recorder) assert.Equal(t, http.StatusUnauthorized, recorder.Code) assert.JSONEq(t, recorder.Body.String(), `{"details":["unauthorized"], "message":"Unauthorized", "error":true}`) } func Test_RespondForbidden(t *testing.T) { recorder := httptest.NewRecorder() RespondForbidden(recorder) assert.Equal(t, http.StatusForbidden, recorder.Code) assert.JSONEq(t, recorder.Body.String(), `{"details":["forbidden"], "message":"Forbidden", "error":true}`) }