Skip to content

Commit

Permalink
Add some unit tests
Browse files Browse the repository at this point in the history
Signed-off-by: Jamie Hale <[email protected]>
  • Loading branch information
jamshale committed Sep 26, 2024
1 parent f27d76e commit ace88ee
Show file tree
Hide file tree
Showing 2 changed files with 131 additions and 0 deletions.
64 changes: 64 additions & 0 deletions aries_cloudagent/did/indy/tests/test_indy_manager.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
from unittest import IsolatedAsyncioTestCase

from aries_askar import AskarError

from aries_cloudagent.core.in_memory.profile import (
InMemoryProfile,
InMemoryProfileSession,
)
from aries_cloudagent.did.indy.indy_manager import DidIndyManager
from aries_cloudagent.tests import mock
from aries_cloudagent.wallet.did_method import DIDMethods
from aries_cloudagent.wallet.error import WalletError


class TestIndyManager(IsolatedAsyncioTestCase):
async def asyncSetUp(self) -> None:
self.profile = InMemoryProfile.test_profile()

def test_init(self):
assert DidIndyManager(self.profile)

@mock.patch.object(InMemoryProfileSession, "handle")
async def test_register(self, mock_handle):
self.profile.context.injector.bind_instance(
DIDMethods, mock.MagicMock(auto_spec=DIDMethods)
)
mock_handle.insert_key = mock.CoroutineMock()
mock_handle.insert = mock.CoroutineMock()
manager = DidIndyManager(self.profile)
result = await manager.register()
assert result.get("did")
assert result.get("verkey")
mock_handle.insert_key.assert_called_once()
mock_handle.insert.assert_called_once()

# error saving key
mock_handle.insert_key.side_effect = AskarError(
code=1, message="Error saving key"
)
with self.assertRaises(WalletError):
await manager.register()

@mock.patch.object(InMemoryProfileSession, "handle")
async def test_register_with_seed_without_allow_insecure(self, mock_handle):
self.profile.context.injector.bind_instance(
DIDMethods, mock.MagicMock(auto_spec=DIDMethods)
)
mock_handle.insert_key = mock.CoroutineMock()
mock_handle.insert = mock.CoroutineMock()
manager = DidIndyManager(self.profile)
with self.assertRaises(WalletError):
await manager.register("000000000000000000000000Steward1")

@mock.patch.object(InMemoryProfileSession, "handle")
async def test_register_with_seed_with_allow_insecure(self, mock_handle):
self.profile.context.injector.bind_instance(
DIDMethods, mock.MagicMock(auto_spec=DIDMethods)
)
self.profile.settings.set_value("wallet.allow_insecure_seed", True)
mock_handle.insert_key = mock.CoroutineMock()
mock_handle.insert = mock.CoroutineMock()
manager = DidIndyManager(self.profile)

assert await manager.register("000000000000000000000000Steward1")
67 changes: 67 additions & 0 deletions aries_cloudagent/did/indy/tests/test_routes.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
from unittest import IsolatedAsyncioTestCase

from aiohttp import web

from aries_cloudagent.admin.request_context import AdminRequestContext
from aries_cloudagent.core.in_memory.profile import InMemoryProfile
from aries_cloudagent.did.indy.indy_manager import DidIndyManager
from aries_cloudagent.did.indy.routes import create_indy_did
from aries_cloudagent.tests import mock
from aries_cloudagent.wallet.did_method import DIDMethods
from aries_cloudagent.wallet.error import WalletError


class TestDidIndyRoutes(IsolatedAsyncioTestCase):
async def asyncSetUp(self) -> None:
self.session_inject = {}
self.profile = InMemoryProfile.test_profile(
settings={
"admin.admin_api_key": "secret-key",
},
)
self.context = AdminRequestContext.test_context(self.session_inject, self.profile)
self.request_dict = {
"context": self.context,
}
self.request = mock.MagicMock(
app={},
match_info={},
query={},
__getitem__=lambda _, k: self.request_dict[k],
context=self.context,
headers={"x-api-key": "secret-key"},
)

@mock.patch.object(
DidIndyManager,
"register",
return_value={"did": "did:indy:DFZgMggBEXcZFVQ2ZBTwdr", "verkey": "BnSWTUQmdYC"},
)
async def test_create_indy_did(self, mock_register):
self.profile.context.injector.bind_instance(
DIDMethods, mock.MagicMock(auto_spec=DIDMethods)
)
self.request.json = mock.CoroutineMock(return_value={})
response = await create_indy_did(self.request)
assert response.status == 200
assert mock_register.called

self.request.json = mock.CoroutineMock(
return_value={"seed": "000000000000000000000000Steward1"}
)
response = await create_indy_did(self.request)
assert response.status == 200
assert mock_register.called

@mock.patch.object(
DidIndyManager,
"register",
side_effect=[WalletError("Error creating DID")],
)
async def test_create_indy_did_wallet_error(self, _):
self.profile.context.injector.bind_instance(
DIDMethods, mock.MagicMock(auto_spec=DIDMethods)
)
self.request.json = mock.CoroutineMock(return_value={})
with self.assertRaises(web.HTTPBadRequest):
await create_indy_did(self.request)

0 comments on commit ace88ee

Please sign in to comment.