Implement full ORM. Various other cleanup.

This commit is contained in:
Leo Vasanko
2026-01-28 17:19:56 +00:00
parent dcc89181b7
commit b79f367495
19 changed files with 377 additions and 327 deletions
+3 -9
View File
@@ -38,7 +38,7 @@ from paskia.db import (
create_user,
)
from paskia.db.jsonl import JsonlStore
from paskia.db.operations import DB, _create_token
from paskia.db.operations import DB
from paskia.fastapi.mainapp import app
from paskia.fastapi.session import AUTH_COOKIE_NAME
from paskia.sansio import Passkey
@@ -193,17 +193,14 @@ async def session_token(
test_db: DB, test_user: User, test_credential: Credential
) -> str:
"""Create a session for the admin user and return the token."""
token = _create_token()
create_session(
return create_session(
user_uuid=test_user.uuid,
credential_uuid=test_credential.uuid,
key=token,
host="localhost:4401",
ip="127.0.0.1",
user_agent="pytest",
expiry=expires(),
)
return token
@pytest_asyncio.fixture(scope="function")
@@ -211,17 +208,14 @@ async def regular_session_token(
test_db: DB, regular_user: User, regular_credential: Credential
) -> str:
"""Create a session for a regular user and return the token."""
token = _create_token()
create_session(
return create_session(
user_uuid=regular_user.uuid,
credential_uuid=regular_credential.uuid,
key=token,
host="localhost:4401",
ip="127.0.0.1",
user_agent="pytest",
expiry=expires(),
)
return token
@pytest_asyncio.fixture(scope="function")
+8 -15
View File
@@ -12,7 +12,8 @@ These tests cover:
"""
import os
from datetime import datetime, timezone
import secrets
from datetime import UTC, datetime
from uuid import UUID
import httpx
@@ -36,7 +37,7 @@ from paskia.db import (
create_session,
create_user,
)
from paskia.db.operations import DB, _create_token
from paskia.db.operations import DB
from tests.conftest import auth_headers
# -------------------- Additional Fixtures --------------------
@@ -97,17 +98,14 @@ async def second_org_session_token(
test_db: DB, second_org_user: User, second_org_credential: Credential
) -> str:
"""Create a session for the second org admin user."""
token = _create_token()
create_session(
return create_session(
user_uuid=second_org_user.uuid,
credential_uuid=second_org_credential.uuid,
key=token,
host="localhost:4401",
ip="127.0.0.1",
user_agent="pytest",
expiry=expires(),
)
return token
@pytest_asyncio.fixture(scope="function")
@@ -132,7 +130,7 @@ async def org_admin_user(test_db: DB, org_admin_role: Role) -> User:
role=org_admin_role.uuid,
)
user.visits = 5
user.last_seen = datetime.now(timezone.utc)
user.last_seen = datetime.now(UTC)
create_user(user)
return user
@@ -157,17 +155,14 @@ async def org_admin_session_token(
test_db: DB, org_admin_user: User, org_admin_credential: Credential
) -> str:
"""Create a session for the org admin user."""
token = _create_token()
create_session(
return create_session(
user_uuid=org_admin_user.uuid,
credential_uuid=org_admin_credential.uuid,
key=token,
host="localhost:4401",
ip="127.0.0.1",
user_agent="pytest",
expiry=expires(),
)
return token
@pytest_asyncio.fixture(scope="function")
@@ -1170,11 +1165,9 @@ class TestAdminSessions:
):
"""Admin should be able to delete a user's session."""
# Create an additional session to delete
extra_token = _create_token()
create_session(
extra_token = create_session(
user_uuid=test_user.uuid,
credential_uuid=test_credential.uuid,
key=extra_token,
host="other.host:4401",
ip="192.168.1.1",
user_agent="other-agent",
@@ -1255,7 +1248,7 @@ class TestAdminSessions:
):
"""Deleting non-existent session should fail."""
# Use a valid format but non-existent key
fake_token = _create_token()
fake_token = secrets.token_urlsafe(12)
response = await client.delete(
f"/auth/api/admin/orgs/{test_org.uuid}/users/{test_user.uuid}/sessions/{fake_token}",
headers={**auth_headers(session_token), "Host": "localhost:4401"},
+5 -7
View File
@@ -10,14 +10,14 @@ These tests cover:
- /auth/api/set-session - Set session from bearer token
"""
from datetime import datetime, timedelta, timezone
import secrets
from datetime import UTC, datetime, timedelta
import httpx
import pytest
from paskia.authsession import EXPIRES
from paskia.db import create_session, delete_session
from paskia.db.operations import _create_token
from paskia.util.passphrase import generate
from tests.conftest import auth_headers
@@ -503,7 +503,7 @@ class TestValidateSessionRefresh:
"""Validate should handle session expiry during refresh attempt."""
# Create a token but don't create a session for it
token = _create_token()
token = secrets.token_urlsafe(12)
response = await client.post(
"/auth/api/validate",
headers={**auth_headers(token), "Host": "localhost:4401"},
@@ -522,12 +522,10 @@ class TestValidateSessionRefresh:
"""Validate should return 401 if session disappears during refresh."""
# Create a session with an old expiry time to trigger refresh
token = _create_token()
old_expiry = datetime.now(timezone.utc) + EXPIRES - timedelta(minutes=10)
create_session(
old_expiry = datetime.now(UTC) + EXPIRES - timedelta(minutes=10)
token = create_session(
user_uuid=test_user.uuid,
credential_uuid=test_credential.uuid,
key=token,
host="localhost:4401",
ip="127.0.0.1",
user_agent="pytest",