package cerberus_test import ( "fmt" "net/http" "net/http/httptest" "testing" "time" "github.com/Wikid82/charon/backend/internal/cerberus" "github.com/Wikid82/charon/backend/internal/config" "github.com/Wikid82/charon/backend/internal/models" "github.com/gin-gonic/gin" "github.com/stretchr/testify/require" "gorm.io/driver/sqlite" "gorm.io/gorm" ) func setupDB(t *testing.T) *gorm.DB { dsn := fmt.Sprintf("file:cerberus_middleware_test_%d?mode=memory&cache=shared", time.Now().UnixNano()) db, err := gorm.Open(sqlite.Open(dsn), &gorm.Config{}) require.NoError(t, err) require.NoError(t, db.AutoMigrate(&models.Setting{}, &models.AccessList{}, &models.AccessListRule{})) return db } func TestMiddleware_WAFBlocksPayload(t *testing.T) { db := setupDB(t) cfg := config.SecurityConfig{WAFMode: "block"} c := cerberus.New(cfg, db) // Setup gin context w := httptest.NewRecorder() ctx, _ := gin.CreateTestContext(w) // Create a request containing "