Unit testing AuthService

This commit is contained in:
2025-10-18 12:26:55 +02:00
commit 79a31ecf40
26 changed files with 3467 additions and 0 deletions

View File

@@ -0,0 +1,87 @@
# tests/persistence/test_sqlite_token.py
from datetime import datetime, timedelta
from my_auth.models.token import TokenData
from my_auth.persistence.sqlite import SQLiteTokenRepository
def test_i_can_save_and_retrieve_token(token_repository: SQLiteTokenRepository,
test_token_data: TokenData):
"""Verifies token saving and successful retrieval by token string and type."""
# 1. Save Token
token_repository.save_token(test_token_data)
# 2. Retrieve Token
retrieved_token = token_repository.get_token(test_token_data.token, test_token_data.token_type)
# Assertions
assert retrieved_token is not None
assert retrieved_token.token == test_token_data.token
assert retrieved_token.user_id == test_token_data.user_id
assert retrieved_token.is_revoked is False
assert retrieved_token.token_type == test_token_data.token_type
def test_i_can_revoke_token(token_repository: SQLiteTokenRepository,
test_token_data: TokenData):
"""Verifies a token can be revoked and its revoked status is updated."""
# Setup: Save the token
token_repository.save_token(test_token_data)
# 1. Revoke the token
was_revoked = token_repository.revoke_token(test_token_data.token)
assert was_revoked is True
# 2. Retrieve and check status
revoked_token = token_repository.get_token(test_token_data.token, test_token_data.token_type)
assert revoked_token is not None
assert revoked_token.is_revoked is True
# 3. Attempt to revoke a non-existent token
was_revoked_again = token_repository.revoke_token("non_existent_token")
assert was_revoked_again is False
def test_i_can_use_is_token_valid_for_valid_token(token_repository: SQLiteTokenRepository,
test_token_data: TokenData):
"""Verifies the convenience method returns True for a fresh, unexpired token."""
token_repository.save_token(test_token_data)
is_valid = token_repository.is_token_valid(test_token_data.token, test_token_data.token_type)
assert is_valid is True
is_valid = token_repository.is_token_valid("non_existent_token", test_token_data.token_type)
assert is_valid is False
def test_i_can_use_is_token_valid_for_revoked_token(token_repository: SQLiteTokenRepository,
test_token_data: TokenData):
"""Verifies is_token_valid returns False for a token marked as revoked."""
token_repository.save_token(test_token_data)
token_repository.revoke_token(test_token_data.token)
is_valid = token_repository.is_token_valid(test_token_data.token, test_token_data.token_type)
assert is_valid is False
def test_i_can_use_is_token_valid_for_expired_token(token_repository: SQLiteTokenRepository):
"""Verifies is_token_valid returns False for a token whose expiration is in the past."""
expired_token_data = TokenData(
token="expired_token_test",
token_type="password_reset",
user_id="user_id_expired",
expires_at=datetime.now() - timedelta(hours=1), # Set expiration to 1 hour ago
is_revoked=False,
created_at=datetime.now() - timedelta(hours=2)
)
token_repository.save_token(expired_token_data)
is_valid = token_repository.is_token_valid(expired_token_data.token, expired_token_data.token_type)
assert is_valid is False