# Manual Test Plan: CrowdSec Console Enrollment **Issue**: #586 **PR**: #609 **Date**: 2025-01-29 ## Overview This test plan covers manual verification of CrowdSec console enrollment functionality to ensure the engine appears online in the CrowdSec console after enrollment. ## Prerequisites - Docker container running with CrowdSec enabled - Valid CrowdSec console account - Fresh enrollment token from console.crowdsec.net ## Test Cases ### TC1: Fresh Enrollment | Step | Action | Expected Result | |------|--------|-----------------| | 1 | Navigate to Security → CrowdSec | CrowdSec settings page loads | | 2 | Enable CrowdSec if not enabled | Toggle switches to enabled | | 3 | Enter valid enrollment token | Token field accepts input | | 4 | Click Enroll | Loading indicator appears | | 5 | Wait for completion | Success message shown | | 6 | Check CrowdSec console | Engine appears online within 5 minutes | ### TC2: Heartbeat Verification | Step | Action | Expected Result | |------|--------|-----------------| | 1 | Complete TC1 enrollment | Engine enrolled | | 2 | Wait 5 minutes | Heartbeat poller runs | | 3 | Check logs for `[HEARTBEAT_POLLER]` | Heartbeat success logged | | 4 | Check console.crowdsec.net | Last seen updates to recent time | ### TC3: Diagnostic Endpoints | Step | Action | Expected Result | |------|--------|-----------------| | 1 | Call GET `/api/v1/cerberus/crowdsec/diagnostics/connectivity` | Returns connectivity status | | 2 | Verify `lapi_reachable` is true | LAPI is running | | 3 | Verify `capi_reachable` is true | Can reach CrowdSec cloud | | 4 | Call GET `/api/v1/cerberus/crowdsec/diagnostics/config` | Returns config validation | ### TC4: Diagnostic Script | Step | Action | Expected Result | |------|--------|-----------------| | 1 | Run `./scripts/diagnose-crowdsec.sh` | All 10 checks execute | | 2 | Verify LAPI status check passes | Shows "running" | | 3 | Verify console status check | Shows enrollment status | | 4 | Run with `--json` flag | Valid JSON output | ### TC5: Recovery from Offline State | Step | Action | Expected Result | |------|--------|-----------------| | 1 | Stop the container | Container stops | | 2 | Wait 1 hour | Console shows engine offline | | 3 | Restart container | Container starts | | 4 | Wait 5-10 minutes | Heartbeat poller reconnects | | 5 | Check console | Engine shows online again | ### TC6: Token Expiration Handling | Step | Action | Expected Result | |------|--------|-----------------| | 1 | Use an expired enrollment token | | | 2 | Attempt enrollment | Error message indicates token expired | | 3 | Check logs | Error is logged with `[CROWDSEC_ENROLLMENT]` | | 4 | Token is NOT visible in logs | Secret redacted | ### TC7: Already Enrolled Error | Step | Action | Expected Result | |------|--------|-----------------| | 1 | Complete successful enrollment | | | 2 | Attempt enrollment again with same token | | | 3 | Error message indicates already enrolled | | | 4 | Existing enrollment preserved | | ## Known Issues - **Edge case**: If LAPI takes >30s to start after container restart, first heartbeat may fail (retries automatically) - **Console lag**: CrowdSec console may take 2-5 minutes to reflect online status ## Bug Tracking Use this section to track bugs found during manual testing: | Bug ID | Description | Severity | Status | |--------|-------------|----------|--------| | | | | | ## Sign-off - [ ] All test cases executed - [ ] Bugs documented - [ ] Ready for release