fix: cordapy response parsing

This commit is contained in:
daniel
2025-06-29 13:54:15 +02:00
parent 2cca4adeb8
commit fed4c26f21
2 changed files with 29 additions and 30 deletions

View File

@@ -54,9 +54,8 @@ class CordraClient:
CordraClientError: For other API errors
"""
try:
# Use CordraPy to read the object
cordra_obj = cordra.CordraObject.read(
host=self.config.cordra_url, # type: ignore
cordra_obj: dict[str, Any] = cordra.CordraObject.read(
host=self.config.cordra_url, #type: ignore
obj_id=object_id,
username=self.config.username,
password=self.config.password,
@@ -66,11 +65,11 @@ class CordraClient:
return DigitalObject(
id=object_id,
type=getattr(cordra_obj, 'type', ''),
content=getattr(cordra_obj, 'content', {}),
metadata=getattr(cordra_obj, 'metadata', None),
acl=getattr(cordra_obj, 'acl', None),
payloads=getattr(cordra_obj, 'payloads', None),
type=cordra_obj['type'],
content=cordra_obj['content'],
metadata=cordra_obj.get('metadata'),
acl=cordra_obj.get('acl'),
payloads=cordra_obj.get('payloads'),
)
except Exception as e:

View File

@@ -1,6 +1,6 @@
"""Unit tests for the Cordra client."""
from unittest.mock import Mock, patch
from unittest.mock import patch
import pytest
@@ -32,27 +32,27 @@ def client(config):
@pytest.fixture
def mock_cordra_object():
"""Create a mock CordraObject."""
mock_obj = Mock()
mock_obj.type = "TestType"
mock_obj.content = {"title": "Test Object", "description": "A test object"}
mock_obj.metadata = {"created": "2023-01-01", "modified": "2023-01-02"}
mock_obj.acl = {"read": ["public"], "write": ["admin"]}
mock_obj.payloads = [
{
"name": "file1.txt",
"filename": "file1.txt",
"size": 1024,
"mediaType": "text/plain"
},
{
"name": "file2.pdf",
"filename": "file2.pdf",
"size": 2048,
"mediaType": "application/pdf"
}
]
return mock_obj
"""Create a mock CordraObject response (dictionary)."""
return {
"type": "TestType",
"content": {"title": "Test Object", "description": "A test object"},
"metadata": {"created": "2023-01-01", "modified": "2023-01-02"},
"acl": {"read": ["public"], "write": ["admin"]},
"payloads": [
{
"name": "file1.txt",
"filename": "file1.txt",
"size": 1024,
"mediaType": "text/plain"
},
{
"name": "file2.pdf",
"filename": "file2.pdf",
"size": 2048,
"mediaType": "application/pdf"
}
]
}
class TestDigitalObject: