diff --git a/book_test.go b/book_test.go index 6bc9510..e0e94a7 100644 --- a/book_test.go +++ b/book_test.go @@ -31,6 +31,19 @@ func connectDemoUser(router *gin.Engine) string { "username": "demo", "password":"demopw" }` + return connectUser(router, loginJson) +} + +func connectDemo2User(router *gin.Engine) string { + loginJson := + `{ + "username": "demo2", + "password":"demopw" + }` + return connectUser(router, loginJson) +} + +func connectUser(router *gin.Engine, loginJson string) string { w := httptest.NewRecorder() req, _ := http.NewRequest("POST", "/auth/login", strings.NewReader(loginJson)) router.ServeHTTP(w, req) @@ -48,13 +61,27 @@ type bookUserGet struct { Rating int `json:"rating" binding:"min=0,max=10"` } -func TestGetBooksHandler(t *testing.T) { +func TestGetBooksHandler_Demo(t *testing.T) { router := testSetup() - w := httptest.NewRecorder() token := connectDemoUser(router) + books := testGetbooksHandler(t, router, token, 200) + assert.Equal(t, 26, len(books)) +} + +func TestGetBooksHandler_Demo2(t *testing.T) { + router := testSetup() + + token := 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", token)) + req.Header.Add("Authorization", fmt.Sprintf("Bearer %s", userToken)) + + w := httptest.NewRecorder() router.ServeHTTP(w, req) var parsedResponse []bookUserGet @@ -62,8 +89,8 @@ func TestGetBooksHandler(t *testing.T) { if err != nil { log.Fatal(err) } - assert.Equal(t, 200, w.Code) - assert.Equal(t, 28, len(parsedResponse)) + assert.Equal(t, expectedCode, w.Code) + return parsedResponse } func TestPostBookHandler_Ok(t *testing.T) { diff --git a/demodata.sql b/demodata.sql index 4a277d7..c688fc6 100644 --- a/demodata.sql +++ b/demodata.sql @@ -1,4 +1,5 @@ INSERT INTO users(created_at, name, password) VALUES ('NOW', 'demo','$2a$10$7mfCBxBwIzXDU6r9az26o.zPX/r6IlNZVfU9zxSoLVtc0kRPimzba'); +INSERT INTO users(created_at, name, password) VALUES ('NOW', 'demo2','$2a$10$7mfCBxBwIzXDU6r9az26o.zPX/r6IlNZVfU9zxSoLVtc0kRPimzba'); INSERT INTO books(created_at, title, author, added_by_id) VALUES ('NOW', 'O dingos, o chateaux!','Jean-Patrick Manchette', (SELECT id FROM users WHERE name = 'demo')); INSERT INTO user_books(created_at, user_id, book_id, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM books WHERE title = 'O dingos, o chateaux!') ,7); INSERT INTO books(created_at, title, author, added_by_id) VALUES ('NOW', 'Le petit bleu de la côte Ouest','Jean-Patrick Manchette', (SELECT id FROM users WHERE name = 'demo')); @@ -34,13 +35,13 @@ INSERT INTO user_books(created_at, user_id, book_id, rating) VALUES ('NOW',(SELE INSERT INTO books(created_at, title, author, added_by_id) VALUES ('NOW', 'Le coup de pistolet','Alexandre Pouchkine', (SELECT id FROM users WHERE name = 'demo')); INSERT INTO user_books(created_at, user_id, book_id, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM books WHERE title = 'Le coup de pistolet'),8); INSERT INTO books(created_at, title, author, added_by_id) VALUES ('NOW', 'De sang-froid','Truman Capote', (SELECT id FROM users WHERE name = 'demo')); -INSERT INTO user_books(created_at, user_id, book_id, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM books WHERE title = 'De sang-froid'),6); +INSERT INTO user_books(created_at, user_id, book_id, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo2'),(SELECT id FROM books WHERE title = 'De sang-froid'),6); INSERT INTO books(created_at, title, author, added_by_id) VALUES ('NOW', 'La position du tireur couché','Jean-Patrick Manchette', (SELECT id FROM users WHERE name = 'demo')); INSERT INTO user_books(created_at, user_id, book_id, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM books WHERE title = 'La position du tireur couché'),6); INSERT INTO books(created_at, title, author, added_by_id) VALUES ('NOW', 'Vers le Phare','Virginia Woolf', (SELECT id FROM users WHERE name = 'demo')); INSERT INTO user_books(created_at, user_id, book_id, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM books WHERE title = 'Vers le Phare'),6); INSERT INTO books(created_at, title, author, added_by_id) VALUES ('NOW', 'L''insoutenable légèreté de l''être', 'Milan Kundera', (SELECT id FROM users WHERE name = 'demo')); -INSERT INTO user_books(created_at, user_id, book_id, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM books WHERE title = 'L''insoutenable légèreté de l''être') ,8); +INSERT INTO user_books(created_at, user_id, book_id, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo2'),(SELECT id FROM books WHERE title = 'L''insoutenable légèreté de l''être') ,8); INSERT INTO books(created_at, title, author, added_by_id) VALUES ('NOW', 'Le complot contre l''Amérique','Philip Roth', (SELECT id FROM users WHERE name = 'demo')); INSERT INTO user_books(created_at, user_id, book_id, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM books WHERE title = 'Le complot contre l''Amérique'),6); INSERT INTO books(created_at, title, author, added_by_id) VALUES ('NOW', 'Nord','Louis-Ferdinand Céline', (SELECT id FROM users WHERE name = 'demo')); diff --git a/internal/api/routes.go b/internal/api/routes.go index ab4cef8..664653d 100644 --- a/internal/api/routes.go +++ b/internal/api/routes.go @@ -15,7 +15,12 @@ import ( func GetMyBooksHanderl(c *gin.Context, db *gorm.DB) { var userbooks []model.UserBook - db.Preload("Book").Find(&userbooks) + user, err := getAuthenticatedUser(c, db) + if err != nil { + manageDefaultError(c, err) + return + } + db.Preload("Book").Where("user_id = ?", user.ID).Find(&userbooks) var booksDto []bookUserGet for _, userbook := range userbooks { booksDto = append(booksDto, fromUserBookDb(&userbook))