query parsing and diagnostics

This commit is contained in:
2026-05-14 02:20:17 +02:00
parent a152968466
commit e5197e15e2
13 changed files with 777 additions and 90 deletions

View File

@@ -110,17 +110,48 @@ def test_runtime_cmis_browser_content_query_relationships_and_changes(cmis_runti
content = runtime.cmis_content_stream("readonly-browser", "cmis:asset:asset-runtime-source", context)
query = runtime.cmis_query("readonly-browser", "SELECT * FROM cmis:document", context)
filtered_query = runtime.cmis_query(
"readonly-browser",
"SELECT * FROM cmis:document WHERE kontextual:sensitivity = 'internal' "
"AND kontextual:topics IN ('integration') ORDER BY cmis:name DESC",
context,
)
like_query = runtime.cmis_query(
"readonly-browser",
"SELECT * FROM cmis:document WHERE cmis:name LIKE 'Runtime %' ORDER BY cmis:name DESC",
context,
)
relationships = runtime.cmis_relationships(
"readonly-browser",
context,
object_id="cmis:asset:asset-runtime-source",
)
target_relationships = runtime.cmis_relationships(
"readonly-browser",
context,
object_id="cmis:asset:asset-runtime-public",
relationship_direction="target",
)
either_relationships = runtime.cmis_relationships(
"readonly-browser",
context,
object_id="cmis:asset:asset-runtime-public",
relationship_direction="either",
)
changes = runtime.cmis_change_log("readonly-browser", context)
assert content["mime_type"] in {"text/plain", "text/markdown"}
assert query["total_num_items"] == 2
assert [item["object_id"] for item in filtered_query["results"]] == [
"cmis:asset:asset-runtime-source"
]
assert [item["name"] for item in like_query["results"]] == ["Runtime Source", "Runtime Public"]
assert relationships["count"] == 1
assert relationships["items"][0]["properties"]["cmis:targetId"] == "cmis:asset:asset-runtime-public"
assert relationships["items"][0]["properties"]["cmis:changeToken"].startswith("relationship:")
assert relationships["items"][0]["properties"]["kontextual:direction"] == "outbound"
assert target_relationships["count"] == 1
assert either_relationships["count"] == 1
assert changes["total_num_items"] >= 3
assert all(change["object_id"] != "cmis:asset:asset-runtime-confidential" for change in changes["changes"])
@@ -137,6 +168,16 @@ def test_runtime_cmis_browser_rejects_unsupported_query_subset(cmis_runtime) ->
assert "Unsupported CMIS query subset" in str(exc_info.value)
with pytest.raises(Exception) as direction_exc:
runtime.cmis_relationships(
"readonly-browser",
context,
object_id="cmis:asset:asset-runtime-source",
relationship_direction="both",
)
assert "Unsupported CMIS relationship direction" in str(direction_exc.value)
def test_runtime_cmis_governed_authoring_allows_selected_mutations(cmis_runtime) -> None:
runtime, context = cmis_runtime
@@ -335,6 +376,10 @@ def test_runtime_cmis_acl_projection_and_redaction(cmis_runtime) -> None:
assert public_acl["is_exact"] is True
assert {entry["principal_id"] for entry in public_acl["aces"]} == {"cmis-runtime", "anyone"}
assert public_acl["policy_authority"] == "kontextual-policy-gateway"
assert public_acl["permission_mapping"]["cmis:read"] == "asset visible through profile policy"
assert {entry["principal_kind"] for entry in public_acl["aces"]} == {"human", "well_known"}
assert {entry["inherited"] for entry in public_acl["aces"]} == {False, True}
assert ["cmis:read", "cmis:write", "cmis:delete"] in [
entry["permissions"] for entry in internal_acl["aces"]
]