- Changed `NUXT_SESSION_SECRET` to `NUXT_SESSION_PASSWORD` across configuration files and documentation to align with the usage in nuxt-auth-utils. - Updated related comments and documentation to reflect the new variable name, ensuring clarity for developers and users.
247 lines
6.0 KiB
Markdown
247 lines
6.0 KiB
Markdown
# Testing Guide
|
|
|
|
This document provides testing credentials, test data, and guidelines for automated testing.
|
|
|
|
---
|
|
|
|
## Test User Credentials (Staging)
|
|
|
|
**⚠️ Important:** These credentials are **ONLY** for the **staging environment**. **NEVER** use them in production!
|
|
|
|
### Cidaas Staging Test User
|
|
|
|
- **Email:** `bm@noxware.de`
|
|
- **Password:** `%654321qQ!`
|
|
- **Environment:** `https://experimenta-staging.cidaas.de`
|
|
- **User ID (experimenta_id):** `97dcde33-d12e-4275-a0d5-e01cfbea37c2`
|
|
|
|
**Usage:**
|
|
- Used by automated tests (Playwright E2E, Vitest integration tests)
|
|
- Manual testing during development
|
|
- Authentication flow validation
|
|
|
|
**User Profile:**
|
|
- First Name: Bastian
|
|
- Last Name: Masanek
|
|
- Email verified: Yes
|
|
|
|
---
|
|
|
|
## Setting Up Automated Tests
|
|
|
|
### 1. Environment Variables
|
|
|
|
Add these to your `.env` file for automated testing:
|
|
|
|
```bash
|
|
# Test Credentials (Staging only - for automated testing)
|
|
TEST_USER_EMAIL=bm@noxware.de
|
|
TEST_USER_PASSWORD=%654321qQ!
|
|
```
|
|
|
|
### 2. Playwright E2E Tests
|
|
|
|
Playwright tests use these credentials to test the complete authentication flow.
|
|
|
|
**Example test:**
|
|
```typescript
|
|
// tests/e2e/auth.spec.ts
|
|
import { test, expect } from '@playwright/test'
|
|
|
|
test('user can login with valid credentials', async ({ page }) => {
|
|
const email = process.env.TEST_USER_EMAIL!
|
|
const password = process.env.TEST_USER_PASSWORD!
|
|
|
|
await page.goto('http://localhost:3000/auth')
|
|
await page.fill('input[type="email"]', email)
|
|
await page.fill('input[type="password"]', password)
|
|
await page.click('button[type="submit"]')
|
|
|
|
// Verify successful login
|
|
await expect(page).toHaveURL('http://localhost:3000/')
|
|
await expect(page.locator('text=Willkommen zurück')).toBeVisible()
|
|
})
|
|
```
|
|
|
|
**Run Playwright tests:**
|
|
```bash
|
|
pnpm test:e2e
|
|
```
|
|
|
|
### 3. Vitest Integration Tests
|
|
|
|
Vitest tests use these credentials for API endpoint testing.
|
|
|
|
**Example test:**
|
|
```typescript
|
|
// tests/integration/auth.test.ts
|
|
import { describe, it, expect } from 'vitest'
|
|
import { setup, $fetch } from '@nuxt/test-utils'
|
|
|
|
describe('Authentication API', async () => {
|
|
await setup()
|
|
|
|
it('POST /api/auth/login - successful login', async () => {
|
|
const response = await $fetch('/api/auth/login', {
|
|
method: 'POST',
|
|
body: {
|
|
email: process.env.TEST_USER_EMAIL,
|
|
password: process.env.TEST_USER_PASSWORD,
|
|
},
|
|
})
|
|
|
|
expect(response.success).toBe(true)
|
|
})
|
|
})
|
|
```
|
|
|
|
**Run Vitest tests:**
|
|
```bash
|
|
pnpm test
|
|
```
|
|
|
|
---
|
|
|
|
## Test Data
|
|
|
|
### Test Products (Mock Data for Development)
|
|
|
|
For local development and testing, you can use these mock product IDs:
|
|
|
|
```typescript
|
|
// Mock Makerspace Annual Pass
|
|
{
|
|
navProductId: 'MAK-001',
|
|
name: 'Makerspace Jahreskarte',
|
|
description: 'Unbegrenzter Zugang zum Makerspace für 1 Jahr',
|
|
price: 120.00,
|
|
category: 'annual-pass',
|
|
stock: 100,
|
|
}
|
|
```
|
|
|
|
### Test Orders (Mock Data)
|
|
|
|
```typescript
|
|
// Mock completed order
|
|
{
|
|
orderNumber: 'TEST-2025-0001',
|
|
userId: '...',
|
|
status: 'completed',
|
|
totalAmount: 120.00,
|
|
paymentMethod: 'paypal',
|
|
paymentId: 'PAYPAL-TEST-12345',
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Testing Workflows
|
|
|
|
### Complete Checkout Flow (E2E)
|
|
|
|
1. **Login** with test credentials
|
|
2. **Browse products** and add to cart
|
|
3. **Proceed to checkout**
|
|
4. **Fill billing address** (pre-filled from test user profile)
|
|
5. **Complete PayPal payment** (sandbox)
|
|
6. **Verify order creation** in database
|
|
7. **Verify order submission** to X-API (staging)
|
|
|
|
### Authentication Flow (Integration)
|
|
|
|
1. **Register new user** via Cidaas API (staging)
|
|
2. **Verify email** (manual step in staging)
|
|
3. **Login** with new credentials
|
|
4. **Create session** and verify JWT token
|
|
5. **Access protected endpoints** with session
|
|
6. **Logout** and verify session cleared
|
|
|
|
---
|
|
|
|
## CI/CD Integration
|
|
|
|
### GitLab CI Environment Variables
|
|
|
|
Add these secrets to GitLab CI/CD settings:
|
|
|
|
- `TEST_USER_EMAIL` (Protected, Masked)
|
|
- `TEST_USER_PASSWORD` (Protected, Masked)
|
|
|
|
**GitLab CI configuration:**
|
|
```yaml
|
|
test:
|
|
stage: test
|
|
script:
|
|
- pnpm install
|
|
- pnpm test
|
|
- pnpm test:e2e
|
|
variables:
|
|
TEST_USER_EMAIL: $TEST_USER_EMAIL
|
|
TEST_USER_PASSWORD: $TEST_USER_PASSWORD
|
|
```
|
|
|
|
---
|
|
|
|
## Security Best Practices
|
|
|
|
### ✅ Do's
|
|
- Use test credentials **only** in staging environment
|
|
- Store credentials in environment variables (`.env`), never hardcode
|
|
- Use separate test user accounts (not real user accounts)
|
|
- Rotate test credentials regularly
|
|
- Add test credentials to GitLab CI/CD as protected, masked variables
|
|
|
|
### ❌ Don'ts
|
|
- **Never** commit `.env` file to git (already in `.gitignore`)
|
|
- **Never** use test credentials in production environment
|
|
- **Never** use real user credentials for automated testing
|
|
- **Never** hardcode credentials in test files
|
|
- **Never** share test credentials publicly (GitHub, Slack, etc.)
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
### Test User Login Fails
|
|
|
|
**Problem:** Automated tests fail with "Invalid credentials" error
|
|
|
|
**Solutions:**
|
|
1. Verify `TEST_USER_EMAIL` and `TEST_USER_PASSWORD` are set in `.env`
|
|
2. Check Cidaas staging environment is accessible
|
|
3. Verify test user account still exists in Cidaas
|
|
4. Check if password was changed in Cidaas Admin Panel
|
|
|
|
### Session Tests Fail
|
|
|
|
**Problem:** Session-related tests fail unexpectedly
|
|
|
|
**Solutions:**
|
|
1. Verify `NUXT_SESSION_PASSWORD` is set in `.env`
|
|
2. Clear Redis cache: `docker-compose -f docker-compose.dev.yml restart redis`
|
|
3. Check session expiration settings in `nuxt.config.ts`
|
|
|
|
### E2E Tests Time Out
|
|
|
|
**Problem:** Playwright tests time out waiting for elements
|
|
|
|
**Solutions:**
|
|
1. Increase timeout in `playwright.config.ts`
|
|
2. Check if dev server is running (`pnpm dev`)
|
|
3. Verify network connectivity to staging environment
|
|
4. Check browser console for JavaScript errors
|
|
|
|
---
|
|
|
|
## Related Documentation
|
|
|
|
- [CIDAAS_INTEGRATION.md](./CIDAAS_INTEGRATION.md) - Authentication implementation details
|
|
- [ARCHITECTURE.md](./ARCHITECTURE.md) - System architecture and data flows
|
|
- [PRD.md](./PRD.md) - Product requirements and user stories
|
|
- Main README: [../tests/README.md](../tests/README.md) - Test suite overview
|
|
|
|
---
|
|
|
|
**Last Updated:** 2025-11-01
|