Skip to content

Commit

Permalink
ADD: tests for VCDI handler
Browse files Browse the repository at this point in the history
- create_offer
- match_sent_cred_def_id error

Signed-off-by: EmadAnwer <emadanwer.official@gmail.com>
  • Loading branch information
EmadAnwer committed Jun 7, 2024
1 parent 7a4f442 commit 077ab9b
Showing 1 changed file with 38 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from aries_cloudagent.protocols.issue_credential.v2_0.models.cred_ex_record import (
V20CredExRecord,
)
from aries_cloudagent.wallet.did_info import DIDInfo
import pytest
from .......anoncreds.holder import AnonCredsHolder
from .......messaging.credential_definitions.util import (
Expand Down Expand Up @@ -237,7 +238,9 @@ async def asyncSetUp(self):
self.profile = self.session.profile
self.context = self.profile.context
setattr(self.profile, "session", mock.MagicMock(return_value=self.session))

self.session.wallet.get_public_did = mock.CoroutineMock(
return_value=DIDInfo(TEST_DID, None, None, None, True)
)
# Ledger
Ledger = mock.MagicMock()
self.ledger = Ledger()
Expand Down Expand Up @@ -384,7 +387,6 @@ async def test_receive_proposal(self):
# Not much to assert. Receive proposal doesn't do anything
await self.handler.receive_proposal(cred_ex_record, cred_proposal_message)

@pytest.mark.skip(reason="Anoncreds-break")
async def test_create_offer(self):
schema_id_parts = SCHEMA_ID.split(":")

Expand Down Expand Up @@ -426,26 +428,36 @@ async def test_create_offer(self):
)
await self.session.storage.add_record(cred_def_record)

self.issuer.create_credential = mock.CoroutineMock(
return_value=json.dumps(VCDI_OFFER)
)
with mock.patch.object(
test_module, "AnonCredsIssuer", return_value=self.issuer
) as mock_issuer:
self.issuer.create_credential_offer = mock.CoroutineMock(
return_value=json.dumps(
VCDI_OFFER["binding_method"]["anoncreds_link_secret"]
)
)

(cred_format, attachment) = await self.handler.create_offer(cred_proposal)
self.issuer.match_created_credential_definitions = mock.CoroutineMock(
return_value=CRED_DEF_ID
)

self.issuer.create_credential.assert_called_once_with(CRED_DEF_ID)
(cred_format, attachment) = await self.handler.create_offer(cred_proposal)

# assert identifier match
assert cred_format.attach_id == self.handler.format.api == attachment.ident
self.issuer.create_credential_offer.assert_called_once_with(CRED_DEF_ID)

# assert content of attachment is proposal data
assert attachment.content == VCDI_OFFER
assert cred_format.attach_id == self.handler.format.api == attachment.ident

# assert data is encoded as base64
assert attachment.data.base64
assert (
attachment.content["binding_method"]["anoncreds_link_secret"]
== VCDI_OFFER["binding_method"]["anoncreds_link_secret"]
)

self.issuer.create_credential_offer.reset_mock()
(cred_format, attachment) = await self.handler.create_offer(cred_proposal)
self.issuer.create_credential_offer.assert_not_called()
# Assert data is encoded as base64
assert attachment.data.base64
# TODO: fix this get_public_did return None in the sc
# (cred_format, attachment) = await self.handler.create_offer(cred_proposal)

# self.issuer.create_credential_offer.assert_not_called()

@pytest.mark.skip(reason="Anoncreds-break")
async def test_receive_offer(self):
Expand Down Expand Up @@ -696,3 +708,13 @@ async def test_issue_credential_non_revocable(self):

# assert data is encoded as base64
assert attachment.data.base64

@pytest.mark.asyncio
async def test_match_sent_cred_def_id_error(self):
tag_query = {"tag": "test_tag"}

with self.assertRaises(V20CredFormatError) as context:
await self.handler._match_sent_cred_def_id(tag_query)
assert "Issuer has no operable cred def for proposal spec " in str(
context.exception
)

0 comments on commit 077ab9b

Please sign in to comment.