Files
odysseus/tests/test_selected_notes_context.py
T
Beyrem WeslatiandAlexandre Teixeira 8feb50e894 feat(notes): attach selected Notes/Todos as Agent context (#6495)
* 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>
2026-10-13 18:57:19 +01:00

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