fix: remove unit tests redundant with e2e, fix test DB isolation
Remove 7 test files fully covered by e2e tests (admin, account, models, API routes, integration MFA/OIDC, notifications). Trim 5 more files to keep only edge cases not reachable via e2e. Fix conftest to replace wiregui.db engine/session at import time so all code uses the test database. Use session-scoped tables with per-test savepoint isolation to prevent data leaking between tests.
This commit is contained in:
parent
a9f62d5caf
commit
a012635dff
15 changed files with 153 additions and 2006 deletions
|
|
@ -2,62 +2,59 @@
|
|||
|
||||
import pytest
|
||||
|
||||
from wiregui.db import async_session
|
||||
from wiregui.models.configuration import Configuration
|
||||
from wiregui.utils.server_key import get_server_public_key
|
||||
from sqlmodel import select
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
async def _snapshot_config():
|
||||
"""Snapshot and restore server_public_key around each test."""
|
||||
async with async_session() as session:
|
||||
c = (await session.execute(select(Configuration).limit(1))).scalar_one_or_none()
|
||||
orig = c.server_public_key if c else None
|
||||
cid = c.id if c else None
|
||||
|
||||
yield
|
||||
|
||||
if cid:
|
||||
async with async_session() as session:
|
||||
c = await session.get(Configuration, cid)
|
||||
if c:
|
||||
c.server_public_key = orig
|
||||
session.add(c)
|
||||
await session.commit()
|
||||
|
||||
|
||||
async def test_get_server_public_key_returns_key():
|
||||
async def test_get_server_public_key_returns_key(session, monkeypatch):
|
||||
"""Returns the public key when configured."""
|
||||
async with async_session() as session:
|
||||
c = (await session.execute(select(Configuration).limit(1))).scalar_one_or_none()
|
||||
c.server_public_key = "TestServerPubKey123456789012345678901234w="
|
||||
session.add(c)
|
||||
await session.commit()
|
||||
from contextlib import asynccontextmanager
|
||||
|
||||
@asynccontextmanager
|
||||
async def mock_session():
|
||||
yield session
|
||||
|
||||
monkeypatch.setattr("wiregui.utils.server_key.async_session", mock_session)
|
||||
|
||||
c = Configuration(server_public_key="TestServerPubKey123456789012345678901234w=")
|
||||
session.add(c)
|
||||
await session.flush()
|
||||
|
||||
result = await get_server_public_key()
|
||||
assert result == "TestServerPubKey123456789012345678901234w="
|
||||
|
||||
|
||||
async def test_get_server_public_key_raises_when_missing():
|
||||
async def test_get_server_public_key_raises_when_missing(session, monkeypatch):
|
||||
"""Raises RuntimeError when server_public_key is None."""
|
||||
async with async_session() as session:
|
||||
c = (await session.execute(select(Configuration).limit(1))).scalar_one_or_none()
|
||||
c.server_public_key = None
|
||||
session.add(c)
|
||||
await session.commit()
|
||||
from contextlib import asynccontextmanager
|
||||
|
||||
@asynccontextmanager
|
||||
async def mock_session():
|
||||
yield session
|
||||
|
||||
monkeypatch.setattr("wiregui.utils.server_key.async_session", mock_session)
|
||||
|
||||
c = Configuration(server_public_key=None)
|
||||
session.add(c)
|
||||
await session.flush()
|
||||
|
||||
with pytest.raises(RuntimeError, match="not configured"):
|
||||
await get_server_public_key()
|
||||
|
||||
|
||||
async def test_get_server_public_key_raises_when_empty_string():
|
||||
async def test_get_server_public_key_raises_when_empty_string(session, monkeypatch):
|
||||
"""Raises RuntimeError when server_public_key is empty string."""
|
||||
async with async_session() as session:
|
||||
c = (await session.execute(select(Configuration).limit(1))).scalar_one_or_none()
|
||||
c.server_public_key = ""
|
||||
session.add(c)
|
||||
await session.commit()
|
||||
from contextlib import asynccontextmanager
|
||||
|
||||
@asynccontextmanager
|
||||
async def mock_session():
|
||||
yield session
|
||||
|
||||
monkeypatch.setattr("wiregui.utils.server_key.async_session", mock_session)
|
||||
|
||||
c = Configuration(server_public_key="")
|
||||
session.add(c)
|
||||
await session.flush()
|
||||
|
||||
with pytest.raises(RuntimeError, match="not configured"):
|
||||
await get_server_public_key()
|
||||
await get_server_public_key()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue