- Add gotestsum for real-time test progress visibility - Parallelize 174 tests across 14 files for faster execution - Add -short mode support skipping 21 heavy integration tests - Create testutil/db.go helper for future transaction rollbacks - Fix data race in notification_service_test.go - Fix 4 CrowdSec LAPI test failures with permissive validator Performance improvements: - Tests now run in parallel (174 tests with t.Parallel()) - Quick feedback loop via -short mode - Zero race conditions detected - Coverage maintained at 87.7% Closes test optimization initiative
38 lines
1.1 KiB
Go
38 lines
1.1 KiB
Go
//go:build integration
|
|
// +build integration
|
|
|
|
package integration
|
|
|
|
import (
|
|
"context"
|
|
"os/exec"
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
// TestCorazaIntegration runs the scripts/coraza_integration.sh and ensures it completes successfully.
|
|
// This test requires Docker and docker compose access locally; it is gated behind build tag `integration`.
|
|
func TestCorazaIntegration(t *testing.T) {
|
|
if testing.Short() {
|
|
t.Skip("Skipping integration test in short mode")
|
|
}
|
|
t.Parallel()
|
|
|
|
// Ensure the script exists
|
|
cmd := exec.CommandContext(context.Background(), "bash", "./scripts/coraza_integration.sh")
|
|
// set a timeout in case something hangs
|
|
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Minute)
|
|
defer cancel()
|
|
cmd = exec.CommandContext(ctx, "bash", "./scripts/coraza_integration.sh")
|
|
|
|
out, err := cmd.CombinedOutput()
|
|
t.Logf("coraza_integration script output:\n%s", string(out))
|
|
if err != nil {
|
|
t.Fatalf("coraza integration failed: %v", err)
|
|
}
|
|
if !strings.Contains(string(out), "Coraza WAF blocked payload as expected") {
|
|
t.Fatalf("unexpected script output, expected blocking assertion not found")
|
|
}
|
|
}
|