Skip to content

Commit b7f8d96

Browse files
committed
WIP Proposed new design for initialising webhook server on an AriesAgentController
* Init webhook server starts directly via init_webhook_server and listens * listen_webhooks no longer separate method * checks for valid input types and non empty IP address * tests passing
1 parent 91e872c commit b7f8d96

File tree

2 files changed

+23
-30
lines changed

2 files changed

+23
-30
lines changed

aries_cloudcontroller/aries_controller.py

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def __post_init__(self):
3636
self.admin_url, self.client_session
3737
)
3838

39-
def init_webhook_server(
39+
async def init_webhook_server(
4040
self, webhook_host: str, webhook_port: int, webhook_base: str = ""
4141
):
4242
"""Create a webhooklisteners
@@ -53,21 +53,15 @@ def init_webhook_server(
5353
assert type(webhook_host) is str
5454
assert webhook_host != ""
5555
assert type(webhook_port) is int
56-
self.webhook_server: AriesWebhookServer = AriesWebhookServer(
57-
webhook_host=webhook_host,
58-
webhook_port=webhook_port,
59-
webhook_base=webhook_base,
60-
is_multitenant=self.is_multitenant,
61-
)
62-
63-
async def listen_webhooks(self):
6456
try:
57+
self.webhook_server: AriesWebhookServer = AriesWebhookServer(
58+
webhook_host=webhook_host,
59+
webhook_port=webhook_port,
60+
webhook_base=webhook_base,
61+
is_multitenant=self.is_multitenant,
62+
)
6563
await self.webhook_server.listen_webhooks()
6664
logger.info("Webhook server started.")
67-
except AttributeError:
68-
warning = "Webhook server not initialised."
69-
logger.warning(warning)
70-
raise AttributeError(warning)
7165
except Exception as exc:
72-
logger.warning(f"Listening webhooks failed! {exc!r} occurred.")
66+
logger.error(f"Listening webhooks failed! {exc!r} occurred.")
7367
raise Exception(f"{exc!r}")

tests/test_aries_controller.py

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,9 @@ async def test_init_args_multi_true(self):
4242
@pytest.mark.asyncio
4343
async def test_init_webhook_server(self):
4444
ac = AriesAgentController(admin_url=self.admin_url, is_multitenant=True)
45-
ac.init_webhook_server(self.webhook_host, self.webhook_port, self.webhook_base)
45+
await ac.init_webhook_server(
46+
self.webhook_host, self.webhook_port, self.webhook_base
47+
)
4648
assert type(ac.webhook_server) == AriesWebhookServer
4749
assert ac.webhook_server.webhook_base == self.webhook_base
4850
assert ac.webhook_server.webhook_port == self.webhook_port
@@ -54,36 +56,33 @@ async def test_init_webhook_server(self):
5456
async def test_init_webhook_server_args_host_type(self):
5557
with pytest.raises(AssertionError):
5658
ac = AriesAgentController(admin_url=self.admin_url, is_multitenant=True)
57-
ac.init_webhook_server(webhook_host=1234, webhook_port=1234, webhook_base=self.webhook_base)
59+
await ac.init_webhook_server(
60+
webhook_host=1234, webhook_port=1234, webhook_base=self.webhook_base
61+
)
5862

5963
@pytest.mark.asyncio
6064
async def test_init_webhook_server_args_host_non_empty(self):
6165
with pytest.raises(AssertionError):
6266
ac = AriesAgentController(admin_url=self.admin_url, is_multitenant=True)
63-
ac.init_webhook_server(webhook_host="", webhook_port=1234, webhook_base=self.webhook_base)
67+
await ac.init_webhook_server(
68+
webhook_host="", webhook_port=1234, webhook_base=self.webhook_base
69+
)
6470

6571
@pytest.mark.asyncio
6672
async def test_init_webhook_server_args_port(self):
6773
with pytest.raises(AssertionError):
6874
ac = AriesAgentController(admin_url=self.admin_url, is_multitenant=True)
69-
ac.init_webhook_server(webhook_host="", webhook_port="1234", webhook_base=self.webhook_base)
70-
71-
@pytest.mark.asyncio
72-
async def test_listen_webhooks_error(self, caplog):
73-
caplog.set_level(logging.WARNING)
74-
ac = AriesAgentController(admin_url=self.admin_url, is_multitenant=True)
75-
with pytest.raises(AttributeError) as ae:
76-
await ac.listen_webhooks()
77-
assert "Webhook server not initialised." in str(ae.value)
78-
assert "Webhook server not initialised." in caplog.text
79-
await ac.terminate()
75+
await ac.init_webhook_server(
76+
webhook_host="", webhook_port="1234", webhook_base=self.webhook_base
77+
)
8078

8179
@pytest.mark.asyncio
8280
async def test_init_webhook_server_terminate(self, caplog):
8381
caplog.set_level(logging.INFO)
8482
ac = AriesAgentController(admin_url=self.admin_url, is_multitenant=True)
85-
ac.init_webhook_server(self.webhook_host, self.webhook_port, self.webhook_base)
86-
await ac.listen_webhooks()
83+
await ac.init_webhook_server(
84+
self.webhook_host, self.webhook_port, self.webhook_base
85+
)
8786
assert "Webhook server started." in caplog.text
8887
res = await ac.webhook_server.terminate()
8988
assert "Webhook server terminated." in caplog.text

0 commit comments

Comments
 (0)