added user signup feature

This commit is contained in:
2025-09-26 23:57:36 +02:00
parent 2f0a9b5127
commit 57355fe9ac
15 changed files with 242 additions and 14 deletions

96
book_test.go Normal file
View File

@@ -0,0 +1,96 @@
package main
import (
"net/http"
"net/http/httptest"
"strings"
"testing"
"github.com/gin-gonic/gin"
"git.artlef.fr/PersonalLibraryManager/internal/config"
"github.com/stretchr/testify/assert"
)
func testSetup() *gin.Engine {
c := config.LoadConfig("config_test/test.toml")
return setup(&c)
}
func TestGetBooksHandler(t *testing.T) {
router := testSetup()
w := httptest.NewRecorder()
req, _ := http.NewRequest("GET", "/books", nil)
router.ServeHTTP(w, req)
assert.Equal(t, 200, w.Code)
}
func TestPostBookHandler_Ok(t *testing.T) {
bookJson :=
`{
"title": "Le château",
"author": "Kafka",
"rating": 9
}`
testPostBookHandler(t, bookJson, 200)
}
func TestPostBookHandler_OkOnlyTitle(t *testing.T) {
bookJson :=
`{
"title": "Le château"
}`
testPostBookHandler(t, bookJson, 200)
}
func TestPostBookHandler_noTitle(t *testing.T) {
bookJson :=
`{
"author": "Kafka",
"rating": 9
}`
testPostBookHandler(t, bookJson, 400)
}
func TestPostBookHandler_WrongRating(t *testing.T) {
bookJson :=
`{
"title": "Le château",
"author": "Kafka",
"rating": 15
}`
testPostBookHandler(t, bookJson, 400)
}
func TestPostBookHandler_TitleTooLong(t *testing.T) {
bookJson :=
`{
"title": "Noisy outlaws, unfriendly blobs, and some other things that aren't as scary, maybe, depending on how you feel about lost lands, stray cellphones, creatures from the sky, parents who disappear in Peru, a man named Lars Farf, and one other story we couldn't quite finish, so maybe you could help us out.",
"author": "Eli Horowitz",
"rating": 2
}`
testPostBookHandler(t, bookJson, 400)
}
func TestPostBookHandler_AuthorTooLong(t *testing.T) {
bookJson :=
`{
"title": "something",
"author": "Wolfeschlegelsteinhausenbergerdorffwelchevoralternwarengewissenhaftschaferswessenschafewarenwohlgepflegeundsorgfaltigkeitbeschutzenvonangreifendurchihrraubgierigfeindewelchevoralternzwolftausendjahresvorandieerscheinenvanderersteerdemenschderraumschiffgebrauchlichtalsseinursprungvonkraftgestartseinlangefahrthinzwischensternartigraumaufdersuchenachdiesternwelchegehabtbewohnbarplanetenkreisedrehensichundwohinderneurassevonverstandigmenschlichkeitkonntefortpflanzenundsicherfreuenanlebenslanglichfreudeundruhemitnichteinfurchtvorangreifenvonandererintelligentgeschopfsvonhinzwischensternartigraum",
"rating": 2
}`
testPostBookHandler(t, bookJson, 400)
}
func testPostBookHandler(t *testing.T, bookJson string, expectedCode int) {
router := testSetup()
w := httptest.NewRecorder()
req, _ := http.NewRequest("POST", "/book",
strings.NewReader(string(bookJson)))
router.ServeHTTP(w, req)
assert.Equal(t, expectedCode, w.Code)
}