From e126426acd876db133ec03ed98b2f7281752926b Mon Sep 17 00:00:00 2001 From: glenneth Date: Fri, 10 Oct 2025 05:41:35 +0300 Subject: [PATCH] Updated TESTING.org --- docs/TESTING.org | 271 ----------------------------------------------- 1 file changed, 271 deletions(-) delete mode 100644 docs/TESTING.org diff --git a/docs/TESTING.org b/docs/TESTING.org deleted file mode 100644 index a9404de..0000000 --- a/docs/TESTING.org +++ /dev/null @@ -1,271 +0,0 @@ -#+TITLE: Asteroid Radio Testing Guide -#+AUTHOR: Cascade AI Assistant -#+DATE: 2025-10-08 - -* Overview - -This document describes the automated testing system for Asteroid Radio. - -* Test Script - -The =test-server.sh= script provides comprehensive testing of all server endpoints and functionality. - -** Features - -- Tests all API endpoints (15 endpoints) -- Tests HTML page rendering (5 pages) -- Tests static file serving -- Validates JSON response format -- Color-coded output for easy reading -- Detailed pass/fail reporting -- Verbose mode for debugging - -** Usage - -*** Basic Usage -#+BEGIN_SRC bash -# Test local server (default: http://localhost:8080) -./test-server.sh - -# Verbose mode (shows response details) -./test-server.sh -v - -# Test remote server -./test-server.sh -u http://example.com - -# Show help -./test-server.sh -h -#+END_SRC - -*** Environment Variables -#+BEGIN_SRC bash -# Set base URL via environment -ASTEROID_URL=http://example.com ./test-server.sh - -# Enable verbose mode -VERBOSE=1 ./test-server.sh -#+END_SRC - -** Test Categories - -*** 1. Server Status -- Server accessibility check -- API response format validation - -*** 2. Status Endpoints -- =/api/asteroid/status= - Server status -- =/api/asteroid/auth-status= - Authentication status -- =/api/asteroid/icecast-status= - Icecast streaming status - -*** 3. Track Endpoints -- =/api/asteroid/tracks= - Track listing -- =/api/asteroid/admin/tracks= - Admin track listing - -*** 4. Player Control Endpoints -- =/api/asteroid/player/status= - Player status -- =/api/asteroid/player/play= - Play track -- =/api/asteroid/player/pause= - Pause playback -- =/api/asteroid/player/stop= - Stop playback -- =/api/asteroid/player/resume= - Resume playback - -*** 5. Playlist Endpoints -- =/api/asteroid/playlists= - Playlist listing -- =/api/asteroid/playlists/create= - Create playlist -- =/api/asteroid/playlists/add-track= - Add track to playlist -- =/api/asteroid/playlists/get= - Get playlist details - -*** 6. Admin Endpoints -- =/api/asteroid/admin/tracks= - Admin track listing -- =/api/asteroid/admin/scan-library= - Library scan - -*** 7. HTML Pages -- =/asteroid/= - Front page -- =/asteroid/admin= - Admin dashboard -- =/asteroid/player= - Web player -- =/asteroid/profile= - User profile -- =/asteroid/register= - Registration page - -*** 8. Static Files -- CSS files (=/asteroid/static/*.css=) -- JavaScript files (=/asteroid/static/js/*.js=) - -** Example Output - -#+BEGIN_EXAMPLE -╔═══════════════════════════════════════╗ -║ Asteroid Radio Server Test Suite ║ -╔═══════════════════════════════════════╗ - -INFO: Testing server at: http://localhost:8080 -INFO: Verbose mode: 0 - -======================================== -Checking Server Status -======================================== - -TEST: Server is accessible -✓ PASS: Server is running at http://localhost:8080 - -======================================== -Testing API Response Format -======================================== - -TEST: API returns JSON format -✓ PASS: API returns JSON (not S-expressions) - -======================================== -Testing Status Endpoints -======================================== - -TEST: Server status endpoint -✓ PASS: Server status endpoint - Response contains 'asteroid-radio' - -TEST: Authentication status endpoint -✓ PASS: Authentication status endpoint - Response contains 'loggedIn' - -... - -======================================== -Test Summary -======================================== - -Tests Run: 25 -Tests Passed: 25 -Tests Failed: 0 - -✓ All tests passed! -#+END_EXAMPLE - -** Exit Codes - -- =0= - All tests passed -- =1= - One or more tests failed or server not accessible - -** Requirements - -*** Required -- =bash= - Shell script interpreter -- =curl= - HTTP client for testing endpoints - -*** Optional -- =jq= - JSON processor for advanced JSON validation (recommended) - -Install jq: -#+BEGIN_SRC bash -# Ubuntu/Debian -sudo apt install jq - -# macOS -brew install jq -#+END_SRC - -** Integration with CI/CD - -The test script can be integrated into continuous integration pipelines: - -#+BEGIN_SRC yaml -# Example GitHub Actions workflow -- name: Start Asteroid Server - run: ./asteroid & - -- name: Wait for server - run: sleep 5 - -- name: Run tests - run: ./test-server.sh -#+END_SRC - -** Extending the Tests - -To add new tests, edit =test-server.sh= and add test functions: - -#+BEGIN_SRC bash -test_my_new_feature() { - print_header "Testing My New Feature" - - test_api_endpoint "/my-endpoint" \ - "My endpoint description" \ - "expected-field" -} - -# Add to main() function -main() { - # ... existing tests ... - test_my_new_feature - # ... -} -#+END_SRC - -** Troubleshooting - -*** Server not accessible -- Ensure server is running: =./asteroid= -- Check server is on correct port: =8080= -- Verify firewall settings - -*** Tests failing -- Run with verbose mode: =./test-server.sh -v= -- Check server logs for errors -- Verify database is initialized -- Ensure all dependencies are installed - -*** JSON format issues -- Verify JSON API format is configured in =asteroid.lisp= -- Check =define-api-format json= is defined -- Ensure =*default-api-format*= is set to ="json"= - -* Manual Testing Checklist - -For features not covered by automated tests: - -** Authentication -- [ ] Login with admin/asteroid123 -- [ ] Logout functionality -- [ ] Session persistence -- [ ] Protected pages redirect to login - -** Music Library -- [ ] Scan library adds tracks -- [ ] Track metadata displays correctly -- [ ] Audio streaming works -- [ ] Search and filter tracks - -** Playlists -- [ ] Create new playlist -- [ ] Add tracks to playlist -- [ ] Load playlist -- [ ] Delete playlist - -** Player -- [ ] Play/pause/stop controls work -- [ ] Track progress updates -- [ ] Queue management -- [ ] Volume control - -** Admin Features -- [ ] View all tracks -- [ ] Scan library -- [ ] User management -- [ ] System status monitoring - -* Performance Testing - -For load testing and performance validation: - -#+BEGIN_SRC bash -# Simple load test with Apache Bench -ab -n 1000 -c 10 http://localhost:8080/api/asteroid/tracks - -# Or with wrk -wrk -t4 -c100 -d30s http://localhost:8080/api/asteroid/tracks -#+END_SRC - -* Security Testing - -** API Security Checklist -- [ ] Authentication required for protected endpoints -- [ ] Authorization checks for admin endpoints -- [ ] SQL injection prevention -- [ ] XSS protection in templates -- [ ] CSRF token validation -- [ ] Rate limiting on API endpoints