Skip to content

Commit 906e488

Browse files
committed
Add AriesAgentController test. Improve AriesAgentControllerBase tests
1 parent 12b06d6 commit 906e488

File tree

7 files changed

+100
-8
lines changed

7 files changed

+100
-8
lines changed

.coverage

172 KB
Binary file not shown.

libs/aries-basic-controller/aries_basic_controller/aries_controller.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,10 @@ async def listen_webhooks(self):
6363
await self.webhook_server.listen_webhooks()
6464
logger.info("Webhook server started.")
6565
except AttributeError:
66-
logger.warning("Webhook server not initialised.")
66+
warning = "Webhook server not initialised."
67+
logger.warning(warning)
68+
raise AttributeError(warning)
6769
except Exception as exc:
6870
logger.warning(
6971
f"Listening webhooks failed! {exc!r} occurred.")
72+
raise Exception(f"{exc!r}")

libs/aries-basic-controller/aries_basic_controller/aries_controller_base.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,7 @@ async def listen_webhooks(self):
238238

239239
async def terminate(self):
240240
await self.client_session.close()
241+
logger.info("Client Session closed.")
241242
try:
242243
await self.webhook_server.terminate()
243244
except AttributeError:

libs/aries-basic-controller/aries_basic_controller/aries_webhook_server.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ async def terminate(self):
108108
"""Terminate the controller client session and webhook listeners"""
109109
try:
110110
await self.webhook_site.stop()
111+
logger.info("Webhook server terminated.")
111112
except AttributeError:
112113
# Do nothing if no webhook site server is running
113114
return
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
import logging
2+
import pytest
3+
import pytest_asyncio
4+
from aiohttp import (
5+
web,
6+
ClientSession,
7+
)
8+
9+
from ..aries_webhook_server import AriesWebhookServer
10+
from ..controllers.multitenant import MultitenancyController
11+
12+
from ..aries_controller import AriesAgentController
13+
14+
LOGGER = logging.getLogger(__name__)
15+
16+
17+
class TestAriesAgentControllerBase():
18+
19+
admin_url = "0.0.0.0"
20+
webhook_host = ""
21+
webhook_port = 8000
22+
webhook_base = ""
23+
24+
@pytest.mark.asyncio
25+
async def test_init_args_missing(self):
26+
with pytest.raises(TypeError) as te:
27+
AriesAgentController()
28+
assert "__init__() missing 1 required positional argument: 'admin_url'" \
29+
in str(tf.value)
30+
31+
@pytest.mark.asyncio
32+
async def test_init_args_multi_default(self):
33+
ac = AriesAgentController(admin_url=self.admin_url)
34+
assert ac.is_multitenant == False
35+
36+
@pytest.mark.asyncio
37+
async def test_init_args_multi_true(self):
38+
ac = AriesAgentController(admin_url=self.admin_url, is_multitenant=True)
39+
assert ac.is_multitenant == True
40+
assert type(ac.multitenant) == MultitenancyController
41+
assert ac.multitenant.admin_url == self.admin_url
42+
assert ac.multitenant.client_session.headers == {}
43+
await ac.terminate()
44+
45+
@pytest.mark.asyncio
46+
async def test_init_webhook_server(self):
47+
ac = AriesAgentController(admin_url=self.admin_url, is_multitenant=True)
48+
ac.init_webhook_server(
49+
self.webhook_host,
50+
self.webhook_port,
51+
self.webhook_base
52+
)
53+
assert type(ac.webhook_server) == AriesWebhookServer
54+
assert ac.webhook_server.webhook_base == self.webhook_base
55+
assert ac.webhook_server.webhook_port == self.webhook_port
56+
assert ac.webhook_server.webhook_host == self.webhook_host
57+
assert ac.webhook_server.is_multitenant == True
58+
await ac.terminate()
59+
60+
@pytest.mark.asyncio
61+
async def test_listen_webhooks_error(self, caplog):
62+
caplog.set_level(logging.WARNING)
63+
ac = AriesAgentController(admin_url=self.admin_url, is_multitenant=True)
64+
with pytest.raises(AttributeError) as ae:
65+
await ac.listen_webhooks()
66+
assert "Webhook server not initialised." in str(ae.value)
67+
assert "Webhook server not initialised." in caplog.text
68+
await ac.terminate()
69+
70+
@pytest.mark.asyncio
71+
async def test_init_webhook_server(self, caplog):
72+
caplog.set_level(logging.INFO)
73+
ac = AriesAgentController(admin_url=self.admin_url, is_multitenant=True)
74+
ac.init_webhook_server(
75+
self.webhook_host,
76+
self.webhook_port,
77+
self.webhook_base
78+
)
79+
await ac.listen_webhooks()
80+
assert "Webhook server started." in caplog.text
81+
res = await ac.webhook_server.terminate()
82+
assert "Webhook server terminated." in caplog.text
83+
assert res == None
84+
await ac.terminate()

libs/aries-basic-controller/aries_basic_controller/tests/test_aries_controller_base.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import logging
12
import pytest
23
import pytest_asyncio
34
from aiohttp import (
@@ -20,18 +21,17 @@
2021
from ..controllers.action_menu import ActionMenuController
2122
from ..controllers.revocation import RevocationController
2223

23-
# @pytest.fixture()
24-
# def base_controller(**kwargs):
25-
# return AriesAgentControllerBase(**kwargs)
24+
LOGGER = logging.getLogger(__name__)
25+
2626

2727
class TestAriesAgentControllerBase():
2828

2929
@pytest.mark.asyncio
3030
async def test_init_args_missing(self):
3131
with pytest.raises(TypeError) as te:
32-
AriesAgentControllerBase()
32+
ac = AriesAgentControllerBase()
3333
assert "__init__() missing 1 required positional argument: 'admin_url'" \
34-
in str(tf.value)
34+
in str(te.value)
3535

3636
@pytest.mark.asyncio
3737
async def test_default_args(self):
@@ -124,9 +124,11 @@ async def test_listen_webhooks(self):
124124
await ac.terminate()
125125

126126
@pytest.mark.asyncio
127-
async def test_terminate(self):
127+
async def test_terminate(self, caplog):
128+
caplog.set_level(logging.INFO)
128129
ac = AriesAgentControllerBase(admin_url="0.0.0.0")
129130
await ac.terminate()
131+
assert "Client Session closed." in caplog.text
130132
assert ac.client_session.closed == True
131133
with pytest.raises(AttributeError):
132134
assert ac.webhook_server == None

libs/aries-basic-controller/requirements.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ python-dotenv
77
termcolor
88
pillow
99
qrcode
10-
beautifulsoup4
10+
beautifulsoup4
11+
pytest~=6.2.3

0 commit comments

Comments
 (0)