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)