fixed filtering on connected user
added tests and updated demo data
This commit is contained in:
37
book_test.go
37
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) {
|
||||
|
||||
@@ -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'));
|
||||
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user