user_test.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. package handler
  2. import (
  3. v1 "github.com/go-nunu/nunu-layout-advanced/api/v1"
  4. "github.com/go-nunu/nunu-layout-advanced/internal/handler"
  5. "github.com/go-nunu/nunu-layout-advanced/internal/middleware"
  6. "github.com/go-nunu/nunu-layout-advanced/test/mocks/service"
  7. "net/http"
  8. "testing"
  9. "github.com/golang/mock/gomock"
  10. )
  11. func TestUserHandler_Register(t *testing.T) {
  12. ctrl := gomock.NewController(t)
  13. defer ctrl.Finish()
  14. params := v1.RegisterRequest{
  15. Password: "123456",
  16. Email: "xxx@gmail.com",
  17. }
  18. mockUserService := mock_service.NewMockUserService(ctrl)
  19. mockUserService.EXPECT().Register(gomock.Any(), &params).Return(nil)
  20. userHandler := handler.NewUserHandler(hdl, mockUserService)
  21. router.POST("/register", userHandler.Register)
  22. e := newHttpExcept(t, router)
  23. obj := e.POST("/register").
  24. WithHeader("Content-Type", "application/json").
  25. WithJSON(params).
  26. Expect().
  27. Status(http.StatusOK).
  28. JSON().
  29. Object()
  30. obj.Value("code").IsEqual(0)
  31. obj.Value("message").IsEqual("ok")
  32. }
  33. func TestUserHandler_Login(t *testing.T) {
  34. ctrl := gomock.NewController(t)
  35. defer ctrl.Finish()
  36. params := v1.LoginRequest{
  37. Email: "xxx@gmail.com",
  38. Password: "123456",
  39. }
  40. tk := "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVc2VySWQiOiJ4eHgiLCJleHAiOjE3MzgyMjA1MTQsIm5iZiI6MTczMDQ0NDUxNCwiaWF0IjoxNzMwNDQ0NTE0fQ.3D4YupmPBCkv16ESnYyWSV5Mxcdu0twzEUqx0K-UiWo"
  41. mockUserService := mock_service.NewMockUserService(ctrl)
  42. mockUserService.EXPECT().Login(gomock.Any(), &params).Return(tk, nil)
  43. userHandler := handler.NewUserHandler(hdl, mockUserService)
  44. router.POST("/login", userHandler.Login)
  45. obj := newHttpExcept(t, router).POST("/login").
  46. WithHeader("Content-Type", "application/json").
  47. WithJSON(params).
  48. Expect().
  49. Status(http.StatusOK).
  50. JSON().
  51. Object()
  52. obj.Value("code").IsEqual(0)
  53. obj.Value("message").IsEqual("ok")
  54. obj.Value("data").Object().Value("accessToken").IsEqual(tk)
  55. }
  56. func TestUserHandler_GetProfile(t *testing.T) {
  57. ctrl := gomock.NewController(t)
  58. defer ctrl.Finish()
  59. nickname := "xxxxx"
  60. mockUserService := mock_service.NewMockUserService(ctrl)
  61. mockUserService.EXPECT().GetProfile(gomock.Any(), userId).Return(&v1.GetProfileResponseData{
  62. UserId: userId,
  63. Nickname: nickname,
  64. }, nil)
  65. userHandler := handler.NewUserHandler(hdl, mockUserService)
  66. router.Use(middleware.NoStrictAuth(jwt, logger))
  67. router.GET("/user", userHandler.GetProfile)
  68. obj := newHttpExcept(t, router).GET("/user").
  69. WithHeader("Authorization", "Bearer "+genToken(t)).
  70. Expect().
  71. Status(http.StatusOK).
  72. JSON().
  73. Object()
  74. obj.Value("code").IsEqual(0)
  75. obj.Value("message").IsEqual("ok")
  76. objData := obj.Value("data").Object()
  77. objData.Value("userId").IsEqual(userId)
  78. objData.Value("nickname").IsEqual(nickname)
  79. }
  80. func TestUserHandler_UpdateProfile(t *testing.T) {
  81. ctrl := gomock.NewController(t)
  82. defer ctrl.Finish()
  83. params := v1.UpdateProfileRequest{
  84. Nickname: "alan",
  85. Email: "alan@gmail.com",
  86. }
  87. mockUserService := mock_service.NewMockUserService(ctrl)
  88. mockUserService.EXPECT().UpdateProfile(gomock.Any(), userId, &params).Return(nil)
  89. userHandler := handler.NewUserHandler(hdl, mockUserService)
  90. router.Use(middleware.StrictAuth(jwt, logger))
  91. router.PUT("/user", userHandler.UpdateProfile)
  92. obj := newHttpExcept(t, router).PUT("/user").
  93. WithHeader("Content-Type", "application/json").
  94. WithHeader("Authorization", "Bearer "+genToken(t)).
  95. WithJSON(params).
  96. Expect().
  97. Status(http.StatusOK).
  98. JSON().
  99. Object()
  100. obj.Value("code").IsEqual(0)
  101. obj.Value("message").IsEqual("ok")
  102. }