392 lines
12 KiB
Bash
Executable File
392 lines
12 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
REPO="Wikid82/charon"
|
|
MILESTONE="v$(cat .version | tr -d '\n')"
|
|
|
|
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:
|
|
### Backend Testing ✅ (Completed)
|
|
- [x] Unit tests for \`BulkUpdateACL\` handler (5 tests)
|
|
- [x] Coverage: 82.2% maintained
|
|
|
|
- [x] Coverage: 86.06% (improved from 85.57%)
|
|
|
|
## Sub-Issues
|
|
|
|
- [ ] #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/charon/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/charon/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/charon/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/charon/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/charon/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/charon/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/charon/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/charon/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"
|