- 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
184 lines
7.7 KiB
Markdown
184 lines
7.7 KiB
Markdown
|
|
# Charon Feature & Remediation Tracker
|
|
|
|
**Last Updated:** January 3, 2026
|
|
|
|
This document serves as the central index for all active plans, implementation specs, and outstanding work items.
|
|
|
|
---
|
|
|
|
## 0. Test Coverage Remediation (ACTIVE)
|
|
|
|
**Status:** 🔴 IN PROGRESS
|
|
**Priority:** CRITICAL - Blocking PR merge
|
|
**Target:** Patch coverage from 84.85% → 85%+
|
|
|
|
### Coverage Gap Analysis
|
|
|
|
| File | Patch % | Missing | Priority | Agent |
|
|
|------|---------|---------|----------|-------|
|
|
| `backend/internal/utils/url_testing.go` | 74.83% | 38 lines | 🔴 P0 | Backend_Dev |
|
|
| `backend/internal/services/dns_provider_service.go` | 78.26% | 35 lines | 🔴 P0 | Backend_Dev |
|
|
| `backend/internal/network/internal_service_client.go` | 0.00% | 14 lines | 🔴 P0 | Backend_Dev |
|
|
| `backend/internal/security/url_validator.go` | 77.55% | 11 lines | 🟡 P1 | Backend_Dev |
|
|
| `backend/internal/crypto/encryption.go` | 74.35% | 10 lines | 🟡 P1 | Backend_Dev |
|
|
| `backend/internal/services/notification_service.go` | 66.66% | 8 lines | 🟡 P1 | Backend_Dev |
|
|
| `backend/internal/api/handlers/crowdsec_handler.go` | 82.85% | 6 lines | 🟢 P2 | Backend_Dev |
|
|
| `backend/internal/api/handlers/dns_provider_handler.go` | 98.30% | 5 lines | 🟢 P2 | Backend_Dev |
|
|
| `backend/internal/services/uptime_service.go` | 85.71% | 3 lines | 🟢 P2 | Backend_Dev |
|
|
| `frontend/src/components/DNSProviderSelector.tsx` | 86.36% | 3 lines | 🟢 P2 | Frontend_Dev |
|
|
|
|
**Full Remediation Plan:** [test-coverage-remediation-plan.md](test-coverage-remediation-plan.md)
|
|
|
|
### Quick Reference: Test Files to Create/Modify
|
|
|
|
| New Test File | Target |
|
|
|--------------|--------|
|
|
| `backend/internal/network/internal_service_client_test.go` | +14 lines |
|
|
| `backend/internal/utils/url_testing_coverage_test.go` | +15-20 lines |
|
|
| `frontend/src/components/__tests__/DNSProviderSelector.test.tsx` | +3 lines |
|
|
|
|
| Existing Test File to Extend | Target |
|
|
|------------------------------|--------|
|
|
| `backend/internal/services/dns_provider_service_test.go` | +15-18 lines |
|
|
| `backend/internal/security/url_validator_test.go` | +8-10 lines |
|
|
| `backend/internal/crypto/encryption_test.go` | +8-10 lines |
|
|
| `backend/internal/services/notification_service_test.go` | +6-8 lines |
|
|
| `backend/internal/api/handlers/crowdsec_handler_test.go` | +5-6 lines |
|
|
|
|
---
|
|
|
|
## 1. SSRF Remediation
|
|
|
|
**Status:** 🔴 IN PROGRESS
|
|
|
|
The authoritative, Supervisor-updated SSRF plan is:
|
|
|
|
- [docs/plans/ssrf-remediation.md](ssrf-remediation.md)
|
|
|
|
### Merge Policy (Supervisor requirement)
|
|
|
|
- The global CodeQL exclusion for `go/request-forgery` in
|
|
[.github/codeql/codeql-config.yml](../../.github/codeql/codeql-config.yml) must be removed
|
|
in the same PR/merge as the underlying SSRF fixes.
|
|
- Phase 0 can include local-only recon (e.g., temporary local edit of CodeQL config to
|
|
surface findings), but must not be a mergeable intermediate state.
|
|
|
|
### SSRF Call Sites (Current Known)
|
|
|
|
| Location | Function | File |
|
|
|----------|----------|------|
|
|
| Uptime Monitor | `(*UptimeService).checkMonitor` | [uptime_service.go](../../backend/internal/services/uptime_service.go) |
|
|
| CrowdSec LAPI | `GetLAPIDecisions`, `CheckLAPIHealth` | [crowdsec_handler.go](../../backend/internal/api/handlers/crowdsec_handler.go) |
|
|
| Caddy Admin API | `NewClient`, `Load/GetConfig/Ping` | [client.go](../../backend/internal/caddy/client.go) |
|
|
| URL Connectivity Test | `utils.TestURLConnectivity` | [url_testing.go](../../backend/internal/utils/url_testing.go) |
|
|
|
|
---
|
|
|
|
## 2. DNS Provider Feature (Issue #21)
|
|
|
|
### Core Implementation
|
|
|
|
**Status:** ✅ COMPLETE
|
|
|
|
- **Implementation Spec:** [dns_providers_IMPLEMENTATION.md](../implementation/dns_providers_IMPLEMENTATION.md)
|
|
- **Pull Request:** [#461](https://github.com/Wikid82/Charon/pull/461)
|
|
|
|
All core components implemented:
|
|
|
|
| Layer | Component | Status |
|
|
|-------|-----------|--------|
|
|
| Backend | Encryption Service (`crypto/encryption.go`) | ✅ Complete |
|
|
| Backend | DNSProvider Model | ✅ Complete |
|
|
| Backend | DNS Provider Service | ✅ Complete |
|
|
| Backend | DNS Provider Handler | ✅ Complete |
|
|
| Backend | Routes Registered | ✅ Complete |
|
|
| Backend | Caddy DNS-01 Integration | ✅ Complete |
|
|
| Frontend | API Client & Hooks | ✅ Complete |
|
|
| Frontend | DNS Providers Page & Form | ✅ Complete |
|
|
| Frontend | ProxyHost Integration | ✅ Complete |
|
|
| Frontend | Translations | ✅ Complete |
|
|
|
|
### Acceptance Criteria Verification
|
|
|
|
| Criterion | Status |
|
|
|-----------|--------|
|
|
| Users can add, edit, delete, and test DNS provider configurations | ✅ Implemented |
|
|
| Credentials encrypted at rest using AES-256-GCM | ✅ Implemented |
|
|
| Credentials never exposed in API responses | ✅ Implemented (`json:"-"`) |
|
|
| Proxy hosts with wildcard domains can select a DNS provider | ✅ Implemented |
|
|
| Caddy successfully obtains wildcard certificates via DNS-01 | ✅ Implemented |
|
|
| Backend unit test coverage ≥ 85% | ✅ **85.2%** (verified 2026-01-03) |
|
|
| Frontend unit test coverage ≥ 85% | ✅ **87.8%** (verified 2026-01-03) |
|
|
| User documentation completed | ✅ Complete (5 provider guides) |
|
|
| All translations added | ✅ Complete |
|
|
|
|
### Verification Results (2026-01-03)
|
|
|
|
| Check | Result |
|
|
|-------|--------|
|
|
| Backend Coverage | ✅ 85.2% (threshold: 85%) |
|
|
| Frontend Coverage | ✅ 87.8% (threshold: 85%) |
|
|
| Security Scan (Trivy) | ✅ 0 Critical, 0 High |
|
|
| Security Scan (govulncheck) | ✅ 0 vulnerabilities |
|
|
| Pre-commit Hooks | ✅ All 11 hooks passed |
|
|
| CHANGELOG | ✅ Entry exists in [Unreleased] |
|
|
|
|
### Outstanding Items (Pre-Merge)
|
|
|
|
- [x] ~~Run backend coverage report~~ — **85.2%** ✅
|
|
- [x] ~~Run frontend coverage report~~ — **87.8%** ✅
|
|
- [x] ~~Complete Google Cloud DNS setup guide~~ — Created ✅
|
|
- [x] ~~Complete Azure DNS setup guide~~ — Created ✅
|
|
- [ ] Manual E2E validation: DNS provider → wildcard proxy → certificate issued
|
|
- [x] ~~CHANGELOG entry for DNS provider feature~~ — Already present ✅
|
|
- [x] ~~Security scans (Trivy, govulncheck)~~ — Passed ✅
|
|
|
|
### Future Enhancements
|
|
|
|
**Status:** 📋 PLANNING
|
|
|
|
- **Planning Doc:** [dns_challenge_future_features.md](dns_challenge_future_features.md)
|
|
|
|
| Priority | Feature | Est. Time | Status |
|
|
|----------|---------|-----------|--------|
|
|
| **P0** | Audit Logging for Credential Operations | 8-12 hrs | ❌ Not Started |
|
|
| **P1** | Key Rotation Automation | 16-20 hrs | ❌ Not Started |
|
|
| **P1** | Multi-Credential per Provider (Zone-Specific) | 12-16 hrs | ❌ Not Started |
|
|
| **P2** | DNS Provider Auto-Detection | 6-8 hrs | ❌ Not Started |
|
|
| **P3** | Custom DNS Provider Plugins | 20-24 hrs | ❌ Not Started |
|
|
|
|
**Recommended Implementation Order:**
|
|
1. Audit Logging (Security/Compliance baseline for SOC 2, GDPR, HIPAA)
|
|
2. Key Rotation (Security hardening, annual rotation support)
|
|
3. Multi-Credential (Enterprise/MSP multi-tenancy)
|
|
4. Auto-Detection (UX improvement)
|
|
5. Custom Plugins (Extensibility for power users)
|
|
|
|
---
|
|
|
|
## 3. Related Documents (Index)
|
|
|
|
| Document | Description |
|
|
|----------|-------------|
|
|
| [patch-coverage-codecov.md](patch-coverage-codecov.md) | Codecov patch coverage plan |
|
|
| [codeql-local-hygiene.md](codeql-local-hygiene.md) | CodeQL/Trivy local scan hygiene notes |
|
|
| [dns_providers_IMPLEMENTATION.md](../implementation/dns_providers_IMPLEMENTATION.md) | DNS provider full implementation spec |
|
|
| [dns_challenge_future_features.md](dns_challenge_future_features.md) | DNS challenge future enhancements plan |
|
|
|
|
---
|
|
|
|
## 4. Definition of Done (All Features)
|
|
|
|
Before any feature is considered complete:
|
|
|
|
- [ ] Backend unit test coverage ≥ 85%
|
|
- [ ] Frontend unit test coverage ≥ 85%
|
|
- [ ] TypeScript check passes (`npm run type-check`)
|
|
- [ ] Pre-commit hooks pass (`pre-commit run --all-files`)
|
|
- [ ] CodeQL scans: zero Critical/High issues
|
|
- [ ] Trivy scans: zero Critical/High vulnerabilities
|
|
- [ ] All linters pass
|
|
- [ ] Documentation updated
|
|
- [ ] CHANGELOG updated
|