Source code for aries_cloudagent.wallet.tests.test_indy_wallet

import pytest
import os

from aries_cloudagent.wallet.basic import BasicWallet
from aries_cloudagent.wallet.indy import IndyWallet
from aries_cloudagent.postgres import load_postgres_plugin

from . import test_basic_wallet


[docs]@pytest.fixture() async def basic_wallet(): wallet = BasicWallet() await wallet.open() yield wallet await wallet.close()
[docs]@pytest.fixture() async def wallet(): wallet = IndyWallet( {"auto_create": True, "auto_remove": True, "name": "test-wallet"} ) await wallet.open() yield wallet await wallet.close()
@pytest.mark.indy class TestIndyWallet(test_basic_wallet.TestBasicWallet): """Apply all BasicWallet tests against IndyWallet""" @pytest.mark.indy class TestWalletCompat: """ """ test_seed = "testseed000000000000000000000001" test_did = "55GkHamhTU1ZbTbV2ab9DE" test_verkey = "3Dn1SJNPaCXcvvJvSbsFWP2xaCjMom3can8CQNhWrTRx" test_message = "test message" @pytest.mark.asyncio async def test_compare_anon_encrypt(self, basic_wallet, wallet): """ Ensure that python-based encrypt/decrypt is compatible with indy-sdk implementation """ bin_msg = self.test_message.encode("ascii") await basic_wallet.create_local_did(self.test_seed) py_enc_message = await basic_wallet.encrypt_message(bin_msg, self.test_verkey) await wallet.create_local_did(self.test_seed) enc_message = await wallet.encrypt_message(bin_msg, self.test_verkey) py_decrypt, from_vk = await basic_wallet.decrypt_message( enc_message, self.test_verkey, False ) assert py_decrypt == bin_msg assert from_vk is None decrypt, from_vk = await wallet.decrypt_message( py_enc_message, self.test_verkey, False ) assert decrypt == bin_msg assert from_vk is None @pytest.mark.asyncio async def test_compare_auth_encrypt(self, basic_wallet, wallet): """ Ensure that python-based encrypt/decrypt is compatible with indy-sdk implementation """ bin_msg = self.test_message.encode("ascii") await basic_wallet.create_local_did(self.test_seed) py_enc_message = await basic_wallet.encrypt_message( bin_msg, self.test_verkey, self.test_verkey ) await wallet.create_local_did(self.test_seed) enc_message = await wallet.encrypt_message( bin_msg, self.test_verkey, self.test_verkey ) py_decrypt, from_vk = await basic_wallet.decrypt_message( enc_message, self.test_verkey, True ) assert py_decrypt == bin_msg assert from_vk == self.test_verkey decrypt, from_vk = await wallet.decrypt_message( py_enc_message, self.test_verkey, True ) assert decrypt == bin_msg assert from_vk == self.test_verkey @pytest.mark.asyncio async def test_compare_pack(self, basic_wallet, wallet): """ Ensure that python-based pack/unpack is compatible with indy-sdk implementation """ await basic_wallet.create_local_did(self.test_seed) py_packed = await basic_wallet.pack_message( self.test_message, [self.test_verkey], self.test_verkey ) await wallet.create_local_did(self.test_seed) packed = await wallet.pack_message( self.test_message, [self.test_verkey], self.test_verkey ) py_unpacked, from_vk, to_vk = await basic_wallet.unpack_message(packed) assert self.test_message == py_unpacked unpacked, from_vk, to_vk = await wallet.unpack_message(py_packed) assert self.test_message == unpacked # TODO get these to run in docker ci/cd @pytest.mark.asyncio @pytest.mark.postgres async def test_postgres_wallet_works(self): """ Ensure that postgres wallet operations work (create and open wallet, create did, drop wallet) """ postgres_url = os.environ.get("POSTGRES_URL") if not postgres_url: pytest.fail("POSTGRES_URL not configured") load_postgres_plugin() postgres_wallet = IndyWallet( { "auto_create": False, "auto_remove": False, "name": "test_pg_wallet", "key": "my_postgres", "storage_type": "postgres_storage", "storage_config": '{"url":"' + postgres_url + '"}', "storage_creds": '{"account":"postgres","password":"mysecretpassword","admin_account":"postgres","admin_password":"mysecretpassword"}', } ) await postgres_wallet.create() await postgres_wallet.open() await postgres_wallet.create_local_did(self.test_seed) py_packed = await postgres_wallet.pack_message( self.test_message, [self.test_verkey], self.test_verkey ) await postgres_wallet.close() await postgres_wallet.remove()