Skip to content

Commit 6c4fbdc

Browse files
committed
add unit test for increased coverage
Signed-off-by: Patrick St-Louis <patrick.st-louis@opsecid.ca>
1 parent 7d0622c commit 6c4fbdc

File tree

2 files changed

+93
-1
lines changed

2 files changed

+93
-1
lines changed

acapy_agent/anoncreds/revocation/tests/test_revocation.py

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1046,6 +1046,87 @@ async def test_decommission_registry_new_backup_creation_fails(self, mock_handle
10461046
assert len(result) == 2
10471047
assert result[0].tags["state"] == RevRegDefState.STATE_DECOMMISSIONED
10481048

1049+
@mock.patch.object(AskarAnonCredsProfileSession, "handle")
1050+
async def test_decommission_registry_duplicate_store_handled(self, mock_handle):
1051+
"""When event chain already stored the registry, duplicate is handled gracefully."""
1052+
mock_handle.fetch_all = mock.CoroutineMock(
1053+
side_effect=[
1054+
[
1055+
MockEntry(
1056+
name="backup-reg-reg",
1057+
tags={
1058+
"cred_def_id": "test-rev-reg-def-id",
1059+
"state": RevRegDefState.STATE_FINISHED,
1060+
"active": "false",
1061+
},
1062+
),
1063+
],
1064+
[
1065+
MockEntry(
1066+
name="active-reg-reg",
1067+
tags={
1068+
"cred_def_id": "test-rev-reg-def-id",
1069+
"state": RevRegDefState.STATE_FINISHED,
1070+
"active": "true",
1071+
},
1072+
),
1073+
MockEntry(
1074+
name="backup-reg-reg",
1075+
tags={
1076+
"cred_def_id": "test-rev-reg-def-id",
1077+
"state": RevRegDefState.STATE_FINISHED,
1078+
"active": "false",
1079+
},
1080+
),
1081+
MockEntry(
1082+
name="new-rev-reg",
1083+
tags={
1084+
"cred_def_id": "test-rev-reg-def-id",
1085+
"state": RevRegDefState.STATE_FINISHED,
1086+
"active": "false",
1087+
},
1088+
),
1089+
],
1090+
]
1091+
)
1092+
self.revocation.get_or_create_active_registry = mock.CoroutineMock(
1093+
return_value=RevRegDefResult(
1094+
job_id="test-job-id",
1095+
revocation_registry_definition_state=RevRegDefState(
1096+
state=RevRegDefState.STATE_FINISHED,
1097+
revocation_registry_definition_id="active-reg-reg",
1098+
revocation_registry_definition=rev_reg_def,
1099+
),
1100+
registration_metadata={},
1101+
revocation_registry_definition_metadata={},
1102+
)
1103+
)
1104+
self.revocation.create_and_register_revocation_registry_definition = (
1105+
mock.CoroutineMock(
1106+
return_value=RevRegDefResult(
1107+
job_id="test-job-id",
1108+
revocation_registry_definition_state=RevRegDefState(
1109+
state=RevRegDefState.STATE_ACTION,
1110+
revocation_registry_definition_id="new-rev-reg",
1111+
revocation_registry_definition=rev_reg_def,
1112+
),
1113+
registration_metadata={},
1114+
revocation_registry_definition_metadata={},
1115+
)
1116+
)
1117+
)
1118+
self.revocation.store_revocation_registry_definition = mock.CoroutineMock(
1119+
side_effect=test_module.AnonCredsRevocationError("Duplicate entry")
1120+
)
1121+
self.revocation.set_active_registry = mock.CoroutineMock(return_value=None)
1122+
mock_handle.replace = mock.CoroutineMock(return_value=None)
1123+
1124+
result = await self.revocation.decommission_registry("test-rev-reg-def-id")
1125+
1126+
assert isinstance(result, list)
1127+
self.revocation.store_revocation_registry_definition.assert_called_once()
1128+
self.revocation.set_active_registry.assert_called_once_with("backup-reg-reg")
1129+
10491130
@mock.patch.object(AskarAnonCredsProfileSession, "handle")
10501131
async def test_get_backup_registry_id_raises_when_no_backup(self, mock_handle):
10511132
"""_get_backup_registry_id raises when no finished backup exists."""

acapy_agent/anoncreds/routes/revocation/registry/tests/test_routes.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@
1111
from .....issuer import AnonCredsIssuer
1212
from .....models.issuer_cred_rev_record import IssuerCredRevRecord
1313
from .....models.revocation import RevRegDef, RevRegDefState, RevRegDefValue
14-
from .....revocation import AnonCredsRevocation
14+
from .....revocation import AnonCredsRevocation, AnonCredsRevocationError
1515
from .....tests.mock_objects import MockRevocationRegistryDefinition
1616
from ....common.testing import BaseAnonCredsRouteTestCase
1717
from .. import routes as test_module
1818
from ..routes import (
19+
get_active_rev_reg,
1920
get_rev_reg_issued,
2021
get_rev_reg_issued_count,
2122
get_rev_regs,
@@ -178,6 +179,16 @@ async def test_active_registry_wrong_profile_403(self):
178179
with self.assertRaises(web.HTTPForbidden):
179180
await set_active_registry(self.request)
180181

182+
@mock.patch.object(
183+
AnonCredsRevocation,
184+
"get_or_create_active_registry",
185+
side_effect=AnonCredsRevocationError("No active registry"),
186+
)
187+
async def test_get_active_rev_reg_not_found(self, mock_get):
188+
self.request.match_info = {"cred_def_id": "test_cred_def_id"}
189+
with self.assertRaises(web.HTTPNotFound):
190+
await get_active_rev_reg(self.request)
191+
181192
async def test_get_rev_regs(self):
182193
self.request.query = {
183194
"cred_def_id": "test_cred_def_id",

0 commit comments

Comments
 (0)