Files
junk2jive-server/internal/response/response_test.go
rogueking 84e150cb11
Some checks failed
Build and Push Docker Image / Build and push image (push) Failing after 43s
Run Go Tests / build (push) Failing after 0s
golangci-lint / lint (push) Failing after 2m0s
added workflows and fixed router
2025-05-06 14:49:14 -07:00

66 lines
1.6 KiB
Go

package response
import (
"encoding/json"
"errors"
"net/http"
"net/http/httptest"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestSetAndGetError(t *testing.T) {
req, err := http.NewRequest("GET", "/test", nil)
require.NoError(t, err)
assert.Nil(t, GetError(req))
testErr := errors.New("test error")
SetError(req, testErr)
errFromReq := GetError(req)
require.NotNil(t, errFromReq)
assert.Equal(t, testErr.Error(), errFromReq.Error())
}
func TestRespondWithJSON(t *testing.T) {
rr := httptest.NewRecorder()
payload := map[string]string{"message": "hello"}
code := http.StatusOK
RespondWithJSON(rr, code, payload)
assert.Equal(t, code, rr.Code)
assert.Equal(t, "application/json", rr.Header().Get("Content-Type"))
var data map[string]string
err := json.Unmarshal(rr.Body.Bytes(), &data)
require.NoError(t, err)
assert.Equal(t, payload, data)
}
func TestRespondWithError(t *testing.T) {
rr := httptest.NewRecorder()
req, err := http.NewRequest("GET", "/test", nil)
require.NoError(t, err)
code := http.StatusBadRequest
message := "error occurred"
testErr := errors.New("test error")
RespondWithError(rr, req, code, message, testErr)
errFromReq := GetError(req)
require.NotNil(t, errFromReq)
assert.Equal(t, testErr.Error(), errFromReq.Error())
assert.Equal(t, code, rr.Code)
assert.Equal(t, "application/json", rr.Header().Get("Content-Type"))
var data map[string]string
err = json.Unmarshal(rr.Body.Bytes(), &data)
require.NoError(t, err)
expected := map[string]string{"error": message}
assert.Equal(t, expected, data)
}