Skip to content

Commit

Permalink
Add unit tests for registering revocation list
Browse files Browse the repository at this point in the history
Signed-off-by: jamshale <[email protected]>
  • Loading branch information
jamshale committed Feb 8, 2024
1 parent 642d3c1 commit 2a0a5d6
Showing 1 changed file with 234 additions and 5 deletions.
239 changes: 234 additions & 5 deletions aries_cloudagent/anoncreds/default/legacy_indy/tests/test_registry.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,13 @@
CredDefValue,
CredDefValuePrimary,
)
from ....models.anoncreds_revocation import RevRegDef, RevRegDefResult, RevRegDefValue
from ....models.anoncreds_revocation import (
RevList,
RevListResult,
RevRegDef,
RevRegDefResult,
RevRegDefValue,
)
from .. import registry as test_module

B58 = alphabet if isinstance(alphabet, str) else alphabet.decode("ascii")
Expand Down Expand Up @@ -684,10 +690,6 @@ async def test_register_revocation_registry_definition_with_create_transaction_o
async def test_register_revocation_registry_definition_with_create_transaction_and_auto_request(
self, mock_create_record, mock_endorser_connection
):
self.profile.context.injector.bind_instance(
BaseLedger,
mock.MagicMock(send_revoc_reg_def=mock.CoroutineMock(return_value=1)),
)
self.profile.context.injector.bind_instance(
BaseLedger,
mock.MagicMock(
Expand Down Expand Up @@ -747,3 +749,230 @@ async def test_txn_submit(self):

result = await self.registry.txn_submit(self.profile, "test_txn")
assert result == "transaction response"

async def test_register_revocation_list_no_endorsement(self):
self.profile.context.injector.bind_instance(
BaseLedger,
mock.MagicMock(send_revoc_reg_entry=mock.CoroutineMock(return_value=1)),
)
result = await self.registry.register_revocation_list(
self.profile,
RevRegDef(
tag="tag",
cred_def_id="CsQY9MGeD3CQP4EyuVFo5m:3:CL:14951:MYCO_Biomarker",
value=RevRegDefValue(
max_cred_num=100,
public_keys={
"accum_key": {"z": "1 0BB...386"},
},
tails_hash="not-correct-hash",
tails_location="http://tails-server.com",
),
issuer_id="CsQY9MGeD3CQP4EyuVFo5m",
type="CL_ACCUM",
),
RevList(
issuer_id="CsQY9MGeD3CQP4EyuVFo5m",
current_accumulator="21 124C594B6B20E41B681E92B2C43FD165EA9E68BC3C9D63A82C8893124983CAE94 21 124C5341937827427B0A3A32113BD5E64FB7AB39BD3E5ABDD7970874501CA4897 6 5438CB6F442E2F807812FD9DC0C39AFF4A86B1E6766DBB5359E86A4D70401B0F 4 39D1CA5C4716FFC4FE0853C4FF7F081DFD8DF8D2C2CA79705211680AC77BF3A1 6 70504A5493F89C97C225B68310811A41AD9CD889301F238E93C95AD085E84191 4 39582252194D756D5D86D0EED02BF1B95CE12AED2FA5CD3C53260747D891993C",
revocation_list=[0, 1, 1, 0],
timestamp=1669640864487,
rev_reg_def_id="4xE68b6S5VRFrKMMG1U95M:4:4xE68b6S5VRFrKMMG1U95M:3:CL:59232:default:CL_ACCUM:4ae1cc6c-f6bd-486c-8057-88f2ce74e960",
),
{},
)

assert isinstance(result, RevListResult)
assert self.profile.context.injector.get_provider(
BaseLedger
)._instance.send_revoc_reg_entry.called

@mock.patch.object(
ConnRecord,
"retrieve_by_id",
return_value=mock.CoroutineMock(
metadata_get=mock.CoroutineMock(return_value={"endorser_did": "test_did"})
),
)
@mock.patch.object(
TransactionManager,
"create_record",
return_value=TransactionRecord(),
)
async def test_register_revocation_list_with_author_role(
self, mock_create_record, mock_endorsement_conn
):
self.profile.context.injector.bind_instance(
BaseLedger,
mock.MagicMock(
send_revoc_reg_entry=mock.CoroutineMock(
return_value=("id", {"signed_txn": "txn"})
)
),
)
self.profile.settings.set_value("endorser.author", True)

result = await self.registry.register_revocation_list(
self.profile,
RevRegDef(
tag="tag",
cred_def_id="CsQY9MGeD3CQP4EyuVFo5m:3:CL:14951:MYCO_Biomarker",
value=RevRegDefValue(
max_cred_num=100,
public_keys={
"accum_key": {"z": "1 0BB...386"},
},
tails_hash="not-correct-hash",
tails_location="http://tails-server.com",
),
issuer_id="CsQY9MGeD3CQP4EyuVFo5m",
type="CL_ACCUM",
),
RevList(
issuer_id="CsQY9MGeD3CQP4EyuVFo5m",
current_accumulator="21 124C594B6B20E41B681E92B2C43FD165EA9E68BC3C9D63A82C8893124983CAE94 21 124C5341937827427B0A3A32113BD5E64FB7AB39BD3E5ABDD7970874501CA4897 6 5438CB6F442E2F807812FD9DC0C39AFF4A86B1E6766DBB5359E86A4D70401B0F 4 39D1CA5C4716FFC4FE0853C4FF7F081DFD8DF8D2C2CA79705211680AC77BF3A1 6 70504A5493F89C97C225B68310811A41AD9CD889301F238E93C95AD085E84191 4 39582252194D756D5D86D0EED02BF1B95CE12AED2FA5CD3C53260747D891993C",
revocation_list=[0, 1, 1, 0],
timestamp=1669640864487,
rev_reg_def_id="4xE68b6S5VRFrKMMG1U95M:4:4xE68b6S5VRFrKMMG1U95M:3:CL:59232:default:CL_ACCUM:4ae1cc6c-f6bd-486c-8057-88f2ce74e960",
),
{
"endorser_connection_id": "test_connection_id",
},
)

assert isinstance(result, RevListResult)
assert self.profile.context.injector.get_provider(
BaseLedger
)._instance.send_revoc_reg_entry.called
assert mock_create_record.called

@mock.patch.object(
ConnRecord,
"retrieve_by_id",
return_value=mock.CoroutineMock(
metadata_get=mock.CoroutineMock(return_value={"endorser_did": "test_did"})
),
)
@mock.patch.object(
TransactionManager,
"create_record",
return_value=TransactionRecord(),
)
async def test_register_revocation_list_with_create_transaction_option(
self, mock_create_record, mock_endorsement_conn
):
self.profile.context.injector.bind_instance(
BaseLedger,
mock.MagicMock(
send_revoc_reg_entry=mock.CoroutineMock(
return_value=("id", {"signed_txn": "txn"})
)
),
)

result = await self.registry.register_revocation_list(
self.profile,
RevRegDef(
tag="tag",
cred_def_id="CsQY9MGeD3CQP4EyuVFo5m:3:CL:14951:MYCO_Biomarker",
value=RevRegDefValue(
max_cred_num=100,
public_keys={
"accum_key": {"z": "1 0BB...386"},
},
tails_hash="not-correct-hash",
tails_location="http://tails-server.com",
),
issuer_id="CsQY9MGeD3CQP4EyuVFo5m",
type="CL_ACCUM",
),
RevList(
issuer_id="CsQY9MGeD3CQP4EyuVFo5m",
current_accumulator="21 124C594B6B20E41B681E92B2C43FD165EA9E68BC3C9D63A82C8893124983CAE94 21 124C5341937827427B0A3A32113BD5E64FB7AB39BD3E5ABDD7970874501CA4897 6 5438CB6F442E2F807812FD9DC0C39AFF4A86B1E6766DBB5359E86A4D70401B0F 4 39D1CA5C4716FFC4FE0853C4FF7F081DFD8DF8D2C2CA79705211680AC77BF3A1 6 70504A5493F89C97C225B68310811A41AD9CD889301F238E93C95AD085E84191 4 39582252194D756D5D86D0EED02BF1B95CE12AED2FA5CD3C53260747D891993C",
revocation_list=[0, 1, 1, 0],
timestamp=1669640864487,
rev_reg_def_id="4xE68b6S5VRFrKMMG1U95M:4:4xE68b6S5VRFrKMMG1U95M:3:CL:59232:default:CL_ACCUM:4ae1cc6c-f6bd-486c-8057-88f2ce74e960",
),
{
"endorser_connection_id": "test_connection_id",
"create_transaction_for_endorser": True,
},
)

assert isinstance(result, RevListResult)
assert self.profile.context.injector.get_provider(
BaseLedger
)._instance.send_revoc_reg_entry.called
assert mock_create_record.called

@mock.patch.object(
ConnRecord,
"retrieve_by_id",
return_value=mock.CoroutineMock(
metadata_get=mock.CoroutineMock(return_value={"endorser_did": "test_did"})
),
)
@mock.patch.object(
TransactionManager,
"create_record",
return_value=TransactionRecord(),
)
@mock.patch.object(
TransactionManager,
"create_request",
return_value=(TransactionRecord(), "transaction_request"),
)
async def test_register_revocation_list_with_create_transaction_option_and_auto_request(
self, mock_create_request, mock_create_record, mock_endorsement_conn
):
self.profile.context.injector.bind_instance(
BaseLedger,
mock.MagicMock(
send_revoc_reg_entry=mock.CoroutineMock(
return_value=("id", {"signed_txn": "txn"})
)
),
)
self.profile.context.injector.bind_instance(
BaseResponder,
mock.MagicMock(send=mock.CoroutineMock(return_value=None)),
)
self.profile.settings.set_value("endorser.auto_request", True)

result = await self.registry.register_revocation_list(
self.profile,
RevRegDef(
tag="tag",
cred_def_id="CsQY9MGeD3CQP4EyuVFo5m:3:CL:14951:MYCO_Biomarker",
value=RevRegDefValue(
max_cred_num=100,
public_keys={
"accum_key": {"z": "1 0BB...386"},
},
tails_hash="not-correct-hash",
tails_location="http://tails-server.com",
),
issuer_id="CsQY9MGeD3CQP4EyuVFo5m",
type="CL_ACCUM",
),
RevList(
issuer_id="CsQY9MGeD3CQP4EyuVFo5m",
current_accumulator="21 124C594B6B20E41B681E92B2C43FD165EA9E68BC3C9D63A82C8893124983CAE94 21 124C5341937827427B0A3A32113BD5E64FB7AB39BD3E5ABDD7970874501CA4897 6 5438CB6F442E2F807812FD9DC0C39AFF4A86B1E6766DBB5359E86A4D70401B0F 4 39D1CA5C4716FFC4FE0853C4FF7F081DFD8DF8D2C2CA79705211680AC77BF3A1 6 70504A5493F89C97C225B68310811A41AD9CD889301F238E93C95AD085E84191 4 39582252194D756D5D86D0EED02BF1B95CE12AED2FA5CD3C53260747D891993C",
revocation_list=[0, 1, 1, 0],
timestamp=1669640864487,
rev_reg_def_id="4xE68b6S5VRFrKMMG1U95M:4:4xE68b6S5VRFrKMMG1U95M:3:CL:59232:default:CL_ACCUM:4ae1cc6c-f6bd-486c-8057-88f2ce74e960",
),
{
"endorser_connection_id": "test_connection_id",
"create_transaction_for_endorser": True,
},
)

assert isinstance(result, RevListResult)
assert self.profile.context.injector.get_provider(
BaseLedger
)._instance.send_revoc_reg_entry.called
assert mock_create_record.called
assert mock_create_request.called
assert self.profile.context.injector.get_provider(
BaseResponder
)._instance.send.called

0 comments on commit 2a0a5d6

Please sign in to comment.