From 43e07383ff8e098dff4fef0de811437b93c22ae3 Mon Sep 17 00:00:00 2001 From: louis Date: Sun, 8 Oct 2023 21:20:58 +0200 Subject: [PATCH] Extend Test Cases --- internal/api/user.go | 2 -- internal/api/user_test.go | 59 +++++++++++++++++++++++++++++++++++ internal/storage/user_test.go | 22 +++++++++++-- 3 files changed, 78 insertions(+), 5 deletions(-) diff --git a/internal/api/user.go b/internal/api/user.go index 11cc56ac..5ebd4292 100644 --- a/internal/api/user.go +++ b/internal/api/user.go @@ -52,14 +52,12 @@ func (h *handler) PostUser(c *gin.Context) { return } - //TODO: Validation user, err := storage.NewUser(body.Email, body.Password) if err != nil { c.JSON(http.StatusBadRequest, response.ErrorResponse(response.CodeDefault, response.StorageError)) return } - // load tickers by body.Tickers tickers, err := h.storage.FindTickersByIDs(body.Tickers) if err != nil { c.JSON(http.StatusBadRequest, response.ErrorResponse(response.CodeDefault, response.StorageError)) diff --git a/internal/api/user_test.go b/internal/api/user_test.go index 00e51637..b358260b 100644 --- a/internal/api/user_test.go +++ b/internal/api/user_test.go @@ -150,6 +150,24 @@ func TestPostUserMissingBody(t *testing.T) { assert.Equal(t, http.StatusBadRequest, w.Code) } +func TestPostUserTooLongPassword(t *testing.T) { + w := httptest.NewRecorder() + c, _ := gin.CreateTestContext(w) + json := `{"email":"louis@systemli.org","password":"swusp-dud-gust-grong-yuz-swuft-plaft-glact-skast-swem-yen-kom-tut-prisp-gont"}` + c.Request = httptest.NewRequest(http.MethodPost, "/v1/admin/users", strings.NewReader(json)) + c.Request.Header.Add("Content-Type", "application/json") + c.Set("me", storage.User{ID: 1, IsSuperAdmin: true}) + s := &storage.MockStorage{} + h := handler{ + storage: s, + config: config.NewConfig(), + } + + h.PostUser(c) + + assert.Equal(t, http.StatusBadRequest, w.Code) +} + func TestPostUserStorageError(t *testing.T) { w := httptest.NewRecorder() c, _ := gin.CreateTestContext(w) @@ -170,6 +188,26 @@ func TestPostUserStorageError(t *testing.T) { assert.Equal(t, http.StatusBadRequest, w.Code) } +func TestPostUserStorageError2(t *testing.T) { + w := httptest.NewRecorder() + c, _ := gin.CreateTestContext(w) + json := `{"email":"louis@systemli.org","password":"password1234"}` + c.Request = httptest.NewRequest(http.MethodPost, "/v1/admin/users", strings.NewReader(json)) + c.Request.Header.Add("Content-Type", "application/json") + c.Set("me", storage.User{ID: 1, IsSuperAdmin: true}) + s := &storage.MockStorage{} + s.On("FindTickersByIDs", mock.Anything).Return([]storage.Ticker{}, errors.New("storage error")) + s.On("SaveUser", mock.Anything).Return(errors.New("storage error")) + h := handler{ + storage: s, + config: config.NewConfig(), + } + + h.PostUser(c) + + assert.Equal(t, http.StatusBadRequest, w.Code) +} + func TestPostUser(t *testing.T) { w := httptest.NewRecorder() c, _ := gin.CreateTestContext(w) @@ -245,6 +283,27 @@ func TestPutUserStorageError(t *testing.T) { assert.Equal(t, http.StatusBadRequest, w.Code) } +func TestPutUserStorageError2(t *testing.T) { + w := httptest.NewRecorder() + c, _ := gin.CreateTestContext(w) + c.Set("me", storage.User{ID: 1, IsSuperAdmin: true}) + c.Set("user", storage.User{}) + json := `{"email":"louis@systemli.org","password":"password1234","is_super_admin":true,"tickers":[1]}` + c.Request = httptest.NewRequest(http.MethodPost, "/v1/admin/users", strings.NewReader(json)) + c.Request.Header.Add("Content-Type", "application/json") + s := &storage.MockStorage{} + s.On("FindTickersByIDs", mock.Anything).Return([]storage.Ticker{}, errors.New("storage error")) + s.On("SaveUser", mock.Anything).Return(errors.New("storage error")) + h := handler{ + storage: s, + config: config.NewConfig(), + } + + h.PutUser(c) + + assert.Equal(t, http.StatusBadRequest, w.Code) +} + func TestPutUser(t *testing.T) { w := httptest.NewRecorder() c, _ := gin.CreateTestContext(w) diff --git a/internal/storage/user_test.go b/internal/storage/user_test.go index 732f37b8..5e4dde7f 100644 --- a/internal/storage/user_test.go +++ b/internal/storage/user_test.go @@ -6,19 +6,35 @@ import ( "github.com/stretchr/testify/assert" ) +const ( + Password = "password" + TooLongPassword = "swusp-dud-gust-grong-yuz-swuft-plaft-glact-skast-swem-yen-kom-tut-prisp-gont" +) + func TestUserAuthenticate(t *testing.T) { - user, err := NewUser("louis@systemli.org", "password") + user, err := NewUser("louis@systemli.org", Password) assert.Nil(t, err) assert.False(t, user.Authenticate("wrong")) - assert.True(t, user.Authenticate("password")) + assert.True(t, user.Authenticate(Password)) } func TestUserUpdatePassword(t *testing.T) { - user, err := NewUser("louis@systemli.org", "password") + user, err := NewUser("louis@systemli.org", Password) assert.Nil(t, err) oldEncPassword := user.EncryptedPassword user.UpdatePassword("newPassword") assert.NotEqual(t, oldEncPassword, user.EncryptedPassword) + + user.UpdatePassword(TooLongPassword) + assert.NotEqual(t, oldEncPassword, user.EncryptedPassword) +} + +func TestNewUser(t *testing.T) { + _, err := NewUser("user@systemli.org", Password) + assert.Nil(t, err) + + _, err = NewUser("user@systemli.org", TooLongPassword) + assert.NotNil(t, err) }