test(session-search): guard projected enrichment
This commit is contained in:
parent
ffb54305c4
commit
f795d542f6
|
|
@ -677,9 +677,45 @@ class TestFTS5Search:
|
|||
]
|
||||
assert all("context" in row and row["context"] for row in default)
|
||||
|
||||
def test_search_projection_skips_context_enrichment_queries(self, db):
|
||||
db.create_session(session_id="s1", source="cli")
|
||||
db.append_message("s1", role="user", content="before")
|
||||
db.append_message("s1", role="assistant", content="projectionneedle")
|
||||
db.append_message("s1", role="user", content="after")
|
||||
|
||||
statements = []
|
||||
read_conn = db._get_read_conn() or db._conn
|
||||
traced_connections = [db._conn]
|
||||
if read_conn is not db._conn:
|
||||
traced_connections.append(read_conn)
|
||||
for conn in traced_connections:
|
||||
conn.set_trace_callback(statements.append)
|
||||
|
||||
def context_query_count():
|
||||
normalized = (" ".join(sql.upper().split()) for sql in statements)
|
||||
return sum("WITH TARGET AS (" in sql for sql in normalized)
|
||||
|
||||
try:
|
||||
projected = db.search_messages(
|
||||
"projectionneedle", fields=("session_id", "snippet")
|
||||
)
|
||||
assert len(projected) == 1
|
||||
assert context_query_count() == 0
|
||||
|
||||
full = db.search_messages(
|
||||
"projectionneedle", fields=("session_id", "context")
|
||||
)
|
||||
assert len(full) == 1
|
||||
assert full[0]["context"]
|
||||
assert context_query_count() == 1
|
||||
|
||||
default = db.search_messages("projectionneedle")
|
||||
assert len(default) == 1
|
||||
assert default[0]["context"]
|
||||
assert context_query_count() == 2
|
||||
finally:
|
||||
for conn in traced_connections:
|
||||
conn.set_trace_callback(None)
|
||||
|
||||
def test_sanitize_fts5_query_strips_dangerous_chars(self):
|
||||
"""Unit test for _sanitize_fts5_query static method."""
|
||||
|
|
|
|||
Loading…
Reference in New Issue