Selaa lähdekoodia

feat: Optimization of handler unit testing

行者 2 vuotta sitten
vanhempi
sitoutus
a400c1d25e
1 muutettua tiedostoa jossa 30 lisäystä ja 18 poistoa
  1. 30 18
      test/server/handler/user_test.go

+ 30 - 18
test/server/handler/user_test.go

@@ -7,7 +7,6 @@ import (
 	"github.com/go-nunu/nunu-layout-advanced/internal/handler"
 	"github.com/go-nunu/nunu-layout-advanced/mocks/service"
 
-	"github.com/go-nunu/nunu-layout-advanced/internal/server"
 	"net/http"
 	"net/http/httptest"
 	"os"
@@ -28,16 +27,32 @@ var (
 
 	token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVc2VySWQiOiJ5aHM2SGVzZmdGIiwiZXhwIjoxNjkzOTE0ODgwLCJuYmYiOjE2ODYxMzg4ODAsImlhdCI6MTY4NjEzODg4MH0.NnFrZFgc_333a9PXqaoongmIDksNvQoHzgM_IhJM4MQ"
 )
+var logger *log.Logger
 var hdl *handler.Handler
+var jwt *middleware.JWT
+var router *gin.Engine
 
 func TestMain(m *testing.M) {
 	fmt.Println("begin")
-	os.Setenv("APP_CONF", "../../../config/local.yml")
+	err := os.Setenv("APP_CONF", "../../../config/local.yml")
+	if err != nil {
+		fmt.Println("Setenv error", err)
+	}
 	conf := config.NewConfig()
 
-	logger := log.NewLog(conf)
+	logger = log.NewLog(conf)
 	hdl = handler.NewHandler(logger)
 
+	jwt = middleware.NewJwt(conf)
+	gin.SetMode(gin.TestMode)
+	router = gin.Default()
+	router.Use(
+		middleware.CORSMiddleware(),
+		middleware.ResponseLogMiddleware(logger),
+		middleware.RequestLogMiddleware(logger),
+		//middleware.SignMiddleware(log),
+	)
+
 	code := m.Run()
 	fmt.Println("test end")
 
@@ -57,7 +72,9 @@ func TestUserHandler_Register(t *testing.T) {
 	mockUserService := mock_service.NewMockUserService(ctrl)
 	mockUserService.EXPECT().Register(gomock.Any(), &params).Return(nil)
 
-	router := setupRouter(mockUserService)
+	userHandler := handler.NewUserHandler(hdl, mockUserService)
+	router.POST("/register", userHandler.Register)
+
 	paramsJson, _ := json.Marshal(params)
 
 	resp := performRequest(router, "POST", "/register", bytes.NewBuffer(paramsJson))
@@ -78,7 +95,8 @@ func TestUserHandler_Login(t *testing.T) {
 	mockUserService := mock_service.NewMockUserService(ctrl)
 	mockUserService.EXPECT().Login(gomock.Any(), &params).Return(token, nil)
 
-	router := setupRouter(mockUserService)
+	userHandler := handler.NewUserHandler(hdl, mockUserService)
+	router.POST("/login", userHandler.Login)
 	paramsJson, _ := json.Marshal(params)
 
 	resp := performRequest(router, "POST", "/login", bytes.NewBuffer(paramsJson))
@@ -101,13 +119,15 @@ func TestUserHandler_GetProfile(t *testing.T) {
 		Email:    "xxxxx@gmail.com",
 	}, nil)
 
-	router := setupRouter(mockUserService)
+	userHandler := handler.NewUserHandler(hdl, mockUserService)
+	router.Use(middleware.NoStrictAuth(jwt, logger))
+	router.GET("/user", userHandler.GetProfile)
 	req, _ := http.NewRequest("GET", "/user", nil)
 	req.Header.Set("Authorization", "Bearer "+token)
+
 	resp := httptest.NewRecorder()
 
 	router.ServeHTTP(resp, req)
-
 	assert.Equal(t, resp.Code, http.StatusOK)
 	// Add assertions for the response body if needed
 }
@@ -125,7 +145,9 @@ func TestUserHandler_UpdateProfile(t *testing.T) {
 	mockUserService := mock_service.NewMockUserService(ctrl)
 	mockUserService.EXPECT().UpdateProfile(gomock.Any(), userId, &params).Return(nil)
 
-	router := setupRouter(mockUserService)
+	userHandler := handler.NewUserHandler(hdl, mockUserService)
+	router.Use(middleware.StrictAuth(jwt, logger))
+	router.PUT("/user", userHandler.UpdateProfile)
 	paramsJson, _ := json.Marshal(params)
 
 	req, _ := http.NewRequest("PUT", "/user", bytes.NewBuffer(paramsJson))
@@ -139,16 +161,6 @@ func TestUserHandler_UpdateProfile(t *testing.T) {
 	// Add assertions for the response body if needed
 }
 
-func setupRouter(mockUserService *mock_service.MockUserService) *gin.Engine {
-	conf := config.NewConfig()
-	logger := log.NewLog(conf)
-	jwt := middleware.NewJwt(conf)
-	userHandler := handler.NewUserHandler(hdl, mockUserService)
-	gin.SetMode(gin.TestMode)
-	router := server.NewServerHTTP(logger, jwt, userHandler)
-	return router
-}
-
 func performRequest(r http.Handler, method, path string, body *bytes.Buffer) *httptest.ResponseRecorder {
 	req, _ := http.NewRequest(method, path, body)
 	resp := httptest.NewRecorder()