|
3 | 3 | from server.auth import ( |
4 | 4 | ROLE_ADMIN, |
5 | 5 | ROLE_USER, |
| 6 | + authenticate_request, |
6 | 7 | create_access_token, |
7 | 8 | decode_access_token, |
8 | 9 | extract_bearer_token, |
@@ -50,3 +51,30 @@ def test_user_role_token_supported(): |
50 | 51 | token = create_access_token("bob", ROLE_USER, expires_hours=1) |
51 | 52 | payload = decode_access_token(token) |
52 | 53 | assert payload["role"] == ROLE_USER |
| 54 | + |
| 55 | + |
| 56 | +def test_authenticate_request_accepts_valid_bearer_token(): |
| 57 | + token = create_access_token("alice", ROLE_ADMIN, expires_hours=1) |
| 58 | + |
| 59 | + payload = authenticate_request(f"Bearer {token}") |
| 60 | + |
| 61 | + assert payload["sub"] == "alice" |
| 62 | + assert payload["role"] == ROLE_ADMIN |
| 63 | + |
| 64 | + |
| 65 | +def test_authenticate_request_rejects_missing_bearer_token(): |
| 66 | + try: |
| 67 | + authenticate_request(None) |
| 68 | + assert False, "Expected PermissionError" |
| 69 | + except PermissionError as exc: |
| 70 | + assert "Missing or invalid bearer token" in str(exc) |
| 71 | + |
| 72 | + |
| 73 | +def test_authenticate_request_enforces_required_role(): |
| 74 | + token = create_access_token("bob", ROLE_USER, expires_hours=1) |
| 75 | + |
| 76 | + try: |
| 77 | + authenticate_request(f"Bearer {token}", required_role=ROLE_ADMIN) |
| 78 | + assert False, "Expected PermissionError" |
| 79 | + except PermissionError as exc: |
| 80 | + assert "Role 'admin' is required" in str(exc) |
0 commit comments