32 lines
1.2 KiB
Python
32 lines
1.2 KiB
Python
from datetime import datetime, timezone
|
|
|
|
import pytest
|
|
|
|
from fooder.context import AuthContextDependency
|
|
from fooder.exc import Unauthorized
|
|
from fooder.utils.jwt import AccessToken, RefreshToken
|
|
|
|
NOW = datetime.now(timezone.utc)
|
|
|
|
|
|
async def test_auth_context_valid_token_returns_correct_user(db_session, user):
|
|
token = AccessToken(exp=AccessToken.calculate_exp(NOW), sub=user.id)
|
|
ctx = await AuthContextDependency()(token=token.encode(), session=db_session)
|
|
assert ctx.user.id == user.id
|
|
|
|
|
|
async def test_auth_context_invalid_token_raises(db_session):
|
|
with pytest.raises(Unauthorized):
|
|
await AuthContextDependency()(token="bad-token", session=db_session)
|
|
|
|
|
|
async def test_auth_context_refresh_token_raises(db_session, user):
|
|
token = RefreshToken(exp=RefreshToken.calculate_exp(NOW), sub=user.id)
|
|
with pytest.raises(Unauthorized):
|
|
await AuthContextDependency()(token=token.encode(), session=db_session)
|
|
|
|
|
|
async def test_auth_context_unknown_user_raises(db_session):
|
|
token = AccessToken(exp=AccessToken.calculate_exp(NOW), sub=99999)
|
|
with pytest.raises(Unauthorized):
|
|
await AuthContextDependency()(token=token.encode(), session=db_session)
|