Files
wehub-resource-sync 1443d3fdf9
Ruff Format Check / Ruff Format & Lint (push) Failing after 7m39s
Deploy VitePress site to Pages / build (push) Failing after 9m11s
Deploy VitePress site to Pages / Deploy (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:32:26 +08:00

67 lines
2.0 KiB
Python

from __future__ import annotations
import pytest
import pytest_asyncio
from sqlalchemy.ext.asyncio import async_sessionmaker, create_async_engine
from server.routers.user_router import get_logged_in_user, get_user_config, update_user_config
from yuxi.config import UserConfigSchema
from yuxi.storage.postgres.models_business import Base, Department, User
pytestmark = [pytest.mark.asyncio, pytest.mark.unit]
@pytest_asyncio.fixture()
async def session():
engine = create_async_engine("sqlite+aiosqlite:///:memory:")
async with engine.begin() as conn:
await conn.run_sync(Base.metadata.create_all)
factory = async_sessionmaker(engine, expire_on_commit=False)
async with factory() as db:
department = Department(name="User Config Dept")
user_a = User(
username="User A",
uid="user_a",
password_hash="$argon2id$placeholder",
role="user",
department=department,
)
user_b = User(
username="User B",
uid="user_b",
password_hash="$argon2id$placeholder",
role="user",
department=department,
)
db.add_all([department, user_a, user_b])
await db.commit()
for user in [user_a, user_b]:
await db.refresh(user)
yield db, user_a, user_b
await engine.dispose()
async def test_user_config_routes_scope_to_current_user(session):
db, user_a, user_b = session
own_config = await update_user_config(
UserConfigSchema(enable_memory=True),
current_user=user_a,
db=db,
)
other_config = await get_user_config(current_user=user_b, db=db)
assert own_config["enable_memory"] is True
assert other_config["enable_memory"] is False
async def test_user_config_allows_logged_in_user_without_department():
user = User(
username="No Dept User",
uid="no_dept_user",
password_hash="$argon2id$placeholder",
role="user",
)
assert await get_logged_in_user(user) is user