Made-with: Cursor
2.6 KiB
Security Blackbox Tests
Task: AZ-194_security_tests Name: Security Blackbox Tests Description: Implement security tests: unauthenticated access, non-admin access, password exposure, expired JWT, encryption uniqueness, disabled user Complexity: 3 points Dependencies: AZ-189_test_infrastructure, AZ-190_auth_tests Component: Blackbox Tests Tracker: AZ-194 Epic: AZ-188
Problem
Authorization boundaries and security properties have no automated verification. A misconfigured endpoint could expose data or allow unauthorized access.
Outcome
- All protected endpoints reject unauthenticated requests (NFT-SEC-01)
- Non-admin users cannot access admin endpoints (NFT-SEC-02)
- Password hashes are not exposed in API responses (NFT-SEC-03)
- Expired JWT tokens are rejected (NFT-SEC-04)
- Different users get different encrypted content (NFT-SEC-05)
- Disabled users cannot login (NFT-SEC-06)
Scope
Included
- Authentication boundary tests (all protected endpoints)
- Authorization boundary tests (admin-only endpoints)
- Data exposure tests (password hash)
- Token expiration tests
- Encryption uniqueness verification
- Disabled account access
Excluded
- CORS testing (browser-enforced)
- SQL injection (covered by ORM parameterization)
Acceptance Criteria
AC-1: Unauthenticated access blocked Given no JWT token When any protected endpoint is called Then HTTP 401
AC-2: Non-admin blocked from admin endpoints Given Operator-role JWT When admin endpoints (POST /users, PUT /users/role, DELETE /users) are called Then HTTP 403
AC-3: No password in response Given ApiAdmin JWT When GET /users is called Then no user object contains passwordHash or password field
AC-4: Expired token rejected Given a JWT with exp in the past When any protected endpoint is called Then HTTP 401
AC-5: Per-user encryption Given two users with different credentials and hardware When both download the same resource Then encrypted outputs differ
AC-6: Disabled user blocked Given a disabled user account When POST /login is called Then login fails (HTTP 409 or 403)
Blackbox Tests
| AC Ref | Initial Data/Conditions | What to Test | Expected Behavior | NFR References |
|---|---|---|---|---|
| AC-1 | No JWT | 6 protected endpoints | All HTTP 401 | — |
| AC-2 | Operator JWT | 4 admin endpoints | All HTTP 403 | — |
| AC-3 | Admin JWT | GET /users response | No password fields | — |
| AC-4 | Expired JWT | GET /users | HTTP 401 | — |
| AC-5 | Two users, same file | Download both | Different ciphertext | — |
| AC-6 | Disabled user | POST /login | Rejected | — |