Spaces:
Sleeping
Sleeping
| # Auth-Gated App Testing Playbook | |
| ## Step 1: Create Test User & Session | |
| ```bash | |
| mongosh --eval " | |
| use('test_database'); | |
| var userId = 'test-user-' + Date.now(); | |
| var sessionToken = 'test_session_' + Date.now(); | |
| db.users.insertOne({ | |
| user_id: userId, | |
| email: 'test.user.' + Date.now() + '@example.com', | |
| name: 'Test User', | |
| picture: 'https://via.placeholder.com/150', | |
| auth_provider: 'google', | |
| created_at: new Date() | |
| }); | |
| db.user_sessions.insertOne({ | |
| user_id: userId, | |
| session_token: sessionToken, | |
| expires_at: new Date(Date.now() + 7*24*60*60*1000), | |
| created_at: new Date() | |
| }); | |
| print('Session token: ' + sessionToken); | |
| print('User ID: ' + userId); | |
| " | |
| ``` | |
| ## Step 2: Test Backend API | |
| ```bash | |
| curl -X GET "$REACT_APP_BACKEND_URL/api/auth/me" \ | |
| -H "Authorization: Bearer YOUR_SESSION_TOKEN" | |
| curl -X GET "$REACT_APP_BACKEND_URL/api/conversations" \ | |
| -H "Authorization: Bearer YOUR_SESSION_TOKEN" | |
| ``` | |
| ## Step 3: Browser Testing | |
| ```js | |
| await page.context.add_cookies([{ | |
| "name": "session_token", | |
| "value": "YOUR_SESSION_TOKEN", | |
| "domain": "your-app.com", | |
| "path": "/", | |
| "httpOnly": true, | |
| "secure": true, | |
| "sameSite": "None" | |
| }]); | |
| await page.goto("https://your-app.com/chat"); | |
| ``` | |
| ## Checklist | |
| - User document has `user_id` field | |
| - Session `user_id` matches user's `user_id` | |
| - Queries use `{"_id": 0}` projection | |
| - `/api/auth/me` returns user data with cookie set | |
| - `/chat` route loads when authenticated | |