mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-10-14 19:02:22 +02:00
* feat: add Notes and Todos as agent chat context - Send selected Note/Todo IDs from the Notes UI - Load selected notes with owner scoping in chat routes - Format note content and checklist items for the model - Inject selected notes as untrusted chat context - Add a selected-context indicator beside Shell Access - Keep selected context associated with the active chat session * Improved selected notes context handling and discouragin redundant note lookup and permission requests * Fix selected notes UI when switching chats * fix(notes): harden selected context lifecycle and validation --------- Co-authored-by: Alexandre Teixeira <111787685+alteixeira20@users.noreply.github.com>
29 lines
837 B
Python
29 lines
837 B
Python
"""Regression tests for untrusted selected-note ID parsing."""
|
|
import json
|
|
import pytest
|
|
from fastapi import HTTPException
|
|
from routes.chat_routes import _parse_selected_note_ids
|
|
|
|
|
|
@pytest.mark.parametrize("raw,expected", [
|
|
(None, []),
|
|
("", []),
|
|
("[]", []),
|
|
('["one", "two", "one"]', ["one", "two"]),
|
|
])
|
|
def test_selected_note_ids_valid(raw, expected):
|
|
assert _parse_selected_note_ids(raw) == expected
|
|
|
|
|
|
@pytest.mark.parametrize("raw", [
|
|
"42", "true", "null", '{"id":"a"}',
|
|
'["one", 5]', '["one", null]', '["one", false]',
|
|
'[""]', '[" "]', '["one", {}]',
|
|
"not json", json.dumps(["a"] * 51),
|
|
json.dumps(["a" * 129]), " " * 8193,
|
|
])
|
|
def test_selected_note_ids_rejected(raw):
|
|
with pytest.raises(HTTPException) as exc:
|
|
_parse_selected_note_ids(raw)
|
|
assert exc.value.status_code == 400
|