You've already forked RekomenciBackend
feat(): unit tests for domain entities and basic invariants
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
from datetime import UTC, datetime, timedelta
|
||||
from uuid import UUID, uuid4
|
||||
|
||||
import pytest
|
||||
|
||||
from template_project.application.access_token.entity import AccessToken
|
||||
from template_project.application.access_token.errors import AccessTokenExpiredError
|
||||
from template_project.application.user.entity import UserId
|
||||
|
||||
|
||||
def test_access_token_factory_creates_valid_token() -> None:
|
||||
user_id = UserId(uuid4())
|
||||
expires_in = timedelta(days=7)
|
||||
|
||||
token = AccessToken.factory(
|
||||
user_id=user_id,
|
||||
expires_in=expires_in,
|
||||
)
|
||||
|
||||
assert isinstance(token.id, UUID)
|
||||
assert token.user_id == user_id
|
||||
assert token.revoked is False
|
||||
assert token.expires_in > datetime.now(tz=UTC)
|
||||
assert token.deleted_at is None
|
||||
assert token.created_at.tzinfo == UTC
|
||||
|
||||
|
||||
def test_access_token_expired_predicate_not_expired() -> None:
|
||||
user_id = UserId(uuid4())
|
||||
token = AccessToken.factory(
|
||||
user_id=user_id,
|
||||
expires_in=timedelta(days=7),
|
||||
)
|
||||
|
||||
assert not token.expired_predicate()
|
||||
|
||||
|
||||
def test_access_token_expired_predicate_expired_by_time() -> None:
|
||||
user_id = UserId(uuid4())
|
||||
token = AccessToken.factory(
|
||||
user_id=user_id,
|
||||
expires_in=timedelta(days=-1),
|
||||
)
|
||||
|
||||
assert token.expired_predicate()
|
||||
|
||||
|
||||
def test_access_token_expired_predicate_revoked() -> None:
|
||||
user_id = UserId(uuid4())
|
||||
token = AccessToken.factory(
|
||||
user_id=user_id,
|
||||
expires_in=timedelta(days=7),
|
||||
)
|
||||
token.revoke()
|
||||
|
||||
assert token.expired_predicate()
|
||||
|
||||
|
||||
def test_access_token_ensure_expired_raises_when_expired() -> None:
|
||||
user_id = UserId(uuid4())
|
||||
token = AccessToken.factory(
|
||||
user_id=user_id,
|
||||
expires_in=timedelta(days=-1),
|
||||
)
|
||||
|
||||
with pytest.raises(AccessTokenExpiredError):
|
||||
token.ensure_expired()
|
||||
|
||||
|
||||
def test_access_token_ensure_expired_raises_when_revoked() -> None:
|
||||
user_id = UserId(uuid4())
|
||||
token = AccessToken.factory(
|
||||
user_id=user_id,
|
||||
expires_in=timedelta(days=7),
|
||||
)
|
||||
token.revoke()
|
||||
|
||||
with pytest.raises(AccessTokenExpiredError):
|
||||
token.ensure_expired()
|
||||
|
||||
|
||||
def test_access_token_revoke() -> None:
|
||||
user_id = UserId(uuid4())
|
||||
token = AccessToken.factory(
|
||||
user_id=user_id,
|
||||
expires_in=timedelta(days=7),
|
||||
)
|
||||
|
||||
token.revoke()
|
||||
|
||||
assert token.revoked is True
|
||||
assert token.deleted_at is not None
|
||||
assert token.deleted_at.tzinfo == UTC
|
||||
Reference in New Issue
Block a user