async def test_is_saving_record(self): context = RequestContext() storage = BasicStorage() context.injector.bind_instance(BaseStorage, storage) context.connection_ready = True context.message = CredentialRequest( credential={ "credential_type": "TEST", "credential_values": { "test": "one", "value": "two" }, }) responder = MockResponder() responder.connection_id = "1234" handler_inst = CredentialRequestHandler() await handler_inst.handle(context, responder) assert len(responder.messages) == 0 assert 1 == len(responder.webhooks) id = responder.webhooks[0][1]["credential_exchange_id"] exchange = await CredentialExchangeRecord.retrieve_by_id(context, id) assert exchange != None assert exchange.connection_id == responder.connection_id assert exchange.state == CredentialExchangeRecord.STATE_REQUEST_RECEIVED assert exchange.credential_request == context.message.credential
async def test_is_handler_saving_record(self): context = RequestContext() # wallet is required for issuer to sign stuff cause it holds keys wallet = BasicWallet() # storage is required to save exchange record and save credential storage = BasicStorage(wallet) # issuer required to create credential issuer = PDSIssuer(wallet) # holder requiered to save credential holder = PDSHolder(context) context.injector.bind_instance(BaseWallet, wallet) context.injector.bind_instance(BaseStorage, storage) context.injector.bind_instance(BaseIssuer, issuer) context.injector.bind_instance(BaseHolder, holder) record = CredentialExchangeRecord( connection_id=connection_id, initiator=CredentialExchangeRecord.INITIATOR_SELF, role=CredentialExchangeRecord.ROLE_HOLDER, state=CredentialExchangeRecord.STATE_REQUEST_SENT, thread_id=thread_id, credential_request=credential_request, ) await record.save(context) credential = await create_credential(context, credential_request, their_public_did="1234-theirdid") context.message: CredentialIssue = CredentialIssue( credential=credential) context.message.assign_thread_id(thread_id) context.connection_ready = True handler_inst = CredentialIssueHandler() responder = MockResponder() responder.connection_id = connection_id await handler_inst.handle(context, responder) credential_id = responder.webhooks[0][1]["credential_id"] assert credential_id credential = await holder.get_credential(credential_id) credential = json.loads(credential) assert credential["credentialSubject"] for key in credential_request["credential_values"]: if (credential["credentialSubject"][key] != credential_request["credential_values"][key]): raise Exception( f"""Requested Credential VALUES differ from Issued Credential, RequestedCredential: {credential_request}, IssuedCredential: {credential}""")