Files
2026-05-31 20:28:57 +02:00

14 KiB

status, phase, source, started, updated
status phase source started updated
diagnosed 02-users-authentication
02-01-SUMMARY.md
02-02-SUMMARY.md
02-03-SUMMARY.md
02-04-SUMMARY.md
02-05-SUMMARY.md
2026-05-31T00:00:00Z 2026-05-31T00:00:00Z

Current Test

[testing complete]

Tests

1. Cold Start Smoke Test

expected: Kill any running server/service. Clear ephemeral state (temp DBs, caches, lock files). Start the application from scratch (docker compose up). Services boot without errors, Alembic migrations (including 0002_add_backup_codes_and_password_must_change) run cleanly, Redis connects, admin bootstrap completes, and a basic API call (GET /api/auth/me → 401) returns a live response. result: pass

2. User Registration

expected: Navigate to /register. Fill in email + password. Password strength bar shows 4 segments as password gets stronger. Submit form. Account is created and you are redirected to login (or logged in). No localStorage/sessionStorage entries for the token. result: pass

3. Login (Email & Password)

expected: Navigate to /login. Enter email and password. On success, you are redirected to the app (or /dashboard). If you try to access a protected route while logged out, you are redirected to /login?redirect=. result: pass

4. Login (TOTP — 3-step flow)

expected: With a TOTP-enrolled account, log in: step 1 = enter password, step 2 = enter 6-digit TOTP code from authenticator app. On correct code, you are signed in. An invalid code shows an error without signing you in. result: issue reported: "I don't see an option to activate or setup a 2FA method." severity: major

5. Login with Backup Code

expected: On the TOTP step of login, click "Use a backup code instead". Enter one of your 10 backup codes. Login succeeds. That backup code cannot be reused on a second attempt. result: blocked blocked_by: prior-phase reason: "Backup codes are issued during TOTP enrollment, which is blocked by the missing 2FA setup option (test 4 issue)"

6. Auth Wall (Route Guard)

expected: While logged out, navigate directly to a protected route (e.g., /account or /admin). You are redirected to /login?redirect=. After logging in, you are sent back to the original destination. result: issue reported: "Yes but I do see the sidebar everytime when I login. I do not want to the sidebar on the login page and I do not want to leak this information of the previous logged in user when noone is logged in." severity: major

7. Logout

expected: Click sign-out (from sidebar or account page). Session is cleared (no more auth), you are redirected to /login. Attempting to use the old access token returns 401. result: issue reported: "I am logged out right now but I still see the sidebar, which is not a desired behaviour." severity: major

8. Change Password

expected: Go to account settings (/account). Enter current password and a new strong password. On success, a confirmation message appears. Logging in again with the new password works; old password is rejected. result: pass

9. TOTP Enrollment

expected: On /account, click to enable 2FA. Step 1: an otpauth:// link (or QR image) and manual secret are shown — open in authenticator app. Step 2: enter the 6-digit code from the app to verify. Step 3: 10 backup codes are displayed in a 2-column grid with a "Copy all" button. An acknowledgment checkbox gates the "Enable 2FA" button. After enabling, account shows 2FA is active. result: issue reported: "I don't see a QR-Code, the security key doesn't work (could be misspelled though) and the link opens Passwords on my Mac which I don't use but I suppose it does work." severity: major

10. Disable TOTP

expected: On /account with 2FA active, click to disable. An inline confirmation block appears ("Disable 2FA? …"). Confirm: 2FA is removed and the enrollment section reappears. Cancel: nothing changes. result: blocked blocked_by: prior-phase reason: "Blocked by test 9 — cannot disable TOTP without first successfully enrolling (secret display issue prevents enrollment)"

11. Password Reset Request

expected: Navigate to /password-reset. Enter any email (even one that doesn't exist). The page always shows a success-like message ("If an account exists…") — no enumeration of valid emails. A real email account receives the reset link. result: pass

12. Password Reset (New Password)

expected: Click the reset link from email. You arrive at a new-password form. Enter a strong new password. On submit, password is updated and you are NOT automatically logged in — you must go to /login and sign in manually with the new password. result: pass

13. Sign Out All Devices

expected: On /account, click "Sign out all devices". A confirmation dialog appears. On confirm, all active sessions are revoked. You are signed out of the current session too and redirected to /login. result: pass

14. Admin: User List

expected: Sign in as an admin. Navigate to /admin. The Users tab shows a table of all registered users with their email, role, and status. Non-admin users do not see the Admin link in the sidebar and get a 403/redirect if they try to visit /admin directly. result: issue reported: "I can navigate to the /admin site as a non-admin user and I do see all tabs but no options or no info is available." severity: major

15. Admin: Create User

expected: In the Admin Users tab, click the create-user form. Fill in email; a temporary password is auto-generated (copy button available). Submit. The new user appears in the table. When that user logs in for the first time with the temp password, they are prompted to change it (password_must_change flow). result: issue reported: "I cannot create a new user. If I try it (as admin user) I get the error code 'HTTP 500' in the creation box." severity: blocker

16. Admin: Deactivate User

expected: In the Admin Users tab, click Deactivate for a user. An inline confirmation row appears showing "Deactivate [email]? They will lose access…" with Keep and Deactivate buttons. Confirming deactivates the user (status changes). The sole admin cannot be deactivated (should show an error). result: pass

17. Admin: Quota Management

expected: Navigate to the Quotas tab in the admin panel. Each user's quota is shown in MB with a usage %. Clicking edit on a row lets you change the limit. If you set the limit below current usage, an amber warning appears but the change is still saved. result: pass

18. Admin: AI Config

expected: Navigate to the AI Config tab in the admin panel. Each user has a provider dropdown and model input. Selecting a different provider and saving shows a brief "Saved" confirmation flash. The change persists on reload. result: pass

Summary

total: 18 passed: 10 issues: 6 pending: 0 skipped: 0 blocked: 2

Gaps