generated from coulomb/repo-seed
CMIS Browser Binding serializer layer
This commit is contained in:
@@ -79,6 +79,7 @@ def test_cmis_browser_binding_routes_are_advertised_in_openapi(cmis_client) -> N
|
||||
|
||||
assert "/cmis" in paths
|
||||
assert "/cmis/{access_point_id}/browser" in paths
|
||||
assert "/cmis/{access_point_id}/browser/root" in paths
|
||||
assert "/cmis/{access_point_id}/browser/types" in paths
|
||||
assert "/cmis/{access_point_id}/browser/children" in paths
|
||||
assert "/cmis/{access_point_id}/browser/object/{object_id}" in paths
|
||||
@@ -93,15 +94,45 @@ def test_cmis_browser_binding_routes_are_advertised_in_openapi(cmis_client) -> N
|
||||
|
||||
def test_cmis_repository_info_and_type_definitions(cmis_client) -> None:
|
||||
access_points = cmis_client.get("/cmis").json()
|
||||
repository = cmis_client.get("/cmis/readonly-browser/browser").json()
|
||||
service_document = cmis_client.get("/cmis/readonly-browser/browser").json()
|
||||
repository = service_document["kontextual-readonly-browser"]
|
||||
types = cmis_client.get("/cmis/readonly-browser/browser/types").json()
|
||||
browser_types = cmis_client.get(
|
||||
"/cmis/readonly-browser/browser",
|
||||
params={"cmisselector": "typeChildren"},
|
||||
).json()
|
||||
browser_types_with_properties = cmis_client.get(
|
||||
"/cmis/readonly-browser/browser",
|
||||
params={"cmisselector": "typeChildren", "includePropertyDefinitions": "true"},
|
||||
).json()
|
||||
browser_type_descendants = cmis_client.get(
|
||||
"/cmis/readonly-browser/browser",
|
||||
params={"cmisselector": "typeDescendants"},
|
||||
).json()
|
||||
browser_type_definition = cmis_client.get(
|
||||
"/cmis/readonly-browser/browser",
|
||||
params={"cmisselector": "typeDefinition", "typeId": "cmis:document"},
|
||||
).json()
|
||||
root_policies = cmis_client.get(
|
||||
"/cmis/readonly-browser/browser/root",
|
||||
params={"cmisselector": "policies"},
|
||||
).json()
|
||||
|
||||
assert access_points["count"] == 4
|
||||
assert repository["repository_id"] == "kontextual-readonly-browser"
|
||||
assert repository["cmis_version_supported"] == "1.1"
|
||||
assert repository["capabilities"]["capability_query"] == "metadataonly"
|
||||
assert repository["capabilities"]["capability_get_descendants"] is False
|
||||
assert repository["unsupported_features"]["multifiling"]["status"] == "projection_only"
|
||||
assert repository["repositoryId"] == "kontextual-readonly-browser"
|
||||
assert repository["cmisVersionSupported"] == "1.1"
|
||||
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"]["capabilityGetDescendants"] is False
|
||||
assert browser_types["types"][0]["id"] == "cmis:document"
|
||||
assert "propertyDefinitions" not in browser_types["types"][0]
|
||||
assert "propertyDefinitions" in browser_types_with_properties["types"][0]
|
||||
assert browser_type_descendants[0]["type"]["id"] == "cmis:document"
|
||||
assert "propertyDefinitions" not in browser_type_descendants[0]["type"]
|
||||
assert "propertyDefinitions" in browser_type_definition
|
||||
assert browser_type_descendants[0]["children"] == []
|
||||
assert root_policies == []
|
||||
assert {item["base_type_id"] for item in types["items"]} >= {
|
||||
"cmis:document",
|
||||
"cmis:folder",
|
||||
@@ -110,7 +141,11 @@ def test_cmis_repository_info_and_type_definitions(cmis_client) -> None:
|
||||
|
||||
|
||||
def test_cmis_readonly_children_object_content_query_relationships_and_changes(cmis_client) -> None:
|
||||
children = cmis_client.get("/cmis/readonly-browser/browser/children").json()
|
||||
root_children = cmis_client.get("/cmis/readonly-browser/browser/children").json()
|
||||
children = cmis_client.get(
|
||||
"/cmis/readonly-browser/browser/children",
|
||||
params={"folder_id": "cmis:folder:assets::document"},
|
||||
).json()
|
||||
object_response = cmis_client.get(
|
||||
"/cmis/readonly-browser/browser/object/cmis:asset:asset-source"
|
||||
).json()
|
||||
@@ -127,7 +162,9 @@ def test_cmis_readonly_children_object_content_query_relationships_and_changes(c
|
||||
).json()
|
||||
changes = cmis_client.get("/cmis/readonly-browser/browser/changes").json()
|
||||
|
||||
root_ids = {item["object_id"] for item in root_children["objects"]}
|
||||
child_ids = {item["object_id"] for item in children["objects"]}
|
||||
assert "cmis:folder:assets" in root_ids
|
||||
assert "cmis:asset:asset-source" in child_ids
|
||||
assert "cmis:asset:asset-public" in child_ids
|
||||
assert "cmis:asset:asset-confidential" not in child_ids
|
||||
@@ -141,10 +178,14 @@ def test_cmis_readonly_children_object_content_query_relationships_and_changes(c
|
||||
|
||||
|
||||
def test_cmis_profile_gates_visibility_by_access_point(cmis_client) -> None:
|
||||
readonly = cmis_client.get("/cmis/readonly-browser/browser/children").json()
|
||||
readonly = cmis_client.get(
|
||||
"/cmis/readonly-browser/browser/children",
|
||||
params={"folder_id": "cmis:folder:assets::document"},
|
||||
).json()
|
||||
admin_denied = cmis_client.get("/cmis/admin-export/browser/children")
|
||||
admin_allowed = cmis_client.get(
|
||||
"/cmis/admin-export/browser/children",
|
||||
params={"folder_id": "cmis:folder:assets::document"},
|
||||
headers={"X-Actor-Type": "service_account", "X-Actor-Id": "svc-export"},
|
||||
).json()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user