| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- from datetime import datetime, timedelta, timezone
- import pytest
- def test_access_token_contains_only_identity_claims():
- from app.core.system.tokens import decode_access_token, issue_access_token
- token = issue_access_token(
- user_id="01900000-0000-7000-8000-000000000001",
- roles=["viewer"],
- secret="test-secret-that-is-long-enough",
- now=datetime(2026, 7, 16, tzinfo=timezone.utc),
- lifetime=timedelta(minutes=15),
- )
- claims = decode_access_token(
- token,
- secret="test-secret-that-is-long-enough",
- now=datetime(2026, 7, 16, 0, 5, tzinfo=timezone.utc),
- )
- assert set(claims) == {"sub", "roles", "iat", "exp", "jti"}
- assert claims["roles"] == ["viewer"]
- def test_expired_and_tampered_tokens_are_rejected():
- from app.core.system.tokens import TokenError, decode_access_token, issue_access_token
- now = datetime(2026, 7, 16, tzinfo=timezone.utc)
- token = issue_access_token(
- user_id="01900000-0000-7000-8000-000000000001",
- roles=["admin"],
- secret="test-secret-that-is-long-enough",
- now=now,
- lifetime=timedelta(seconds=1),
- )
- with pytest.raises(TokenError):
- decode_access_token(
- token,
- secret="test-secret-that-is-long-enough",
- now=now + timedelta(seconds=2),
- )
- with pytest.raises(TokenError):
- decode_access_token(
- token + "tampered",
- secret="test-secret-that-is-long-enough",
- now=now,
- )
|