test: add integration test for CSRF cookie-only bypass
This commit is contained in:
@@ -174,4 +174,28 @@ func TestIntegration_CSRF_Protection(t *testing.T) {
|
|||||||
t.Error("Expected post creation with valid CSRF token to succeed")
|
t.Error("Expected post creation with valid CSRF token to succeed")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
t.Run("CSRF_Blocks_Request_With_Only_Cookie", func(t *testing.T) {
|
||||||
|
csrfCookie := getCSRFToken(t, "/register")
|
||||||
|
|
||||||
|
requestBody := url.Values{}
|
||||||
|
requestBody.Set("username", "cookie_only_user")
|
||||||
|
requestBody.Set("email", "cookie_only@example.com")
|
||||||
|
requestBody.Set("password", "SecurePass123!")
|
||||||
|
|
||||||
|
request := httptest.NewRequest("POST", "/register", strings.NewReader(requestBody.Encode()))
|
||||||
|
request.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
||||||
|
request.AddCookie(csrfCookie)
|
||||||
|
|
||||||
|
recorder := httptest.NewRecorder()
|
||||||
|
|
||||||
|
router.ServeHTTP(recorder, request)
|
||||||
|
|
||||||
|
if recorder.Code != http.StatusForbidden {
|
||||||
|
t.Errorf("Expected status 403 for request with only cookie (no form/header token), got %d. Body: %s", recorder.Code, recorder.Body.String())
|
||||||
|
}
|
||||||
|
if !strings.Contains(recorder.Body.String(), "Invalid CSRF token") {
|
||||||
|
t.Error("Expected CSRF error message")
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user