47 lines
1.8 KiB
Markdown
47 lines
1.8 KiB
Markdown
# QA Plan: WebSocket Chat with Redis Pub/Sub
|
|
|
|
## Test Categories
|
|
|
|
### 1. Unit Tests
|
|
|
|
| Test | Description | Location |
|
|
|------|-------------|----------|
|
|
| Config loading | RedisURL read from environment | `config/config_test.go` |
|
|
| Hub registration | Connections register/unregister | `pkg/realtime/hub_test.go` |
|
|
| Room management | Join/leave room operations | `pkg/realtime/hub_test.go` |
|
|
| Message broadcast | Room and global broadcast | `pkg/realtime/hub_test.go` |
|
|
|
|
### 2. Integration Tests
|
|
|
|
| Test | Description | Location |
|
|
|------|-------------|----------|
|
|
| WebSocket upgrade | GET /ws returns 101 Switching Protocols | `handlers/ws_test.go` |
|
|
| Room join URL | GET /ws/{room} joins room | `handlers/ws_test.go` |
|
|
| Room join query | GET /ws?room=x joins room | `handlers/ws_test.go` |
|
|
| Message echo | Client receives own messages | `handlers/ws_test.go` |
|
|
| Multi-client broadcast | All clients receive messages | `handlers/ws_test.go` |
|
|
| Stats endpoint | GET /ws/stats returns counts | `handlers/ws_test.go` |
|
|
| Connection cleanup | Disconnected clients removed | `handlers/ws_test.go` |
|
|
|
|
### 3. Manual Tests
|
|
|
|
| Test | Steps | Expected |
|
|
|------|-------|----------|
|
|
| wscat connection | `wscat -c ws://localhost:8001/api/chat-api/ws` | Connection established |
|
|
| Send message | Send JSON `{"type":"chat","data":{"text":"hello"}}` | Message echoed back |
|
|
| Room broadcast | Two clients join same room, one sends | Both receive message |
|
|
| Stats check | `curl localhost:8001/api/chat-api/ws/stats` | Returns connection count |
|
|
|
|
## Test Environment
|
|
|
|
- Redis running via docker-compose
|
|
- Service running on port 8001
|
|
- WebSocket client: wscat or websocat
|
|
|
|
## Pass Criteria
|
|
|
|
- All unit tests pass
|
|
- All integration tests pass
|
|
- Manual WebSocket connection test successful
|
|
- Message broadcast verified with multiple clients
|