mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
This rewrites the entire model base as declarative models. This allows us to more easily customize overlay fields in tables and is more common. This effort also brought some DB violations to light which this commit addresses. Signed-off-by: Kevin Morris <kevr@0cost.org>
67 lines
2.1 KiB
Python
67 lines
2.1 KiB
Python
""" Test our Session model. """
|
|
from datetime import datetime
|
|
from unittest import mock
|
|
|
|
import pytest
|
|
|
|
from aurweb.db import create, query
|
|
from aurweb.models.account_type import AccountType
|
|
from aurweb.models.session import Session, generate_unique_sid
|
|
from aurweb.models.user import User
|
|
from aurweb.testing import setup_test_db
|
|
|
|
account_type = user = session = None
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def setup():
|
|
global account_type, user, session
|
|
|
|
setup_test_db("Users", "Sessions")
|
|
|
|
account_type = query(AccountType,
|
|
AccountType.AccountType == "User").first()
|
|
user = create(User, Username="test", Email="test@example.org",
|
|
ResetKey="testReset", Passwd="testPassword",
|
|
AccountType=account_type)
|
|
session = create(Session, UsersID=user.ID, SessionID="testSession",
|
|
LastUpdateTS=datetime.utcnow().timestamp())
|
|
|
|
|
|
def test_session():
|
|
assert session.SessionID == "testSession"
|
|
assert session.UsersID == user.ID
|
|
|
|
|
|
def test_session_cs():
|
|
""" Test case sensitivity of the database table. """
|
|
user2 = create(User, Username="test2", Email="test2@example.org",
|
|
ResetKey="testReset2", Passwd="testPassword",
|
|
AccountType=account_type)
|
|
session_cs = create(Session, UsersID=user2.ID,
|
|
SessionID="TESTSESSION",
|
|
LastUpdateTS=datetime.utcnow().timestamp())
|
|
assert session_cs.SessionID == "TESTSESSION"
|
|
assert session.SessionID == "testSession"
|
|
|
|
|
|
def test_session_user_association():
|
|
# Make sure that the Session user attribute is correct.
|
|
assert session.User == user
|
|
|
|
|
|
def test_generate_unique_sid():
|
|
# Mock up aurweb.models.session.generate_sid by returning
|
|
# sids[i % 2] from 0 .. n. This will swap between each sid
|
|
# between each call.
|
|
sids = ["testSession", "realSession"]
|
|
i = 0
|
|
|
|
def mock_generate_sid(length):
|
|
nonlocal i
|
|
sid = sids[i % 2]
|
|
i += 1
|
|
return sid
|
|
|
|
with mock.patch("aurweb.util.make_random_string", mock_generate_sid):
|
|
assert generate_unique_sid() == "realSession"
|