chore: update ignore files and add issue creation script
- Add *.cover and coverage_*.out patterns to gitignore - Add recursive database patterns (backend/data/**/*.db) - Ignore project implementation documentation files - Add cookies.txt and create_issues.sh to gitignore - Update dockerignore with same patterns for smaller images - Add *.cover and *.out to codecov ignore - Add scripts/create_bulk_acl_issues.sh for automated issue creation
This commit is contained in:
@@ -31,6 +31,10 @@ ignore:
|
||||
- "backend/cmd/api/*"
|
||||
- "backend/data/*"
|
||||
- "backend/coverage/*"
|
||||
- "backend/*.cover"
|
||||
- "backend/*.out"
|
||||
- "backend/internal/services/docker_service.go"
|
||||
- "backend/internal/api/handlers/docker_handler.go"
|
||||
- "codeql-db/*"
|
||||
- "*.sarif"
|
||||
- "*.md"
|
||||
|
||||
@@ -32,16 +32,20 @@ frontend/frontend/
|
||||
# Go/Backend
|
||||
backend/coverage.txt
|
||||
backend/*.out
|
||||
backend/*.cover
|
||||
backend/coverage/
|
||||
backend/coverage.*.out
|
||||
backend/coverage_*.out
|
||||
backend/package.json
|
||||
backend/package-lock.json
|
||||
|
||||
# Databases (runtime)
|
||||
backend/data/*.db
|
||||
backend/data/**/*.db
|
||||
backend/cmd/api/data/*.db
|
||||
*.sqlite
|
||||
*.sqlite3
|
||||
cpm.db
|
||||
|
||||
# IDE
|
||||
.vscode/
|
||||
@@ -51,7 +55,7 @@ backend/cmd/api/data/*.db
|
||||
*~
|
||||
|
||||
# Logs
|
||||
.trivy_logs
|
||||
.trivy_logs/
|
||||
*.log
|
||||
logs/
|
||||
|
||||
@@ -76,7 +80,29 @@ docker-compose*.yml
|
||||
# CI/CD
|
||||
.github/
|
||||
.pre-commit-config.yaml
|
||||
.codecov.yml
|
||||
|
||||
# Scripts
|
||||
scripts/
|
||||
tools/
|
||||
create_issues.sh
|
||||
cookies.txt
|
||||
|
||||
# Testing artifacts
|
||||
coverage.out
|
||||
*.cover
|
||||
*.crdownload
|
||||
|
||||
# Project Documentation
|
||||
ACME_STAGING_IMPLEMENTATION.md
|
||||
ARCHITECTURE_PLAN.md
|
||||
BULK_ACL_FEATURE.md
|
||||
DOCKER_TASKS.md
|
||||
DOCUMENTATION_POLISH_SUMMARY.md
|
||||
GHCR_MIGRATION_SUMMARY.md
|
||||
ISSUE_*_IMPLEMENTATION.md
|
||||
PHASE_*_SUMMARY.md
|
||||
PROJECT_BOARD_SETUP.md
|
||||
PROJECT_PLANNING.md
|
||||
SECURITY_IMPLEMENTATION_PLAN.md
|
||||
VERSIONING_IMPLEMENTATION.md
|
||||
|
||||
26
.gitignore
vendored
26
.gitignore
vendored
@@ -26,15 +26,19 @@ frontend/*.tsbuildinfo
|
||||
# Go/Backend
|
||||
backend/api
|
||||
backend/*.out
|
||||
backend/*.cover
|
||||
backend/coverage/
|
||||
backend/coverage.*.out
|
||||
backend/coverage_*.out
|
||||
|
||||
# Databases
|
||||
*.db
|
||||
*.sqlite
|
||||
*.sqlite3
|
||||
backend/data/*.db
|
||||
backend/data/**/*.db
|
||||
backend/cmd/api/data/*.db
|
||||
cpm.db
|
||||
|
||||
# IDE
|
||||
.idea/
|
||||
@@ -69,7 +73,9 @@ docker-compose.override.yml
|
||||
|
||||
# Testing
|
||||
coverage/
|
||||
coverage.out
|
||||
*.xml
|
||||
.trivy_logs/
|
||||
.trivy_logs/trivy-report.txt
|
||||
backend/coverage.txt
|
||||
|
||||
@@ -79,5 +85,23 @@ codeql-results.sarif
|
||||
**.sarif
|
||||
codeql-results-js.sarif
|
||||
codeql-results-go.sarif
|
||||
remote_logs/Unconfirmed 312410.crdownload
|
||||
*.crdownload
|
||||
.vscode/launch.json
|
||||
|
||||
# Scripts (project-specific)
|
||||
create_issues.sh
|
||||
cookies.txt
|
||||
|
||||
# Project Documentation (keep important docs, ignore implementation notes)
|
||||
ACME_STAGING_IMPLEMENTATION.md
|
||||
ARCHITECTURE_PLAN.md
|
||||
BULK_ACL_FEATURE.md
|
||||
DOCKER_TASKS.md
|
||||
DOCUMENTATION_POLISH_SUMMARY.md
|
||||
GHCR_MIGRATION_SUMMARY.md
|
||||
ISSUE_*_IMPLEMENTATION.md
|
||||
PHASE_*_SUMMARY.md
|
||||
PROJECT_BOARD_SETUP.md
|
||||
PROJECT_PLANNING.md
|
||||
SECURITY_IMPLEMENTATION_PLAN.md
|
||||
VERSIONING_IMPLEMENTATION.md
|
||||
|
||||
406
scripts/create_bulk_acl_issues.sh
Executable file
406
scripts/create_bulk_acl_issues.sh
Executable file
@@ -0,0 +1,406 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
REPO="Wikid82/cpmp"
|
||||
MILESTONE="v0.2.0-beta.2"
|
||||
|
||||
echo "Creating Bulk ACL Testing Issues for $REPO"
|
||||
echo "============================================"
|
||||
|
||||
# Create main issue
|
||||
echo ""
|
||||
echo "Creating main testing issue..."
|
||||
MAIN_ISSUE=$(gh issue create \
|
||||
--repo "$REPO" \
|
||||
--title "Test: Bulk ACL Application Feature" \
|
||||
--label "beta,high,feature,frontend,backend" \
|
||||
--body "## Description
|
||||
|
||||
Comprehensive testing required for the newly implemented Bulk ACL (Access Control List) application feature. This feature allows users to apply or remove access lists from multiple proxy hosts simultaneously.
|
||||
|
||||
## Feature Overview
|
||||
|
||||
The bulk ACL feature introduces:
|
||||
- Multi-select checkboxes in Proxy Hosts table
|
||||
- Bulk Actions button with ACL selection modal
|
||||
- Backend endpoint: \`PUT /api/v1/proxy-hosts/bulk-update-acl\`
|
||||
- Comprehensive error handling for partial failures
|
||||
|
||||
## Testing Status
|
||||
|
||||
### Backend Testing ✅ (Completed)
|
||||
- [x] Unit tests for \`BulkUpdateACL\` handler (5 tests)
|
||||
- [x] Coverage: 82.2% maintained
|
||||
|
||||
### Frontend Testing ✅ (Completed)
|
||||
- [x] Unit tests for API client and hooks (10 tests)
|
||||
- [x] Coverage: 86.06% (improved from 85.57%)
|
||||
|
||||
### Manual Testing 🔴 (Required)
|
||||
See sub-issues below for detailed test plans.
|
||||
|
||||
## Sub-Issues
|
||||
|
||||
- [ ] #TBD - Basic Functionality Testing
|
||||
- [ ] #TBD - ACL Removal Testing
|
||||
- [ ] #TBD - Error Handling Testing
|
||||
- [ ] #TBD - UI/UX Testing
|
||||
- [ ] #TBD - Integration Testing
|
||||
- [ ] #TBD - Cross-Browser Testing
|
||||
- [ ] #TBD - Regression Testing
|
||||
|
||||
## Success Criteria
|
||||
|
||||
- ✅ All manual test checklists completed
|
||||
- ✅ No critical bugs found
|
||||
- ✅ Performance acceptable with 50+ hosts
|
||||
- ✅ UI/UX meets design standards
|
||||
- ✅ Cross-browser compatibility confirmed
|
||||
- ✅ No regressions in existing features
|
||||
|
||||
## Related Files
|
||||
|
||||
**Backend:**
|
||||
- \`backend/internal/api/handlers/proxy_host_handler.go\`
|
||||
- \`backend/internal/api/handlers/proxy_host_handler_test.go\`
|
||||
|
||||
**Frontend:**
|
||||
- \`frontend/src/pages/ProxyHosts.tsx\`
|
||||
- \`frontend/src/api/proxyHosts.ts\`
|
||||
- \`frontend/src/hooks/useProxyHosts.ts\`
|
||||
|
||||
**Documentation:**
|
||||
- \`BULK_ACL_FEATURE.md\`
|
||||
- \`docs/issues/bulk-acl-testing.md\`
|
||||
- \`docs/issues/bulk-acl-subissues.md\`
|
||||
|
||||
**Implementation Date**: November 27, 2025
|
||||
" | grep -oP '(?<=github.com/Wikid82/cpmp/issues/)\d+')
|
||||
|
||||
echo "✓ Created main issue #$MAIN_ISSUE"
|
||||
|
||||
# Sub-issue 1: Basic Functionality
|
||||
echo ""
|
||||
echo "Creating sub-issue #1: Basic Functionality..."
|
||||
SUB1=$(gh issue create \
|
||||
--repo "$REPO" \
|
||||
--title "[Bulk ACL Testing] Basic Functionality - Selection and Application" \
|
||||
--label "beta,medium,feature,frontend" \
|
||||
--body "Part of #$MAIN_ISSUE
|
||||
|
||||
## Description
|
||||
Test the core functionality of the bulk ACL feature - selecting hosts and applying access lists.
|
||||
|
||||
## Test Checklist
|
||||
- [ ] Navigate to Proxy Hosts page
|
||||
- [ ] Verify checkbox column appears in table
|
||||
- [ ] Select individual hosts using checkboxes
|
||||
- [ ] Verify \"Select All\" checkbox works correctly
|
||||
- [ ] Confirm selection count displays accurately
|
||||
- [ ] Click \"Bulk Actions\" button - modal should appear
|
||||
- [ ] Select an ACL from dropdown - hosts should update
|
||||
- [ ] Verify toast notification shows success message
|
||||
- [ ] Confirm hosts table refreshes with updated ACL assignments
|
||||
- [ ] Check database to verify \`access_list_id\` fields updated
|
||||
|
||||
## Expected Results
|
||||
- All checkboxes functional
|
||||
- Selection count accurate
|
||||
- Modal displays correctly
|
||||
- ACL applies to all selected hosts
|
||||
- Database reflects changes
|
||||
|
||||
## Test Environment
|
||||
Local development
|
||||
" | grep -oP '(?<=github.com/Wikid82/cpmp/issues/)\d+')
|
||||
|
||||
echo "✓ Created sub-issue #$SUB1"
|
||||
|
||||
# Sub-issue 2: ACL Removal
|
||||
echo ""
|
||||
echo "Creating sub-issue #2: ACL Removal..."
|
||||
SUB2=$(gh issue create \
|
||||
--repo "$REPO" \
|
||||
--title "[Bulk ACL Testing] ACL Removal Functionality" \
|
||||
--label "beta,medium,feature,frontend" \
|
||||
--body "Part of #$MAIN_ISSUE
|
||||
|
||||
## Description
|
||||
Test the ability to remove access lists from multiple hosts simultaneously.
|
||||
|
||||
## Test Checklist
|
||||
- [ ] Select hosts that have ACLs assigned
|
||||
- [ ] Open Bulk Actions modal
|
||||
- [ ] Select \"🚫 Remove Access List\" option
|
||||
- [ ] Confirm removal dialog appears
|
||||
- [ ] Proceed with removal
|
||||
- [ ] Verify toast shows \"Access list removed from X host(s)\"
|
||||
- [ ] Confirm hosts no longer have ACL assigned in UI
|
||||
- [ ] Check database to verify \`access_list_id\` is NULL
|
||||
|
||||
## Expected Results
|
||||
- Removal option clearly visible
|
||||
- Confirmation dialog prevents accidental removal
|
||||
- All selected hosts have ACL removed
|
||||
- Database updated correctly (NULL values)
|
||||
|
||||
## Test Environment
|
||||
Local development
|
||||
" | grep -oP '(?<=github.com/Wikid82/cpmp/issues/)\d+')
|
||||
|
||||
echo "✓ Created sub-issue #$SUB2"
|
||||
|
||||
# Sub-issue 3: Error Handling
|
||||
echo ""
|
||||
echo "Creating sub-issue #3: Error Handling..."
|
||||
SUB3=$(gh issue create \
|
||||
--repo "$REPO" \
|
||||
--title "[Bulk ACL Testing] Error Handling and Edge Cases" \
|
||||
--label "beta,medium,feature,backend" \
|
||||
--body "Part of #$MAIN_ISSUE
|
||||
|
||||
## Description
|
||||
Test error scenarios and edge cases to ensure graceful degradation.
|
||||
|
||||
## Test Checklist
|
||||
- [ ] Select multiple hosts including one that doesn't exist
|
||||
- [ ] Apply ACL via bulk action
|
||||
- [ ] Verify toast shows partial success: \"Updated X host(s), Y failed\"
|
||||
- [ ] Confirm successful hosts were updated
|
||||
- [ ] Test with no hosts selected (button should not appear)
|
||||
- [ ] Test with empty ACL list (dropdown should show appropriate message)
|
||||
- [ ] Disconnect backend - verify network error handling
|
||||
- [ ] Test applying invalid ACL ID (edge case)
|
||||
|
||||
## Expected Results
|
||||
- Partial failures handled gracefully
|
||||
- Clear error messages displayed
|
||||
- No data corruption on partial failures
|
||||
- Network errors caught and reported
|
||||
|
||||
## Test Environment
|
||||
Local development + simulated failures
|
||||
" | grep -oP '(?<=github.com/Wikid82/cpmp/issues/)\d+')
|
||||
|
||||
echo "✓ Created sub-issue #$SUB3"
|
||||
|
||||
# Sub-issue 4: UI/UX
|
||||
echo ""
|
||||
echo "Creating sub-issue #4: UI/UX..."
|
||||
SUB4=$(gh issue create \
|
||||
--repo "$REPO" \
|
||||
--title "[Bulk ACL Testing] UI/UX and Usability" \
|
||||
--label "beta,medium,frontend" \
|
||||
--body "Part of #$MAIN_ISSUE
|
||||
|
||||
## Description
|
||||
Test the user interface and experience aspects of the bulk ACL feature.
|
||||
|
||||
## Test Checklist
|
||||
- [ ] Verify checkboxes align properly in table
|
||||
- [ ] Test checkbox hover states
|
||||
- [ ] Verify \"Bulk Actions\" button appears/disappears based on selection
|
||||
- [ ] Test modal appearance and dismissal (click outside, ESC key)
|
||||
- [ ] Verify dropdown styling and readability
|
||||
- [ ] Test loading state (\`isBulkUpdating\`) - button should show \"Updating...\"
|
||||
- [ ] Verify selection persists during table sorting
|
||||
- [ ] Test selection persistence during table filtering (if applicable)
|
||||
- [ ] Verify toast notifications don't overlap
|
||||
- [ ] Test on mobile viewport (responsive design)
|
||||
|
||||
## Expected Results
|
||||
- Clean, professional UI
|
||||
- Intuitive user flow
|
||||
- Proper loading states
|
||||
- Mobile-friendly
|
||||
- Accessible (keyboard navigation)
|
||||
|
||||
## Test Environment
|
||||
Local development (multiple screen sizes)
|
||||
" | grep -oP '(?<=github.com/Wikid82/cpmp/issues/)\d+')
|
||||
|
||||
echo "✓ Created sub-issue #$SUB4"
|
||||
|
||||
# Sub-issue 5: Integration
|
||||
echo ""
|
||||
echo "Creating sub-issue #5: Integration..."
|
||||
SUB5=$(gh issue create \
|
||||
--repo "$REPO" \
|
||||
--title "[Bulk ACL Testing] Integration and Performance" \
|
||||
--label "beta,high,feature,backend,frontend" \
|
||||
--body "Part of #$MAIN_ISSUE
|
||||
|
||||
## Description
|
||||
Test the feature in realistic scenarios and with varying data loads.
|
||||
|
||||
## Test Checklist
|
||||
- [ ] Create new ACL, immediately apply to multiple hosts
|
||||
- [ ] Verify Caddy config reloads once (not per host)
|
||||
- [ ] Test with 1 host selected
|
||||
- [ ] Test with 10+ hosts selected (performance)
|
||||
- [ ] Test with 50+ hosts selected (edge case)
|
||||
- [ ] Apply ACL, then immediately remove it (rapid operations)
|
||||
- [ ] Apply different ACLs sequentially to same host group
|
||||
- [ ] Delete a host that's selected, then bulk apply ACL
|
||||
- [ ] Disable an ACL, verify it doesn't appear in dropdown
|
||||
- [ ] Test concurrent user scenarios (multi-tab if possible)
|
||||
|
||||
## Expected Results
|
||||
- Single Caddy reload per bulk operation
|
||||
- Performance acceptable up to 50+ hosts
|
||||
- No race conditions with rapid operations
|
||||
- Graceful handling of deleted/disabled entities
|
||||
|
||||
## Test Environment
|
||||
Docker production build
|
||||
" | grep -oP '(?<=github.com/Wikid82/cpmp/issues/)\d+')
|
||||
|
||||
echo "✓ Created sub-issue #$SUB5"
|
||||
|
||||
# Sub-issue 6: Cross-Browser
|
||||
echo ""
|
||||
echo "Creating sub-issue #6: Cross-Browser..."
|
||||
SUB6=$(gh issue create \
|
||||
--repo "$REPO" \
|
||||
--title "[Bulk ACL Testing] Cross-Browser Compatibility" \
|
||||
--label "beta,low,frontend" \
|
||||
--body "Part of #$MAIN_ISSUE
|
||||
|
||||
## Description
|
||||
Verify the feature works across all major browsers and devices.
|
||||
|
||||
## Test Checklist
|
||||
- [ ] Chrome/Chromium (latest)
|
||||
- [ ] Firefox (latest)
|
||||
- [ ] Safari (macOS/iOS)
|
||||
- [ ] Edge (latest)
|
||||
- [ ] Mobile Chrome (Android)
|
||||
- [ ] Mobile Safari (iOS)
|
||||
|
||||
## Expected Results
|
||||
- Feature works identically across all browsers
|
||||
- No CSS layout issues
|
||||
- No JavaScript errors in console
|
||||
- Touch interactions work on mobile
|
||||
|
||||
## Test Environment
|
||||
Multiple browsers/devices
|
||||
" | grep -oP '(?<=github.com/Wikid82/cpmp/issues/)\d+')
|
||||
|
||||
echo "✓ Created sub-issue #$SUB6"
|
||||
|
||||
# Sub-issue 7: Regression
|
||||
echo ""
|
||||
echo "Creating sub-issue #7: Regression..."
|
||||
SUB7=$(gh issue create \
|
||||
--repo "$REPO" \
|
||||
--title "[Bulk ACL Testing] Regression Testing - Existing Features" \
|
||||
--label "beta,high,feature,frontend,backend" \
|
||||
--body "Part of #$MAIN_ISSUE
|
||||
|
||||
## Description
|
||||
Ensure the new bulk ACL feature doesn't break existing functionality.
|
||||
|
||||
## Test Checklist
|
||||
- [ ] Verify individual proxy host edit still works
|
||||
- [ ] Confirm single-host ACL assignment unchanged
|
||||
- [ ] Test proxy host creation with ACL pre-selected
|
||||
- [ ] Verify ACL deletion prevents assignment
|
||||
- [ ] Confirm existing ACL features unaffected:
|
||||
- [ ] IP-based rules
|
||||
- [ ] Geo-blocking rules
|
||||
- [ ] Local network only rules
|
||||
- [ ] Test IP functionality
|
||||
- [ ] Verify certificate assignment still works
|
||||
- [ ] Test proxy host enable/disable toggle
|
||||
|
||||
## Expected Results
|
||||
- Zero regressions
|
||||
- All existing features work as before
|
||||
- No performance degradation
|
||||
- No new bugs introduced
|
||||
|
||||
## Test Environment
|
||||
Docker production build
|
||||
" | grep -oP '(?<=github.com/Wikid82/cpmp/issues/)\d+')
|
||||
|
||||
echo "✓ Created sub-issue #$SUB7"
|
||||
|
||||
# Update main issue with sub-issue numbers
|
||||
echo ""
|
||||
echo "Updating main issue with sub-issue references..."
|
||||
gh issue edit "$MAIN_ISSUE" \
|
||||
--repo "$REPO" \
|
||||
--body "## Description
|
||||
|
||||
Comprehensive testing required for the newly implemented Bulk ACL (Access Control List) application feature. This feature allows users to apply or remove access lists from multiple proxy hosts simultaneously.
|
||||
|
||||
## Feature Overview
|
||||
|
||||
The bulk ACL feature introduces:
|
||||
- Multi-select checkboxes in Proxy Hosts table
|
||||
- Bulk Actions button with ACL selection modal
|
||||
- Backend endpoint: \`PUT /api/v1/proxy-hosts/bulk-update-acl\`
|
||||
- Comprehensive error handling for partial failures
|
||||
|
||||
## Testing Status
|
||||
|
||||
### Backend Testing ✅ (Completed)
|
||||
- [x] Unit tests for \`BulkUpdateACL\` handler (5 tests)
|
||||
- [x] Coverage: 82.2% maintained
|
||||
|
||||
### Frontend Testing ✅ (Completed)
|
||||
- [x] Unit tests for API client and hooks (10 tests)
|
||||
- [x] Coverage: 86.06% (improved from 85.57%)
|
||||
|
||||
### Manual Testing 🔴 (Required)
|
||||
See sub-issues below for detailed test plans.
|
||||
|
||||
## Sub-Issues
|
||||
|
||||
- [ ] #$SUB1 - Basic Functionality Testing
|
||||
- [ ] #$SUB2 - ACL Removal Testing
|
||||
- [ ] #$SUB3 - Error Handling Testing
|
||||
- [ ] #$SUB4 - UI/UX Testing
|
||||
- [ ] #$SUB5 - Integration Testing
|
||||
- [ ] #$SUB6 - Cross-Browser Testing
|
||||
- [ ] #$SUB7 - Regression Testing
|
||||
|
||||
## Success Criteria
|
||||
|
||||
- ✅ All manual test checklists completed
|
||||
- ✅ No critical bugs found
|
||||
- ✅ Performance acceptable with 50+ hosts
|
||||
- ✅ UI/UX meets design standards
|
||||
- ✅ Cross-browser compatibility confirmed
|
||||
- ✅ No regressions in existing features
|
||||
|
||||
## Related Files
|
||||
|
||||
**Backend:**
|
||||
- \`backend/internal/api/handlers/proxy_host_handler.go\`
|
||||
- \`backend/internal/api/handlers/proxy_host_handler_test.go\`
|
||||
|
||||
**Frontend:**
|
||||
- \`frontend/src/pages/ProxyHosts.tsx\`
|
||||
- \`frontend/src/api/proxyHosts.ts\`
|
||||
- \`frontend/src/hooks/useProxyHosts.ts\`
|
||||
|
||||
**Documentation:**
|
||||
- \`BULK_ACL_FEATURE.md\`
|
||||
- \`docs/issues/bulk-acl-testing.md\`
|
||||
- \`docs/issues/bulk-acl-subissues.md\`
|
||||
|
||||
**Implementation Date**: November 27, 2025
|
||||
"
|
||||
|
||||
echo "✓ Updated main issue"
|
||||
|
||||
echo ""
|
||||
echo "============================================"
|
||||
echo "✅ Successfully created all issues!"
|
||||
echo ""
|
||||
echo "Main Issue: #$MAIN_ISSUE"
|
||||
echo "Sub-Issues: #$SUB1, #$SUB2, #$SUB3, #$SUB4, #$SUB5, #$SUB6, #$SUB7"
|
||||
echo ""
|
||||
echo "View them at: https://github.com/$REPO/issues/$MAIN_ISSUE"
|
||||
Reference in New Issue
Block a user