refactor: Integrate PreferencesMiddleware and update handlers
Complete middleware integration with comprehensive testing: 1. Middleware Integration - Added PreferencesMiddleware to middleware chain in routes - Order: Recovery → Logger → SecurityHeaders → Preferences → Mux - Reads all preference cookies once per request - Stores in context for handlers to access 2. Handler Updates - cv_pages.go: Home handler uses middleware.GetPreferences() - cv_htmx.go: All toggle handlers use middleware preferences - Eliminated manual cookie reading in handlers - Migration logic handled entirely by middleware 3. Comprehensive Middleware Tests - Created preferences_test.go with 10+ test functions - Tests: default values, migrations, cookie setting, context access - Verified: extended→long, true→show, false→hide migrations - All tests passing Benefits: - Performance: Cookies read once per request (not multiple times) - Consistency: All handlers get same preference values - Maintainability: Migration logic centralized in middleware - Testability: Easy to mock preferences via context Testing: - All unit tests pass (handlers + middleware) - Build succeeds - No breaking changes
This commit is contained in:
@@ -41,9 +41,12 @@ func Setup(cvHandler *handlers.CVHandler, healthHandler *handlers.HealthHandler)
|
||||
mux.Handle("/static/", middleware.CacheControl(staticHandler))
|
||||
|
||||
// Apply comprehensive middleware chain
|
||||
// Order: Recovery → Logger → SecurityHeaders → Preferences → Mux
|
||||
handler := middleware.Recovery(
|
||||
middleware.Logger(
|
||||
middleware.SecurityHeaders(mux),
|
||||
middleware.SecurityHeaders(
|
||||
middleware.PreferencesMiddleware(mux),
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user