Skip to content

Commit 5e9c7ae

Browse files
committed
Implemented tests for BaseRegisterWorker
1 parent 36288ca commit 5e9c7ae

File tree

1 file changed

+104
-0
lines changed

1 file changed

+104
-0
lines changed

tests/amqp/test_worker.py

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
import asyncio
2+
from unittest import mock
3+
4+
import pytest
5+
from sage_utils.amqp.extension import AmqpExtension
6+
from sage_utils.amqp.workers import BaseRegisterWorker
7+
8+
from tests.fixtures import Application, FakeConfig, FakeRegisterMicroserviceWorker
9+
10+
11+
REQUEST_QUEUE = FakeRegisterMicroserviceWorker.QUEUE_NAME
12+
REQUEST_EXCHANGE = FakeRegisterMicroserviceWorker.REQUEST_EXCHANGE_NAME
13+
RESPONSE_EXCHANGE_NAME = FakeRegisterMicroserviceWorker.RESPONSE_EXCHANGE_NAME
14+
15+
16+
def valid_microservice_data(_app):
17+
return {'name': 'microservice', 'version': '1.0.0'}
18+
19+
20+
def invalid_microservice_data(_app):
21+
return {}
22+
23+
24+
def test_default_implementation_raises_an_error_when_getting_data():
25+
with pytest.raises(NotImplementedError):
26+
app = Application(config=FakeConfig())
27+
instance = BaseRegisterWorker(app)
28+
instance.get_microservice_data(app)
29+
30+
31+
@pytest.mark.asyncio
32+
async def test_microservice_has_been_registered_successfully(event_loop):
33+
app = Application(config=FakeConfig(), loop=event_loop)
34+
register_worker = FakeRegisterMicroserviceWorker(app)
35+
extension = AmqpExtension(app)
36+
extension.register_worker(register_worker)
37+
38+
await extension.init(event_loop)
39+
40+
instance = BaseRegisterWorker(app)
41+
instance.REQUEST_QUEUE_NAME = REQUEST_QUEUE
42+
instance.REQUEST_EXCHANGE_NAME = REQUEST_EXCHANGE
43+
instance.RESPONSE_EXCHANGE_NAME = RESPONSE_EXCHANGE_NAME
44+
45+
with mock.patch(
46+
target='sage_utils.amqp.workers.BaseRegisterWorker.get_microservice_data',
47+
side_effect=valid_microservice_data
48+
):
49+
result = await instance.run()
50+
assert result is None
51+
52+
await extension.deinit(event_loop)
53+
54+
55+
@pytest.mark.asyncio
56+
async def test_register_worker_raises_an_error_with_invalid_response(event_loop):
57+
app = Application(config=FakeConfig(), loop=event_loop)
58+
register_worker = FakeRegisterMicroserviceWorker(app)
59+
extension = AmqpExtension(app)
60+
extension.register_worker(register_worker)
61+
62+
await extension.init(event_loop)
63+
64+
instance = BaseRegisterWorker(app)
65+
instance.REQUEST_QUEUE_NAME = REQUEST_QUEUE
66+
instance.REQUEST_EXCHANGE_NAME = REQUEST_EXCHANGE
67+
instance.RESPONSE_EXCHANGE_NAME = RESPONSE_EXCHANGE_NAME
68+
instance.RETRY_TIMEOUT = 0.1
69+
instance.MAX_RETRIES = 1
70+
71+
with mock.patch(
72+
target='sage_utils.amqp.workers.BaseRegisterWorker.get_microservice_data',
73+
side_effect=invalid_microservice_data
74+
):
75+
with pytest.raises(ConnectionError):
76+
await instance.run()
77+
78+
await extension.deinit(event_loop)
79+
80+
81+
@pytest.mark.asyncio
82+
async def test_register_worker_raises_an_error(event_loop):
83+
app = Application(config=FakeConfig(), loop=event_loop)
84+
register_worker = FakeRegisterMicroserviceWorker(app)
85+
extension = AmqpExtension(app)
86+
extension.register_worker(register_worker)
87+
88+
await extension.init(event_loop)
89+
90+
instance = BaseRegisterWorker(app)
91+
instance.REQUEST_QUEUE_NAME = 'invalid.queue.name'
92+
instance.REQUEST_EXCHANGE_NAME = 'some.request.exchange'
93+
instance.RESPONSE_EXCHANGE_NAME = 'some.response.exchange'
94+
instance.RETRY_TIMEOUT = 0.1
95+
instance.MAX_RETRIES = 1
96+
97+
with mock.patch(
98+
target='sage_utils.amqp.workers.BaseRegisterWorker.get_microservice_data',
99+
side_effect=valid_microservice_data
100+
):
101+
with pytest.raises(ConnectionError):
102+
await instance.run()
103+
104+
await extension.deinit(event_loop)

0 commit comments

Comments
 (0)