kaboot/server/tests/README.md

68 lines
1.9 KiB
Markdown

# Kaboot Backend API Tests
## Getting a Test Token
Since Authentik uses OAuth2 flows that require browser interaction, you need to obtain a token manually.
### Method 1: Browser DevTools (Easiest)
1. Start the Kaboot frontend: `npm run dev` (in root directory)
2. Open `http://localhost:5173`
3. Click "Sign In" and log in with Authentik
4. Open browser DevTools (F12)
5. Go to **Application** > **Local Storage** > `http://localhost:5173`
6. Find the key starting with `oidc.user:`
7. Click on it and find `"access_token"` in the JSON value
8. Copy the token value (without quotes)
### Method 2: Service Account
1. Go to Authentik Admin: `http://localhost:9000/if/admin/`
2. Navigate to **Directory** > **Users**
3. Click **Create Service Account**
4. Enter a name (e.g., `kaboot-test-service`)
5. Note the generated username and token
6. Use these credentials:
```bash
TEST_USERNAME=<service-account-username> \
TEST_PASSWORD=<generated-token> \
npm run test:get-token
```
## Running Tests
```bash
cd server
npm install
# Set the token you obtained
export TEST_TOKEN="your-access-token-here"
# Run tests
npm run test
```
## Test Coverage
The test suite covers:
- **Health Check**: Basic server availability
- **Authentication**: 401 without token, 401 with invalid token
- **User API**: GET /api/users/me
- **Quiz CRUD**:
- GET /api/quizzes (list)
- POST /api/quizzes (create)
- GET /api/quizzes/:id (read)
- PUT /api/quizzes/:id (update)
- DELETE /api/quizzes/:id (delete)
## Environment Variables
| Variable | Default | Description |
|----------|---------|-------------|
| `API_URL` | `http://localhost:3001` | Backend API URL |
| `TEST_TOKEN` | (required) | JWT access token from Authentik |
| `AUTHENTIK_URL` | `http://localhost:9000` | Authentik server URL |
| `CLIENT_ID` | `kaboot-spa` | OAuth2 client ID |
| `TEST_USERNAME` | `kaboottest` | Username for token request |
| `TEST_PASSWORD` | `kaboottest` | Password for token request |