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

@@ -129,6 +129,7 @@ def test_cmis_repository_info_and_type_definitions(cmis_client) -> None:
assert repository["repositoryUrl"].endswith("/cmis/readonly-browser/browser")
assert repository["rootFolderUrl"].endswith("/cmis/readonly-browser/browser/root")
assert repository["capabilities"]["capabilityQuery"] == "metadataonly"
assert repository["capabilities"]["capabilityOrderBy"] == "common"
assert repository["capabilities"]["capabilityGetDescendants"] is False
assert browser_types["types"][0]["id"] == "cmis:document"
assert "propertyDefinitions" not in browser_types["types"][0]
@@ -166,10 +167,18 @@ def test_cmis_readonly_children_object_content_query_relationships_and_changes(c
"/cmis/readonly-browser/browser/query",
params={"q": "SELECT * FROM cmis:document"},
).json()
filtered_query = cmis_client.get(
"/cmis/readonly-browser/browser/query",
params={"q": "SELECT * FROM cmis:document WHERE kontextual:topics IN ('cmis') ORDER BY cmis:name ASC"},
).json()
relationships = cmis_client.get(
"/cmis/readonly-browser/browser/relationships",
params={"object_id": "cmis:asset:asset-source"},
).json()
target_relationships = cmis_client.get(
"/cmis/readonly-browser/browser/relationships",
params={"object_id": "cmis:asset:asset-public", "relationshipDirection": "target"},
).json()
changes = cmis_client.get("/cmis/readonly-browser/browser/changes").json()
root_ids = {item["object_id"] for item in root_children["objects"]}
@@ -182,8 +191,11 @@ def test_cmis_readonly_children_object_content_query_relationships_and_changes(c
assert "get_content_stream" in object_response["allowable_actions"]
assert content["mime_type"] == "text/markdown"
assert query["total_num_items"] == children["total_num_items"]
assert [item["object_id"] for item in filtered_query["results"]] == ["cmis:asset:asset-source"]
assert relationships["count"] == 1
assert relationships["items"][0]["properties"]["cmis:targetId"] == "cmis:asset:asset-public"
assert relationships["items"][0]["properties"]["kontextual:relationshipId"]
assert target_relationships["count"] == 1
assert changes["total_num_items"] >= 3
@@ -213,13 +225,24 @@ def test_cmis_query_reports_unsupported_subset_diagnostics(cmis_client) -> None:
params={"q": "SELECT * FROM cmis:document JOIN cmis:relationship"},
)
assert response.status_code == 400
assert response.json()["exception"] == "invalidArgument"
assert response.json()["details"]["supported"] == [
"SELECT * FROM cmis:document",
"SELECT * FROM kontextual:document",
assert response.status_code == 405
assert response.json()["exception"] == "notSupported"
assert "SELECT * FROM cmis:document" in response.json()["details"]["supported"]
assert response.json()["details"]["orderable_fields"] == [
"cmis:creationDate",
"cmis:lastModificationDate",
"cmis:name",
"cmis:objectId",
]
descendants = cmis_client.get(
"/cmis/readonly-browser/browser/root",
params={"cmisselector": "descendants"},
)
assert descendants.status_code == 405
assert descendants.json()["exception"] == "notSupported"
assert descendants.json()["details"]["unsupported_feature"] == "get_descendants"
def test_cmis_governed_authoring_routes_allow_selected_mutations(cmis_client) -> None:
created = cmis_client.post(