refactor: complete refactor and better helpers use
This commit is contained in:
@@ -17,16 +17,13 @@ func TestIntegration_Router_FullMiddlewareChain(t *testing.T) {
|
||||
router := ctx.Router
|
||||
|
||||
t.Run("SecurityHeaders_Present", func(t *testing.T) {
|
||||
request := httptest.NewRequest("GET", "/health", nil)
|
||||
recorder := httptest.NewRecorder()
|
||||
request := makeGetRequest(t, router, "/health")
|
||||
|
||||
router.ServeHTTP(recorder, request)
|
||||
assertStatus(t, request, http.StatusOK)
|
||||
|
||||
assertStatus(t, recorder, http.StatusOK)
|
||||
|
||||
assertHeader(t, recorder, "X-Content-Type-Options", "")
|
||||
assertHeader(t, recorder, "X-Frame-Options", "")
|
||||
assertHeader(t, recorder, "X-XSS-Protection", "")
|
||||
assertHeader(t, request, "X-Content-Type-Options")
|
||||
assertHeader(t, request, "X-Frame-Options")
|
||||
assertHeader(t, request, "X-XSS-Protection")
|
||||
})
|
||||
|
||||
t.Run("CORS_Headers_Present", func(t *testing.T) {
|
||||
@@ -36,16 +33,13 @@ func TestIntegration_Router_FullMiddlewareChain(t *testing.T) {
|
||||
|
||||
router.ServeHTTP(recorder, request)
|
||||
|
||||
assertHeader(t, recorder, "Access-Control-Allow-Origin", "")
|
||||
assertHeader(t, recorder, "Access-Control-Allow-Origin")
|
||||
})
|
||||
|
||||
t.Run("Logging_Middleware_Executes", func(t *testing.T) {
|
||||
request := httptest.NewRequest("GET", "/health", nil)
|
||||
recorder := httptest.NewRecorder()
|
||||
request := makeGetRequest(t, router, "/health")
|
||||
|
||||
router.ServeHTTP(recorder, request)
|
||||
|
||||
if recorder.Code == 0 {
|
||||
if request.Code == 0 {
|
||||
t.Error("Expected logging middleware to execute")
|
||||
}
|
||||
})
|
||||
@@ -67,13 +61,10 @@ func TestIntegration_Router_FullMiddlewareChain(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("DBMonitoring_Active", func(t *testing.T) {
|
||||
request := httptest.NewRequest("GET", "/health", nil)
|
||||
recorder := httptest.NewRecorder()
|
||||
|
||||
router.ServeHTTP(recorder, request)
|
||||
request := makeGetRequest(t, router, "/health")
|
||||
|
||||
var response map[string]any
|
||||
if err := json.NewDecoder(recorder.Body).Decode(&response); err == nil {
|
||||
if err := json.NewDecoder(request.Body).Decode(&response); err == nil {
|
||||
if data, ok := response["data"].(map[string]any); ok {
|
||||
if _, exists := data["database_stats"]; !exists {
|
||||
t.Error("Expected database_stats in health response")
|
||||
@@ -83,12 +74,9 @@ func TestIntegration_Router_FullMiddlewareChain(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("Metrics_Middleware_Executes", func(t *testing.T) {
|
||||
request := httptest.NewRequest("GET", "/metrics", nil)
|
||||
recorder := httptest.NewRecorder()
|
||||
request := makeGetRequest(t, router, "/metrics")
|
||||
|
||||
router.ServeHTTP(recorder, request)
|
||||
|
||||
response := assertJSONResponse(t, recorder, http.StatusOK)
|
||||
response := assertJSONResponse(t, request, http.StatusOK)
|
||||
if response != nil {
|
||||
if data, ok := response["data"].(map[string]any); ok {
|
||||
if _, exists := data["database"]; !exists {
|
||||
@@ -99,34 +87,25 @@ func TestIntegration_Router_FullMiddlewareChain(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("StaticFiles_Served", func(t *testing.T) {
|
||||
request := httptest.NewRequest("GET", "/robots.txt", nil)
|
||||
recorder := httptest.NewRecorder()
|
||||
request := makeGetRequest(t, router, "/robots.txt")
|
||||
|
||||
router.ServeHTTP(recorder, request)
|
||||
assertStatus(t, request, http.StatusOK)
|
||||
|
||||
assertStatus(t, recorder, http.StatusOK)
|
||||
|
||||
if !strings.Contains(recorder.Body.String(), "User-agent") {
|
||||
if !strings.Contains(request.Body.String(), "User-agent") {
|
||||
t.Error("Expected robots.txt content")
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("API_Routes_Accessible", func(t *testing.T) {
|
||||
request := httptest.NewRequest("GET", "/api/posts", nil)
|
||||
recorder := httptest.NewRecorder()
|
||||
request := makeGetRequest(t, router, "/api/posts")
|
||||
|
||||
router.ServeHTTP(recorder, request)
|
||||
|
||||
assertStatus(t, recorder, http.StatusOK)
|
||||
assertStatus(t, request, http.StatusOK)
|
||||
})
|
||||
|
||||
t.Run("Health_Endpoint_Accessible", func(t *testing.T) {
|
||||
request := httptest.NewRequest("GET", "/health", nil)
|
||||
recorder := httptest.NewRecorder()
|
||||
request := makeGetRequest(t, router, "/health")
|
||||
|
||||
router.ServeHTTP(recorder, request)
|
||||
|
||||
response := assertJSONResponse(t, recorder, http.StatusOK)
|
||||
response := assertJSONResponse(t, request, http.StatusOK)
|
||||
if response != nil {
|
||||
if success, ok := response["success"].(bool); !ok || !success {
|
||||
t.Error("Expected success=true in health response")
|
||||
@@ -135,14 +114,11 @@ func TestIntegration_Router_FullMiddlewareChain(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("Middleware_Order_Correct", func(t *testing.T) {
|
||||
request := httptest.NewRequest("GET", "/api/posts", nil)
|
||||
recorder := httptest.NewRecorder()
|
||||
request := makeGetRequest(t, router, "/api/posts")
|
||||
|
||||
router.ServeHTTP(recorder, request)
|
||||
assertHeader(t, request, "X-Content-Type-Options")
|
||||
|
||||
assertHeader(t, recorder, "X-Content-Type-Options", "")
|
||||
|
||||
if recorder.Code == 0 {
|
||||
if request.Code == 0 {
|
||||
t.Error("Response should have status code")
|
||||
}
|
||||
})
|
||||
@@ -160,15 +136,11 @@ func TestIntegration_Router_FullMiddlewareChain(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("Cache_Middleware_Active", func(t *testing.T) {
|
||||
firstRequest := httptest.NewRequest("GET", "/api/posts", nil)
|
||||
firstRecorder := httptest.NewRecorder()
|
||||
router.ServeHTTP(firstRecorder, firstRequest)
|
||||
firstRequest := makeGetRequest(t, router, "/api/posts")
|
||||
|
||||
secondRequest := httptest.NewRequest("GET", "/api/posts", nil)
|
||||
secondRecorder := httptest.NewRecorder()
|
||||
router.ServeHTTP(secondRecorder, secondRequest)
|
||||
secondRequest := makeGetRequest(t, router, "/api/posts")
|
||||
|
||||
if firstRecorder.Code != secondRecorder.Code {
|
||||
if firstRequest.Code != secondRequest.Code {
|
||||
t.Error("Cached responses should have same status")
|
||||
}
|
||||
})
|
||||
@@ -177,14 +149,9 @@ func TestIntegration_Router_FullMiddlewareChain(t *testing.T) {
|
||||
ctx.Suite.EmailSender.Reset()
|
||||
user := createUserWithCleanup(t, ctx, "auth_middleware_user", "auth_middleware@example.com")
|
||||
|
||||
request := httptest.NewRequest("GET", "/api/auth/me", nil)
|
||||
request.Header.Set("Authorization", "Bearer "+user.Token)
|
||||
request = testutils.WithUserContext(request, middleware.UserIDKey, user.User.ID)
|
||||
recorder := httptest.NewRecorder()
|
||||
request := makeAuthenticatedGetRequest(t, router, "/api/auth/me", user, nil)
|
||||
|
||||
router.ServeHTTP(recorder, request)
|
||||
|
||||
assertStatus(t, recorder, http.StatusOK)
|
||||
assertStatus(t, request, http.StatusOK)
|
||||
})
|
||||
|
||||
t.Run("RateLimit_Middleware_Integration", func(t *testing.T) {
|
||||
@@ -192,20 +159,13 @@ func TestIntegration_Router_FullMiddlewareChain(t *testing.T) {
|
||||
rateLimitRouter := rateLimitCtx.Router
|
||||
|
||||
for range 3 {
|
||||
request := httptest.NewRequest("POST", "/api/auth/login", bytes.NewBufferString(`{"username":"test","password":"test"}`))
|
||||
request.Header.Set("Content-Type", "application/json")
|
||||
recorder := httptest.NewRecorder()
|
||||
|
||||
rateLimitRouter.ServeHTTP(recorder, request)
|
||||
request := makePostRequestWithJSON(t, rateLimitRouter, "/api/auth/login", map[string]any{"username": "test", "password": "test"})
|
||||
_ = request
|
||||
}
|
||||
|
||||
request := httptest.NewRequest("POST", "/api/auth/login", bytes.NewBufferString(`{"username":"test","password":"test"}`))
|
||||
request.Header.Set("Content-Type", "application/json")
|
||||
recorder := httptest.NewRecorder()
|
||||
request := makePostRequestWithJSON(t, rateLimitRouter, "/api/auth/login", map[string]any{"username": "test", "password": "test"})
|
||||
|
||||
rateLimitRouter.ServeHTTP(recorder, request)
|
||||
|
||||
if recorder.Code == http.StatusTooManyRequests {
|
||||
if request.Code == http.StatusTooManyRequests {
|
||||
t.Log("Rate limiting is working")
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user