Skip to content

Commit

Permalink
fix tests for easyjson
Browse files Browse the repository at this point in the history
  • Loading branch information
damedelion committed Dec 17, 2024
1 parent 102bb23 commit dddc02a
Show file tree
Hide file tree
Showing 5 changed files with 162 additions and 33 deletions.
1 change: 1 addition & 0 deletions internal/models/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"golang.org/x/crypto/bcrypt"
)

//easyjson:json
type User struct {
UserID uuid.UUID
Role string
Expand Down
122 changes: 122 additions & 0 deletions internal/models/user_easyjson.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion microservices/user/delivery/http/handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,8 +109,8 @@ func (handlers *userHandlers) Register(response http.ResponseWriter, request *ht
utils.JSONError(response, http.StatusInternalServerError, "failed to return token")
return
}
response.Write(rawBytes)
response.WriteHeader(http.StatusOK)
response.Write(rawBytes)
}

// Login godoc
Expand Down
50 changes: 31 additions & 19 deletions microservices/user/delivery/http/handlers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,20 +70,22 @@ func TestUserHandlers_Register(t *testing.T) {
userHandlers := NewUserHandlers(&cfg.Service.Auth, usecaseMock, logger)

t.Run("successful registration", func(t *testing.T) {
user := models.User{
regDTO := &dto.RegisterDTO{
Role: "regular",
Username: "test_user",
Email: "[email protected]",
Password: "password",
Role: "regular",
}

user := dto.NewUserFromRegisterDTO(regDTO)

userTokenDTO := &dto.UserTokenDTO{
Token: "test_token",
}

usecaseMock.EXPECT().Register(gomock.Any(), &user).Return(userTokenDTO, nil)
usecaseMock.EXPECT().Register(gomock.Any(), user).Return(userTokenDTO, nil)

body, _ := json.Marshal(user)
body, _ := json.Marshal(regDTO)
request := httptest.NewRequest(http.MethodPost, "/register", bytes.NewBuffer(body))
response := httptest.NewRecorder()

Expand Down Expand Up @@ -126,16 +128,18 @@ func TestUserHandlers_Register(t *testing.T) {
})

t.Run("usecase registration error", func(t *testing.T) {
user := models.User{
regDTO := &dto.RegisterDTO{
Username: "test_user",
Email: "[email protected]",
Password: "password",
Role: "regular",
}

usecaseMock.EXPECT().Register(gomock.Any(), &user).Return(nil, errors.New("registration error"))
user := dto.NewUserFromRegisterDTO(regDTO)

body, _ := json.Marshal(user)
usecaseMock.EXPECT().Register(gomock.Any(), user).Return(nil, errors.New("registration error"))

body, _ := json.Marshal(regDTO)
request := httptest.NewRequest(http.MethodPost, "/register", bytes.NewBuffer(body))
response := httptest.NewRecorder()

Expand Down Expand Up @@ -169,18 +173,20 @@ func TestUserHandlers_Login(t *testing.T) {
userHandlers := NewUserHandlers(&cfg.Service.Auth, usecaseMock, logger)

t.Run("successful login", func(t *testing.T) {
user := models.User{
loginDTO := &dto.LoginDTO{
Username: "test_user",
Password: "password",
}

user := dto.NewUserFromLoginDTO(loginDTO)

userTokenDTO := &dto.UserTokenDTO{
Token: "test_token",
}

usecaseMock.EXPECT().Login(gomock.Any(), &user).Return(userTokenDTO, nil)
usecaseMock.EXPECT().Login(gomock.Any(), user).Return(userTokenDTO, nil)

body, _ := json.Marshal(user)
body, _ := json.Marshal(loginDTO)
request := httptest.NewRequest(http.MethodPost, "/login", bytes.NewBuffer(body))
response := httptest.NewRecorder()

Expand Down Expand Up @@ -227,14 +233,16 @@ func TestUserHandlers_Login(t *testing.T) {
})

t.Run("usecase login error", func(t *testing.T) {
user := models.User{
loginDTO := &dto.LoginDTO{
Username: "test_user",
Password: "password",
}

usecaseMock.EXPECT().Login(gomock.Any(), &user).Return(nil, errors.New("login error"))
user := dto.NewUserFromLoginDTO(loginDTO)

body, _ := json.Marshal(user)
usecaseMock.EXPECT().Login(gomock.Any(), user).Return(nil, errors.New("login error"))

body, _ := json.Marshal(loginDTO)
request := httptest.NewRequest(http.MethodPost, "/login", bytes.NewBuffer(body))
response := httptest.NewRecorder()

Expand Down Expand Up @@ -313,20 +321,22 @@ func TestUserHandlers_Update(t *testing.T) {
userID := uuid.New()

t.Run("successful update", func(t *testing.T) {
user := models.User{
updateDTO := &dto.UpdateDTO{
UserID: userID,
Email: "[email protected]",
Username: "newusername",
}

user := dto.NewUserFromUpdateDTO(updateDTO)

userDTO := &dto.UserDTO{
ID: user.UserID,
Username: user.Username,
}

usecaseMock.EXPECT().Update(gomock.Any(), gomock.Eq(&user)).Return(userDTO, nil)
usecaseMock.EXPECT().Update(gomock.Any(), gomock.Eq(user)).Return(userDTO, nil)

body, _ := json.Marshal(user)
body, _ := json.Marshal(updateDTO)
request := httptest.NewRequest(http.MethodPut, "/update", bytes.NewBuffer(body))
ctx := context.WithValue(request.Context(), utils.UserIDKey{}, userID)
request = request.WithContext(ctx)
Expand Down Expand Up @@ -355,15 +365,17 @@ func TestUserHandlers_Update(t *testing.T) {
})

t.Run("usecase update error", func(t *testing.T) {
user := models.User{
updateDTO := &dto.UpdateDTO{
UserID: userID,
Username: "updated_user",
Email: "[email protected]",
}

usecaseMock.EXPECT().Update(gomock.Any(), gomock.Eq(&user)).Return(nil, errors.New("update error"))
user := dto.NewUserFromUpdateDTO(updateDTO)

body, _ := json.Marshal(user)
usecaseMock.EXPECT().Update(gomock.Any(), gomock.Eq(user)).Return(nil, errors.New("update error"))

body, _ := json.Marshal(updateDTO)
request := httptest.NewRequest(http.MethodPut, "/update", bytes.NewBuffer(body))
ctx := context.WithValue(request.Context(), utils.UserIDKey{}, userID)
request = request.WithContext(ctx)
Expand Down
20 changes: 7 additions & 13 deletions microservices/user/mock/usecase_mock.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit dddc02a

Please sign in to comment.