package main import ( "encoding/json" "fmt" "net/http" "net/http/httptest" "testing" "git.artlef.fr/PersonalLibraryManager/internal/testutils" "github.com/gin-gonic/gin" "github.com/stretchr/testify/assert" ) type bookUserGet struct { Title string `json:"title" binding:"required,max=300"` Author string `json:"author" binding:"max=100"` Rating int `json:"rating" binding:"min=0,max=10"` } func TestGetBooksHandler_Demo(t *testing.T) { router := testutils.TestSetup() token := testutils.ConnectDemoUser(router) books := testGetbooksHandler(t, router, token, 200) assert.Equal(t, 26, len(books)) } func TestGetBooksHandler_Demo2(t *testing.T) { router := testutils.TestSetup() token := testutils.ConnectDemo2User(router) books := testGetbooksHandler(t, router, token, 200) assert.Equal(t, 2, len(books)) } func testGetbooksHandler(t *testing.T, router *gin.Engine, userToken string, expectedCode int) []bookUserGet { req, _ := http.NewRequest("GET", "/mybooks", nil) req.Header.Add("Authorization", fmt.Sprintf("Bearer %s", userToken)) w := httptest.NewRecorder() router.ServeHTTP(w, req) var parsedResponse []bookUserGet err := json.Unmarshal(w.Body.Bytes(), &parsedResponse) if err != nil { t.Error(err) } assert.Equal(t, expectedCode, w.Code) return parsedResponse }