# Scripts Directory

## Running Tests Locally Before Pushing to CI

### WAF Integration Test

**Always run this locally before pushing WAF-related changes to avoid CI failures:**

```bash
# From project root
bash ./scripts/coraza_integration.sh
```

Or use the VS Code task: `Ctrl+Shift+P` → `Tasks: Run Task` → `Coraza: Run Integration Script`

**Requirements:**

- Docker image `charon:local` must be built first:

  ```bash
  docker build -t charon:local .
  ```

- The script will:
  1. Start a test container with WAF enabled
  2. Create a backend container (httpbin)
  3. Test WAF in block mode (expect HTTP 403)
  4. Test WAF in monitor mode (expect HTTP 200)
  5. Clean up all test containers

**Expected output:**

```
✓ httpbin backend is ready
✓ Coraza WAF blocked payload as expected (HTTP 403) in BLOCK mode
✓ Coraza WAF in MONITOR mode allowed payload through (HTTP 200) as expected
=== All Coraza integration tests passed ===
```

### Other Test Scripts

- **Security Scan**: `bash ./scripts/security-scan.sh`
- **Go Test Coverage**: `bash ./scripts/go-test-coverage.sh`
- **Frontend Test Coverage**: `bash ./scripts/frontend-test-coverage.sh`

## CI/CD Workflows

Changes to these scripts may trigger CI workflows:

- `coraza_integration.sh` → WAF Integration Tests workflow
- Files in `.github/workflows/` directory control CI behavior

**Tip**: Run tests locally to save CI minutes and catch issues faster!
