68 lines
1.9 KiB
Markdown
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 |
|