mirror of
https://github.com/Xevion/linkpulse.git
synced 2025-12-08 10:07:37 -06:00
Add test_session, add randomizers, move test_app, user/session fixtures
This commit is contained in:
0
backend/linkpulse/tests/__init__.py
Normal file
0
backend/linkpulse/tests/__init__.py
Normal file
15
backend/linkpulse/tests/random.py
Normal file
15
backend/linkpulse/tests/random.py
Normal file
@@ -0,0 +1,15 @@
|
||||
import random
|
||||
import string
|
||||
import time
|
||||
|
||||
|
||||
def epoch() -> int:
|
||||
return int(time.time())
|
||||
|
||||
|
||||
def random_string(length: int = 10) -> str:
|
||||
return "".join(random.choices(string.ascii_lowercase + string.digits, k=length))
|
||||
|
||||
|
||||
def random_email() -> str:
|
||||
return random_string() + str(epoch()) + "@example.com"
|
||||
51
backend/linkpulse/tests/test_session.py
Normal file
51
backend/linkpulse/tests/test_session.py
Normal file
@@ -0,0 +1,51 @@
|
||||
from datetime import timedelta
|
||||
|
||||
import pytest
|
||||
import structlog
|
||||
from linkpulse.models import Session
|
||||
from linkpulse.tests.random import random_string
|
||||
from linkpulse.tests.test_user import user
|
||||
from linkpulse.utilities import utc_now
|
||||
|
||||
logger = structlog.get_logger()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def db():
|
||||
return Session._meta.database
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def session(user):
|
||||
return Session.create(
|
||||
user=user, token=random_string(32), expiry=utc_now() + timedelta(hours=1)
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def expired_session(session):
|
||||
session.expiry = utc_now() - timedelta(hours=1)
|
||||
return session
|
||||
|
||||
|
||||
def test_session_create(session):
|
||||
assert Session.get_or_none(Session.token == session.token) is not None
|
||||
|
||||
|
||||
def test_auto_revoke(db, expired_session):
|
||||
# Expired, but still exists
|
||||
assert Session.get_or_none(Session.token == expired_session.token) is not None
|
||||
# Test revoke=False
|
||||
assert expired_session.is_expired(revoke=False) is True
|
||||
# Test revoke=True
|
||||
assert expired_session.is_expired(revoke=True) is True
|
||||
# Expired, and no longer exists
|
||||
assert Session.get_or_none(Session.token == expired_session.token) is None
|
||||
|
||||
|
||||
def test_expiry_valid(session):
|
||||
assert session.is_expired() is False
|
||||
|
||||
|
||||
def test_expiry_invalid(expired_session):
|
||||
assert expired_session.is_expired() is True
|
||||
10
backend/linkpulse/tests/test_user.py
Normal file
10
backend/linkpulse/tests/test_user.py
Normal file
@@ -0,0 +1,10 @@
|
||||
import pytest
|
||||
from linkpulse.models import User
|
||||
from linkpulse.tests.random import epoch, random_email, random_string
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def user():
|
||||
return User.create(
|
||||
email=random_email(), password_hash=str(epoch()) + random_string(64)
|
||||
)
|
||||
Reference in New Issue
Block a user