Skip to content

Commit bc31c03

Browse files
committed
add tests for api-users
1 parent 0250e33 commit bc31c03

File tree

1 file changed

+116
-0
lines changed

1 file changed

+116
-0
lines changed

api-users/controllers/user_controller_impl_test.go

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"github.com/dieg0code/shared/json/request"
1212
"github.com/dieg0code/shared/json/response"
1313
"github.com/dieg0code/shared/mocks"
14+
"github.com/dieg0code/shared/models"
1415
"github.com/gin-gonic/gin"
1516
"github.com/stretchr/testify/assert"
1617
"github.com/stretchr/testify/mock"
@@ -262,3 +263,118 @@ func TestGetUserByID(t *testing.T) {
262263
userService.AssertExpectations(t)
263264
})
264265
}
266+
267+
func TestRegisterUser(t *testing.T) {
268+
t.Run("RegisterUser_Success", func(t *testing.T) {
269+
userService := new(mocks.MockUserService)
270+
userController := NewUserControllerImpl(userService)
271+
272+
gin.SetMode(gin.TestMode)
273+
274+
router := gin.Default()
275+
276+
router.POST("/users", userController.RegisterUser)
277+
278+
userService.On("RegisterUser", mock.Anything).Return(models.User{
279+
UserID: "uuid",
280+
Username: "test",
281+
Email: "test@test.com",
282+
Role: "user",
283+
}, nil)
284+
285+
registerUserRequest := request.CreateUserRequest{
286+
Username: "test",
287+
Email: "test@test.com",
288+
Password: "password",
289+
Role: "user",
290+
}
291+
292+
reqBody, err := json.Marshal(registerUserRequest)
293+
assert.NoError(t, err, "Expected no error marshalling request body")
294+
295+
req, err := http.NewRequest(http.MethodPost, "/users", bytes.NewBuffer(reqBody))
296+
assert.NoError(t, err, "Expected no error creating request")
297+
298+
rec := httptest.NewRecorder()
299+
router.ServeHTTP(rec, req)
300+
301+
assert.Equal(t, http.StatusCreated, rec.Code, "Expected status code 201")
302+
303+
var response response.BaseResponse
304+
err = json.Unmarshal(rec.Body.Bytes(), &response)
305+
assert.NoError(t, err, "Expected no error unmarshalling response body")
306+
assert.Equal(t, "success", response.Status, "Expected response status to be success")
307+
assert.Equal(t, "User registered successfully", response.Message, "Expected response message to be 'User registered successfully'")
308+
assert.Equal(t, "User test registered successfully ID: uuid", response.Data.(string), "Expected response data to be 'User test registered successfully ID: uuid'")
309+
310+
userService.AssertExpectations(t)
311+
})
312+
313+
t.Run("RegisterUser_ErrorBindingJSON", func(t *testing.T) {
314+
userService := new(mocks.MockUserService)
315+
userController := NewUserControllerImpl(userService)
316+
317+
gin.SetMode(gin.TestMode)
318+
319+
router := gin.Default()
320+
321+
router.POST("/users", userController.RegisterUser)
322+
323+
req, err := http.NewRequest(http.MethodPost, "/users", bytes.NewBuffer([]byte("")))
324+
assert.NoError(t, err, "Expected no error creating request")
325+
326+
rec := httptest.NewRecorder()
327+
router.ServeHTTP(rec, req)
328+
329+
assert.Equal(t, http.StatusBadRequest, rec.Code, "Expected status code 400")
330+
331+
var response response.BaseResponse
332+
err = json.Unmarshal(rec.Body.Bytes(), &response)
333+
assert.NoError(t, err, "Expected no error unmarshalling response body")
334+
assert.Equal(t, "error", response.Status, "Expected response status to be error")
335+
assert.Equal(t, "Invalid request body", response.Message, "Expected response message to be 'Invalid request body'")
336+
337+
userService.AssertExpectations(t)
338+
})
339+
340+
t.Run("RegisterUser_ErrorRegisteringUser", func(t *testing.T) {
341+
userService := new(mocks.MockUserService)
342+
userController := NewUserControllerImpl(userService)
343+
344+
gin.SetMode(gin.TestMode)
345+
346+
router := gin.Default()
347+
348+
router.POST("/users", userController.RegisterUser)
349+
350+
userService.On("RegisterUser", mock.Anything).Return(models.User{}, assert.AnError)
351+
352+
registerUserRequest := request.CreateUserRequest{
353+
Username: "test",
354+
Email: "test@test.com",
355+
Password: "password",
356+
Role: "user",
357+
}
358+
359+
reqBody, err := json.Marshal(registerUserRequest)
360+
assert.NoError(t, err, "Expected no error marshalling request body")
361+
362+
req, err := http.NewRequest(http.MethodPost, "/users", bytes.NewBuffer(reqBody))
363+
assert.NoError(t, err, "Expected no error creating request")
364+
365+
rec := httptest.NewRecorder()
366+
router.ServeHTTP(rec, req)
367+
368+
assert.Equal(t, http.StatusInternalServerError, rec.Code, "Expected status code 500")
369+
370+
var response response.BaseResponse
371+
err = json.Unmarshal(rec.Body.Bytes(), &response)
372+
assert.NoError(t, err, "Expected no error unmarshalling response body")
373+
assert.Equal(t, "error", response.Status, "Expected response status to be error")
374+
assert.Equal(t, "Error registering user", response.Message, "Expected response message to be 'Error registering user'")
375+
assert.Nil(t, response.Data, "Expected response data to be nil")
376+
377+
userService.AssertExpectations(t)
378+
})
379+
380+
}

0 commit comments

Comments
 (0)