mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-08-05 02:45:28 +00:00
Some checks failed
CI / Focused test guidance (report-only) (push) Has been cancelled
CI / Python syntax (compileall) (push) Has been cancelled
CI / JS syntax (node --check) (push) Has been cancelled
CI / Python tests (pytest) (push) Has been cancelled
CodeQL / Analyze (actions) (push) Has been cancelled
CodeQL / Analyze (javascript-typescript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Container scan / hadolint (Dockerfile lint) (push) Has been cancelled
Container scan (Trivy) / Trivy (image scan, advisory) (push) Has been cancelled
Container scan (Trivy) / Trivy (image scan + SARIF upload) (push) Has been cancelled
Dependency review / dependency-review (PR gate) (push) Has been cancelled
Dependency review / pip-audit (advisory) (push) Has been cancelled
ci / docker publish / build (amd64) (push) Has been cancelled
ci / docker publish / build (arm64) (push) Has been cancelled
Secret scan / gitleaks (push) Has been cancelled
Workflow security / actionlint (push) Has been cancelled
Workflow security / zizmor (Actions SAST) (push) Has been cancelled
ci / docker publish / merge manifest + tag (push) Has been cancelled
45 lines
1.9 KiB
Python
45 lines
1.9 KiB
Python
"""Model-assisted route helpers must resolve endpoints with owner scope."""
|
|
|
|
import ast
|
|
from pathlib import Path
|
|
|
|
|
|
def _function_source(path: str, name: str) -> str:
|
|
source = Path(path).read_text(encoding="utf-8")
|
|
tree = ast.parse(source)
|
|
for node in ast.walk(tree):
|
|
if isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef)) and node.name == name:
|
|
return ast.get_source_segment(source, node) or ""
|
|
raise AssertionError(f"{name} not found in {path}")
|
|
|
|
|
|
def test_document_ai_tidy_resolves_with_owner_scope():
|
|
body = _function_source("routes/document_routes.py", "ai_tidy_documents")
|
|
assert "resolve_task_endpoint(owner=user or None)" in body
|
|
assert 'resolve_endpoint("default", owner=user or None)' in body
|
|
|
|
|
|
def test_calendar_quick_parse_resolves_with_owner_scope():
|
|
body = _function_source("routes/calendar_routes.py", "quick_parse")
|
|
assert "owner = _require_user(request)" in body
|
|
assert 'resolve_endpoint("utility", owner=owner or None)' in body
|
|
assert 'resolve_endpoint("default", owner=owner or None)' in body
|
|
|
|
|
|
def test_task_parse_resolves_with_owner_scope():
|
|
body = _function_source("routes/task_routes.py", "parse_task")
|
|
assert "user = _owner(request)" in body
|
|
assert 'resolve_endpoint("utility", owner=user or None)' in body
|
|
assert 'resolve_endpoint("default", owner=user or None)' in body
|
|
|
|
|
|
def test_history_compact_resolves_with_owner_scope():
|
|
body = _function_source("routes/history/history_routes.py", "compact_session")
|
|
assert "owner = effective_user(request)" in body
|
|
assert 'resolve_endpoint("utility", owner=owner or None)' in body
|
|
|
|
|
|
def test_note_reminder_synthesis_resolves_with_owner_scope():
|
|
body = _function_source("routes/note/note_routes.py", "dispatch_reminder")
|
|
assert 'resolve_endpoint("utility", owner=owner or None)' in body
|
|
assert 'resolve_endpoint("default", owner=owner or None)' in body
|