Skip to content

Commit 3f7b2c5

Browse files
committed
fix unit tests
Signed-off-by: DaevMithran <[email protected]>
1 parent 3e1d6dc commit 3f7b2c5

File tree

4 files changed

+51
-73
lines changed

4 files changed

+51
-73
lines changed

cheqd/cheqd/anoncreds/tests/conftest.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ def mock_profile():
2020
@pytest.fixture
2121
def mock_resolver():
2222
mock_resolver = AsyncMock()
23-
mock_resolver.resolve_resource.return_value = MagicMock()
24-
mock_resolver.resolve_resource.return_value.resource = {
23+
mock_resolver.dereference_with_metadata.return_value = MagicMock()
24+
mock_resolver.dereference_with_metadata.return_value.resource = {
2525
"attrNames": "MOCK_ATTR_NAMES",
2626
"name": "MOCK_NAME",
2727
"version": "MOCK_VERSION",
@@ -34,7 +34,7 @@ def mock_resolver():
3434
"revocationList": [0, 1, 0],
3535
"currentAccumulator": "MOCK_ACCUMULATOR",
3636
}
37-
mock_resolver.resolve_resource.return_value.metadata = {
37+
mock_resolver.dereference_with_metadata.return_value.metadata = {
3838
"MOCK_METADATA_KEY": "MOCK_METADATA_VALUE"
3939
}
4040

cheqd/cheqd/anoncreds/tests/test_registry.py

+10-10
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ async def test_get_schema(mock_profile, mock_resolver):
123123
assert result.schema.version == "MOCK_VERSION"
124124
assert result.schema_metadata == {"MOCK_METADATA_KEY": "MOCK_METADATA_VALUE"}
125125
assert result.resolution_metadata == {}
126-
mock_resolver.resolve_resource.assert_called_once_with(schema_id)
126+
mock_resolver.dereference_with_metadata.assert_called_once_with(schema_id)
127127

128128

129129
async def test_register_schema(
@@ -132,7 +132,7 @@ async def test_register_schema(
132132
# Arrange
133133
with (
134134
patch(
135-
"cheqd.cheqd.anoncreds.registry.CheqdDIDResolver.resolve_resource",
135+
"cheqd.cheqd.anoncreds.registry.CheqdDIDResolver.dereference_with_metadata",
136136
return_value=None,
137137
),
138138
patch(
@@ -177,7 +177,7 @@ async def test_register_schema_update(
177177
# Arrange
178178
with (
179179
patch(
180-
"cheqd.cheqd.anoncreds.registry.CheqdDIDResolver.resolve_resource",
180+
"cheqd.cheqd.anoncreds.registry.CheqdDIDResolver.dereference_with_metadata",
181181
return_value={},
182182
),
183183
patch(
@@ -226,7 +226,7 @@ async def test_register_schema_registration_error(mock_profile, mock_schema):
226226
# Act
227227
with (
228228
patch(
229-
"cheqd.cheqd.anoncreds.registry.CheqdDIDResolver.resolve_resource",
229+
"cheqd.cheqd.anoncreds.registry.CheqdDIDResolver.dereference_with_metadata",
230230
return_value=None,
231231
),
232232
patch(
@@ -273,7 +273,7 @@ async def test_get_credential_definition(mock_profile, mock_resolver):
273273
"MOCK_METADATA_KEY": "MOCK_METADATA_VALUE"
274274
}
275275
assert result.resolution_metadata == {}
276-
mock_resolver.resolve_resource.assert_called_once_with(credential_definition_id)
276+
mock_resolver.dereference_with_metadata.assert_called_once_with(credential_definition_id)
277277

278278

279279
async def test_register_credential_definition(
@@ -285,7 +285,7 @@ async def test_register_credential_definition(
285285
# Arrange
286286
with (
287287
patch(
288-
"cheqd.cheqd.anoncreds.registry.CheqdDIDResolver.resolve_resource",
288+
"cheqd.cheqd.anoncreds.registry.CheqdDIDResolver.dereference_with_metadata",
289289
return_value=None,
290290
),
291291
patch(
@@ -362,7 +362,7 @@ async def test_get_revocation_registry_definition(mock_profile, mock_resolver):
362362
"MOCK_METADATA_KEY": "MOCK_METADATA_VALUE"
363363
}
364364
assert result.resolution_metadata == {}
365-
mock_resolver.resolve_resource.assert_called_once_with("PART0/PART1/PART2")
365+
mock_resolver.dereference_with_metadata.assert_called_once_with("PART0/PART1/PART2")
366366

367367

368368
async def test_register_revocation_registry_definition(
@@ -378,7 +378,7 @@ async def test_register_revocation_registry_definition(
378378
return_value=mock_get_credential_definition_result,
379379
),
380380
patch(
381-
"cheqd.cheqd.anoncreds.registry.CheqdDIDResolver.resolve_resource",
381+
"cheqd.cheqd.anoncreds.registry.CheqdDIDResolver.dereference_with_metadata",
382382
return_value=None,
383383
),
384384
patch(
@@ -456,7 +456,7 @@ async def test_get_revocation_list(mock_profile, mock_resolver, mock_rev_reg_def
456456
"MOCK_METADATA_KEY": "MOCK_METADATA_VALUE"
457457
}
458458

459-
mock_resolver.resolve_resource.assert_called_once()
459+
mock_resolver.dereference_with_metadata.assert_called_once()
460460

461461

462462
async def test_register_revocation_status_list(
@@ -543,7 +543,7 @@ async def test_get_schema_info_by_id(mock_resolver, mock_profile):
543543
assert result.issuer_id == "PART0"
544544
assert result.name == "MOCK_NAME"
545545
assert result.version == "MOCK_VERSION"
546-
mock_resolver.resolve_resource.assert_called_once_with(schema_id)
546+
mock_resolver.dereference_with_metadata.assert_called_once_with(schema_id)
547547

548548

549549
@patch("cheqd.cheqd.did.manager.DIDRegistrar")

cheqd/cheqd/resolver/resolver.py

+21-16
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
)
1515
from aiohttp import ClientSession
1616
from pydid import DIDDocument
17-
from pydantic import BaseModel
17+
from pydantic import BaseModel, ValidationError
1818

1919
from ..validation import CheqdDID
2020

@@ -103,15 +103,18 @@ async def resolve(
103103
did_doc_resp = resolver_resp.get("didDocument")
104104
did_doc_metadata = resolver_resp.get("didDocumentMetadata")
105105

106-
did_doc = DIDDocument.from_json(json.dumps(did_doc_resp))
107-
result = did_doc.serialize()
108-
# Check if 'deactivated' field is present in didDocumentMetadata
109-
if (
110-
did_doc_metadata
111-
and did_doc_metadata.get("deactivated") is True
112-
):
113-
result["deactivated"] = True
114-
return result
106+
try:
107+
did_doc = DIDDocument.from_json(json.dumps(did_doc_resp))
108+
result = did_doc.serialize()
109+
# Check if 'deactivated' field is present in didDocumentMetadata
110+
if (
111+
did_doc_metadata
112+
and did_doc_metadata.get("deactivated") is True
113+
):
114+
result["deactivated"] = True
115+
return result
116+
except Exception as err:
117+
raise ResolverError("Response was incorrectly formatted") from err
115118

116119
async def dereference_with_metadata(
117120
self,
@@ -125,9 +128,11 @@ async def dereference_with_metadata(
125128
did_url,
126129
[f"Accept: {DID_URL_DEREFERENCING_HEADER}"]
127130
)
128-
129-
validated_resp = DIDUrlDereferencingResult(**result)
130-
return DIDLinkedResourceWithMetadata(
131-
resource=validated_resp.contentStream,
132-
metadata=validated_resp.contentMetadata
133-
)
131+
try:
132+
validated_resp = DIDUrlDereferencingResult(**result)
133+
return DIDLinkedResourceWithMetadata(
134+
resource=validated_resp.contentStream,
135+
metadata=validated_resp.contentMetadata
136+
)
137+
except ValidationError:
138+
raise ResolverError("DidUrlDereferencing result was incorrectly formatted")

cheqd/cheqd/resolver/tests/test_resolver.py

+17-44
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ async def test_resolve(resolver, resolve_url, did):
2525
mocked.get(resolve_url, status=200, payload=mock_response)
2626

2727
# Act
28-
did_doc = await resolver._resolve(None, did)
28+
did_doc = await resolver.resolve(None, did)
2929

3030
# Assert
3131
assert did_doc == {
@@ -46,7 +46,7 @@ async def test_resolve_deactivated(resolver, resolve_url, did):
4646
mocked.get(resolve_url, status=200, payload=mock_response)
4747

4848
# Act
49-
did_doc = await resolver._resolve(None, did)
49+
did_doc = await resolver.resolve(None, did)
5050

5151
# Assert
5252
assert did_doc == {
@@ -69,7 +69,7 @@ async def test_resolve_incorrectly_formatted(resolver, resolve_url, did):
6969

7070
# Act
7171
with pytest.raises(Exception) as excinfo:
72-
await resolver._resolve(None, did)
72+
await resolver.resolve(None, did)
7373

7474
# Assert
7575
assert str(excinfo.value) == "Response was incorrectly formatted"
@@ -84,7 +84,7 @@ async def test_resolve_path_not_found(resolver, resolve_url, did):
8484

8585
# Act
8686
with pytest.raises(Exception) as excinfo:
87-
await resolver._resolve(None, did)
87+
await resolver.resolve(None, did)
8888

8989
# Assert
9090
assert str(excinfo.value) == f"No document found for {did}"
@@ -94,24 +94,19 @@ async def test_resolve_path_not_found(resolver, resolve_url, did):
9494
@pytest.mark.asyncio
9595
async def test_resolve_resource(resolver, resolve_resource_params):
9696
# Arrange
97-
mock_response = {"MOCK_KEY": "MOCK_VALUE"}
98-
mock_metadata_response = {
99-
"contentStream": {
100-
"linkedResourceMetadata": [{"MOCK_METADATA_KEY": "MOCK_METADATA_VALUE"}]
101-
}
97+
mock_response = {
98+
"contentStream": {"MOCK_KEY": "MOCK_VALUE"},
99+
"contentMetadata": {"MOCK_METADATA_KEY": "MOCK_METADATA_VALUE"}
102100
}
103101
did_resource, resolve_resource_url, resolve_resource_metadata_url = (
104102
resolve_resource_params
105103
)
106104

107105
with aioresponses() as mocked:
108106
mocked.get(resolve_resource_url, status=200, payload=mock_response)
109-
mocked.get(
110-
resolve_resource_metadata_url, status=200, payload=mock_metadata_response
111-
)
112107

113108
# Act
114-
response = await resolver.resolve_resource(did_resource)
109+
response = await resolver.dereference_with_metadata(None, did_resource)
115110

116111
# Assert
117112
assert response is not None
@@ -129,7 +124,7 @@ async def test_resolve_resource_incorrectly_formatted(resolver, resolve_resource
129124

130125
# Act
131126
with pytest.raises(Exception) as excinfo:
132-
await resolver.resolve_resource(did_resource)
127+
await resolver.dereference_with_metadata(None, did_resource)
133128

134129
# Assert
135130
assert str(excinfo.value) == "Response was incorrectly formatted"
@@ -146,10 +141,10 @@ async def test_resolve_resource_path_not_found(resolver, resolve_resource_params
146141

147142
# Act
148143
with pytest.raises(Exception) as excinfo:
149-
await resolver.resolve_resource(did_resource)
144+
await resolver.dereference_with_metadata(None, did_resource)
150145

151146
# Assert
152-
assert str(excinfo.value) == f"No resource found for {did_resource}"
147+
assert str(excinfo.value) == f"No document found for {did_resource}"
153148
assert isinstance(excinfo.value, DIDNotFound)
154149

155150

@@ -158,43 +153,21 @@ async def test_resolve_resource_metadata_incorrectly_formatted(
158153
resolver, resolve_resource_params
159154
):
160155
# Arrange
161-
mock_response = {"MOCK_KEY": "MOCK_VALUE"}
156+
mock_response = {
157+
"contentStream": {"MOCK_KEY": "MOCK_VALUE"},
158+
"contentMetadata": "MOCK_VALUE"
159+
}
162160
did_resource, resolve_resource_url, resolve_resource_metadata_url = (
163161
resolve_resource_params
164162
)
165163

166164
with aioresponses() as mocked:
167165
mocked.get(resolve_resource_url, status=200, payload=mock_response)
168-
mocked.get(
169-
resolve_resource_metadata_url, status=200, body="Invalid JSON Response"
170-
)
171166

172167
# Act
173168
with pytest.raises(Exception) as excinfo:
174-
await resolver.resolve_resource(did_resource)
169+
await resolver.dereference_with_metadata(None, did_resource)
175170

176171
# Assert
177-
assert str(excinfo.value) == "Metadata response was incorrectly formatted"
172+
assert str(excinfo.value) == "DidUrlDereferencing result was incorrectly formatted"
178173
assert isinstance(excinfo.value, ResolverError)
179-
180-
181-
@pytest.mark.asyncio
182-
async def test_resolve_resource_metadata_path_not_found(
183-
resolver, resolve_resource_params
184-
):
185-
# Arrange
186-
mock_response = {"MOCK_KEY": "MOCK_VALUE"}
187-
did_resource, resolve_resource_url, resolve_resource_metadata_url = (
188-
resolve_resource_params
189-
)
190-
with aioresponses() as mocked:
191-
mocked.get(resolve_resource_url, status=200, payload=mock_response)
192-
mocked.get(resolve_resource_metadata_url, status=404)
193-
194-
# Act
195-
with pytest.raises(Exception) as excinfo:
196-
await resolver.resolve_resource(did_resource)
197-
198-
# Assert
199-
assert str(excinfo.value) == f"No metadata found for {did_resource}"
200-
assert isinstance(excinfo.value, DIDNotFound)

0 commit comments

Comments
 (0)