diff --git a/.gitignore b/.gitignore index 60219ab..19b97b7 100644 --- a/.gitignore +++ b/.gitignore @@ -7,10 +7,11 @@ __pycache__ !.dockerignore # Ignore items in test (report, cache, etc), except files starting with test -tests/* +tests/logs +tests/tmp.db !tests/test* !tests/test_certs -!tests/pytest.ini +!pytest.ini !tests/passwd !tests/passwd_bad diff --git a/bumper/mqttserver.py b/bumper/mqttserver.py index 6b0286b..f850ffc 100644 --- a/bumper/mqttserver.py +++ b/bumper/mqttserver.py @@ -42,19 +42,23 @@ class CommandDto: class MQTTHelperBot: Client = None - wait_resp_timeout_seconds = 60 - def __init__(self, host: str, port: int): - self._commands: MutableMapping[str, CommandDto] = TTLCache(maxsize=self.wait_resp_timeout_seconds * 60, - ttl=self.wait_resp_timeout_seconds + 10) + def __init__(self, host: str, port: int, timeout: float = 60): + self._commands: MutableMapping[str, CommandDto] = TTLCache(maxsize=timeout * 60, + ttl=timeout*1.1) self._host = host self._port = port self.client_id = "helperbot@bumper/helperbot" + self._timeout = timeout @property def commands(self) -> MutableMapping[str, CommandDto]: return self._commands + @property + def timeout(self)->float: + return self._timeout + async def start_helper_bot(self): try: if self.Client is None: @@ -74,7 +78,7 @@ class MQTTHelperBot: async def _wait_for_resp(self, command_dto: CommandDto, request_id: str): try: - payload = await asyncio.wait_for(command_dto.wait_for_response(), timeout=self.wait_resp_timeout_seconds) + payload = await asyncio.wait_for(command_dto.wait_for_response(), timeout=self.timeout) return { "id": request_id, "ret": "ok", diff --git a/tests/pytest.ini b/pytest.ini similarity index 82% rename from tests/pytest.ini rename to pytest.ini index 9ca2dc7..fe2b891 100644 --- a/tests/pytest.ini +++ b/pytest.ini @@ -3,3 +3,6 @@ env = D:BUMPER_CA=tests/test_certs/ca.crt D:BUMPER_CERT=tests/test_certs/bumper.crt D:BUMPER_KEY=tests/test_certs/bumper.key + +#log_cli=true +#log_level=DEBUG \ No newline at end of file diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/const.py b/tests/const.py new file mode 100644 index 0000000..f2a229f --- /dev/null +++ b/tests/const.py @@ -0,0 +1,2 @@ +HOST= "127.0.0.1" +MQTT_PORT = 8883 diff --git a/tests/test_confserver.py b/tests/test_confserver.py index ba0e16f..058e40a 100644 --- a/tests/test_confserver.py +++ b/tests/test_confserver.py @@ -13,6 +13,8 @@ import logging from testfixtures import LogCapture from unittest.mock import MagicMock +from tests.const import HOST, MQTT_PORT + def create_confserver(): return bumper.ConfServer("127.0.0.1:11111", False) @@ -36,14 +38,14 @@ def remove_existing_db(): async def test_confserver_ssl(): - conf_server = bumper.ConfServer(("127.0.0.1", 111111), usessl=True) + conf_server = bumper.ConfServer((HOST, 111111), usessl=True) conf_server.confserver_app() asyncio.create_task(conf_server.start_server()) async def test_confserver_exceptions(): with LogCapture() as l: - conf_server = bumper.ConfServer(("127.0.0.1", 8007), usessl=True) + conf_server = bumper.ConfServer((HOST, 8007), usessl=True) conf_server.confserver_app() conf_server.site = web.TCPSite @@ -67,7 +69,7 @@ async def test_confserver_exceptions(): async def test_confserver_no_ssl(): - conf_server = bumper.ConfServer(("127.0.0.1", 111111), usessl=False) + conf_server = bumper.ConfServer((HOST, 111111), usessl=False) conf_server.confserver_app() asyncio.create_task(conf_server.start_server()) @@ -89,19 +91,18 @@ async def test_base(aiohttp_client): bumper.db = "tests/tmp.db" # Set db location for testing # Start MQTT - mqtt_address = ("127.0.0.1", 8883) - mqtt_server = bumper.MQTTServer(mqtt_address, password_file="tests/passwd") + mqtt_server = bumper.MQTTServer(HOST, MQTT_PORT, password_file="tests/passwd") bumper.mqtt_server = mqtt_server await mqtt_server.broker_coro() # Start XMPP - xmpp_address = ("127.0.0.1", 5223) + xmpp_address = (HOST, 5223) xmpp_server = bumper.XMPPServer(xmpp_address) bumper.xmpp_server = xmpp_server await xmpp_server.start_async_server() # Start Helperbot - mqtt_helperbot = bumper.MQTTHelperBot(mqtt_address) + mqtt_helperbot = bumper.MQTTHelperBot(HOST, MQTT_PORT) bumper.mqtt_helperbot = mqtt_helperbot await mqtt_helperbot.start_helper_bot() @@ -121,19 +122,18 @@ async def test_restartService(aiohttp_client): bumper.db = "tests/tmp.db" # Set db location for testing # Start MQTT - mqtt_address = ("127.0.0.1", 8883) - mqtt_server = bumper.MQTTServer(mqtt_address, password_file="tests/passwd") + mqtt_server = bumper.MQTTServer(HOST, MQTT_PORT, password_file="tests/passwd") bumper.mqtt_server = mqtt_server await mqtt_server.broker_coro() # Start XMPP - xmpp_address = ("127.0.0.1", 5223) + xmpp_address = (HOST, 5223) xmpp_server = bumper.XMPPServer(xmpp_address) bumper.xmpp_server = xmpp_server await xmpp_server.start_async_server() # Start Helperbot - mqtt_helperbot = bumper.MQTTHelperBot(mqtt_address) + mqtt_helperbot = bumper.MQTTHelperBot(HOST, MQTT_PORT) bumper.mqtt_helperbot = mqtt_helperbot await mqtt_helperbot.start_helper_bot() @@ -830,7 +830,7 @@ async def test_lg_logs(aiohttp_client): bumper.bot_set_mqtt("did_1234", True) confserver = create_confserver() client = await aiohttp_client(create_app) - bumper.mqtt_helperbot = bumper.mqttserver.MQTTHelperBot("127.0.0.1") + bumper.mqtt_helperbot = bumper.mqttserver.MQTTHelperBot(HOST, MQTT_PORT) # Test return get status command_getstatus_resp = { @@ -889,7 +889,7 @@ async def test_devmgr(aiohttp_client): bumper.db = "tests/tmp.db" # Set db location for testing confserver = create_confserver() client = await aiohttp_client(create_app) - bumper.mqtt_helperbot = bumper.mqttserver.MQTTHelperBot("127.0.0.1") + bumper.mqtt_helperbot = bumper.mqttserver.MQTTHelperBot(HOST, MQTT_PORT) # Test PollSCResult postbody = {"td": "PollSCResult"} @@ -945,7 +945,7 @@ async def test_dim_devmanager(aiohttp_client): bumper.db = "tests/tmp.db" # Set db location for testing confserver = create_confserver() client = await aiohttp_client(create_app) - bumper.mqtt_helperbot = bumper.mqttserver.MQTTHelperBot("127.0.0.1") + bumper.mqtt_helperbot = bumper.mqttserver.MQTTHelperBot(HOST, MQTT_PORT) # Test PollSCResult postbody = {"td": "PollSCResult"} diff --git a/tests/test_mqttserver.py b/tests/test_mqttserver.py index 7fc0918..aebbd8d 100644 --- a/tests/test_mqttserver.py +++ b/tests/test_mqttserver.py @@ -12,16 +12,16 @@ import logging from testfixtures import LogCapture import time +from tests.const import HOST, MQTT_PORT async def test_helperbot_message(): - mqtt_address = ("127.0.0.1", 8883) - mqtt_server = bumper.MQTTServer(mqtt_address, password_file="tests/passwd") + mqtt_server = bumper.MQTTServer(HOST, MQTT_PORT, password_file="tests/passwd") await mqtt_server.broker_coro() with LogCapture() as l: # Test broadcast message - mqtt_helperbot = bumper.MQTTHelperBot(mqtt_address) + mqtt_helperbot = bumper.MQTTHelperBot(HOST, MQTT_PORT) await mqtt_helperbot.start_helper_bot() assert ( mqtt_helperbot.Client._connected_state._value == True @@ -45,7 +45,7 @@ async def test_helperbot_message(): mqtt_helperbot.Client.disconnect() # Send command to bot - mqtt_helperbot = bumper.MQTTHelperBot(mqtt_address) + mqtt_helperbot = bumper.MQTTHelperBot(HOST, MQTT_PORT) await mqtt_helperbot.start_helper_bot() assert ( mqtt_helperbot.Client._connected_state._value == True @@ -71,7 +71,7 @@ async def test_helperbot_message(): mqtt_helperbot.Client.disconnect() # Received response to command - mqtt_helperbot = bumper.MQTTHelperBot(mqtt_address) + mqtt_helperbot = bumper.MQTTHelperBot(HOST, MQTT_PORT) await mqtt_helperbot.start_helper_bot() assert ( mqtt_helperbot.Client._connected_state._value == True @@ -97,7 +97,7 @@ async def test_helperbot_message(): mqtt_helperbot.Client.disconnect() # Received unknown message - mqtt_helperbot = bumper.MQTTHelperBot(mqtt_address) + mqtt_helperbot = bumper.MQTTHelperBot(HOST, MQTT_PORT) await mqtt_helperbot.start_helper_bot() assert ( mqtt_helperbot.Client._connected_state._value == True @@ -124,7 +124,7 @@ async def test_helperbot_message(): mqtt_helperbot.Client.disconnect() # Received error message - mqtt_helperbot = bumper.MQTTHelperBot(mqtt_address) + mqtt_helperbot = bumper.MQTTHelperBot(HOST, MQTT_PORT) await mqtt_helperbot.start_helper_bot() assert ( mqtt_helperbot.Client._connected_state._value == True @@ -151,78 +151,55 @@ async def test_helperbot_message(): async def test_helperbot_expire_message(): - mqtt_address = ("127.0.0.1", 8883) - mqtt_server = bumper.MQTTServer(mqtt_address, password_file="tests/passwd") + mqtt_server = bumper.MQTTServer(HOST, MQTT_PORT, password_file="tests/passwd") await mqtt_server.broker_coro() - with LogCapture("helperbot") as l: + timeout = 0.1 + # Test broadcast message + mqtt_helperbot = bumper.MQTTHelperBot(HOST, MQTT_PORT,timeout) + bumper.mqtt_helperbot = mqtt_helperbot + await mqtt_helperbot.start_helper_bot() + assert ( + mqtt_helperbot.Client._connected_state._value == True + ) # Check helperbot is connected - # Test broadcast message - mqtt_helperbot = bumper.MQTTHelperBot(mqtt_address) - bumper.mqtt_helperbot = mqtt_helperbot - await mqtt_helperbot.start_helper_bot() - assert ( - mqtt_helperbot.Client._connected_state._value == True - ) # Check helperbot is connected - - expire_msg_payload = '{"ret":"ok","ver":"0.13.5"}' - expire_msg_topic_name = "iot/p2p/GetWKVer/bot_serial/ls1ok3/wC3g/helperbot/bumper/helperbot/p/testgood/j" - currenttime = time.time() - mqtt_helperbot.command_responses.append( - { - "time": currenttime, - "topic": expire_msg_topic_name, - "payload": expire_msg_payload, - } - ) - - assert { + expire_msg_payload = '{"ret":"ok","ver":"0.13.5"}' + expire_msg_topic_name = "iot/p2p/GetWKVer/bot_serial/ls1ok3/wC3g/helperbot/bumper/helperbot/p/testgood/j" + currenttime = time.time() + request_id = "ABC" + data = { "time": currenttime, "topic": expire_msg_topic_name, "payload": expire_msg_payload, - } in mqtt_helperbot.command_responses # check message is in command_responses - - await asyncio.sleep(0.1) - mqtt_helperbot.expire_msg_seconds = ( - 0.1 - ) # Set expire message seconds to 0.1 so we don't wait 10 seconds - msg_payload = "" - msg_topic_name = "iot/atr/DustCaseST/bot_serial/ls1ok3/wC3g/x" - await mqtt_helperbot.Client.publish( - msg_topic_name, msg_payload.encode(), hbmqtt.client.QOS_0 - ) # Send another message to force get_msg + } - await asyncio.wait_for(mqtt_helperbot.Client.deliver_message(), timeout=0.1) + mqtt_helperbot.commands[request_id]= data + assert mqtt_helperbot.commands[request_id] == data - assert { - "time": currenttime, - "topic": expire_msg_topic_name, - "payload": expire_msg_payload, - } not in mqtt_helperbot.command_responses # check message was expired and removed from command_responses + await asyncio.sleep(0.1) + msg_payload = "" + msg_topic_name = "iot/atr/DustCaseST/bot_serial/ls1ok3/wC3g/x" + await mqtt_helperbot.Client.publish( + msg_topic_name, msg_payload.encode(), hbmqtt.client.QOS_0 + ) # Send another message to force get_msg - l.check_present( - ( - "helperbot", - "DEBUG", - "Pruning Message Due To Expiration - Message Topic: {}".format( - expire_msg_topic_name - ), - ) - ) # Check received message was logged - mqtt_helperbot.Client.disconnect() + await asyncio.sleep(timeout*2) + assert mqtt_helperbot.commands.get(request_id, None) == None + + await mqtt_helperbot.Client.disconnect() await mqtt_server.broker.shutdown() async def test_helperbot_sendcommand(): - mqtt_address = ("127.0.0.1", 8883) - mqtt_server = bumper.MQTTServer(mqtt_address, password_file="tests/passwd") + mqtt_server = bumper.MQTTServer(HOST, MQTT_PORT, password_file="tests/passwd") await mqtt_server.broker_coro() - mqtt_helperbot = bumper.MQTTHelperBot(mqtt_address) + timeout = 0.1 + mqtt_helperbot = bumper.MQTTHelperBot(HOST, MQTT_PORT, timeout) bumper.mqtt_helperbot = mqtt_helperbot await mqtt_helperbot.start_helper_bot() assert ( @@ -245,9 +222,6 @@ async def test_helperbot_sendcommand(): "realm": "ecouser.net", }, } - mqtt_helperbot.wait_resp_timeout_seconds = ( - 0.1 - ) # Override wait_resp_timeout (so we don't wait 10 seconds for timeout) commandresult = await mqtt_helperbot.send_command(cmdjson, "testfail") # Don't send a response, ensure timeout assert commandresult == { @@ -257,9 +231,6 @@ async def test_helperbot_sendcommand(): "ret": "fail", } # Check timeout - mqtt_helperbot.wait_resp_timeout_seconds = ( - 0.2 - ) # Override wait_resp_timeout (so we don't wait 10 seconds for timeout) # Send response beforehand msg_payload = '{"ret":"ok","ver":"0.13.5"}' msg_topic_name = ( @@ -296,9 +267,6 @@ async def test_helperbot_sendcommand(): }, } - mqtt_helperbot.wait_resp_timeout_seconds = ( - 0.2 - ) # Override wait_resp_timeout (so we don't wait 10 seconds for timeout) # Send response beforehand msg_payload = "" msg_topic_name = ( @@ -340,9 +308,6 @@ async def test_helperbot_sendcommand(): }, } - mqtt_helperbot.wait_resp_timeout_seconds = ( - 0.2 - ) # Override wait_resp_timeout (so we don't wait 10 seconds for timeout) # Send response beforehand msg_payload = '{"body":{"code":0,"data":{"area":0,"cid":"111","start":"1569378657","time":6,"type":"auto"},"msg":"ok"},"header":{"fwVer":"1.6.4","hwVer":"0.1.1","pri":1,"ts":"1569380074036","tzm":480,"ver":"0.0.1"}}' @@ -373,14 +338,13 @@ async def test_mqttserver(): bumper.db = "tests/tmp.db" # Set db location for testing - mqtt_address = ("127.0.0.1", 8883) - mqtt_server = bumper.MQTTServer(mqtt_address, password_file="tests/passwd", allow_anonymous=True) + mqtt_server = bumper.MQTTServer(HOST, MQTT_PORT, password_file="tests/passwd", allow_anonymous=True) await mqtt_server.broker_coro() # Test helperbot connect - mqtt_helperbot = bumper.MQTTHelperBot(mqtt_address) + mqtt_helperbot = bumper.MQTTHelperBot(HOST, MQTT_PORT) await mqtt_helperbot.start_helper_bot() assert ( mqtt_helperbot.Client._connected_state._value == True @@ -390,7 +354,7 @@ async def test_mqttserver(): # Test client connect bumper.user_add("user_123") # Add user to db bumper.client_add("user_123", "ecouser.net", "resource_123") # Add client to db - test_client = bumper.MQTTHelperBot(mqtt_address) + test_client = bumper.MQTTHelperBot(HOST, MQTT_PORT) test_client.client_id = "user_123@ecouser.net/resource_123" # await test_client.start_helper_bot() test_client.Client = hbmqtt.client.MQTTClient( @@ -398,7 +362,7 @@ async def test_mqttserver(): ) await test_client.Client.connect( - f"mqtts://{test_client.address[0]}:{test_client.address[1]}/", + f"mqtts://{HOST}:{MQTT_PORT}/", cafile=bumper.ca_cert, ) assert ( @@ -410,7 +374,7 @@ async def test_mqttserver(): ) # Check client is disconnected # Test fake_bot connect - fake_bot = bumper.MQTTHelperBot(mqtt_address) + fake_bot = bumper.MQTTHelperBot(HOST, MQTT_PORT) fake_bot.client_id = "bot_serial@ls1ok3/wC3g" await fake_bot.start_helper_bot() assert ( @@ -419,7 +383,7 @@ async def test_mqttserver(): await fake_bot.Client.disconnect() # Test file auth client connect - test_client = bumper.MQTTHelperBot(mqtt_address) + test_client = bumper.MQTTHelperBot(HOST, MQTT_PORT) test_client.client_id = "test-file-auth" # await test_client.start_helper_bot() test_client.Client = hbmqtt.client.MQTTClient( @@ -428,7 +392,7 @@ async def test_mqttserver(): # good user/pass await test_client.Client.connect( - f"mqtts://test-client:abc123!@{test_client.address[0]}:{test_client.address[1]}/", + f"mqtts://test-client:abc123!@{HOST}:{MQTT_PORT}/", cafile=bumper.ca_cert, cleansession=True ) @@ -444,7 +408,7 @@ async def test_mqttserver(): with LogCapture() as l: await test_client.Client.connect( - f"mqtts://test-client:notvalid!@{test_client.address[0]}:{test_client.address[1]}/", + f"mqtts://test-client:notvalid!@{HOST}:{MQTT_PORT}/", cafile=bumper.ca_cert, cleansession=True ) @@ -454,7 +418,7 @@ async def test_mqttserver(): ) # no username in file await test_client.Client.connect( - f"mqtts://test-client-noexist:notvalid!@{test_client.address[0]}:{test_client.address[1]}/", + f"mqtts://test-client-noexist:notvalid!@{HOST}:{MQTT_PORT}/", cafile=bumper.ca_cert, cleansession=True ) @@ -469,9 +433,8 @@ async def test_mqttserver(): async def test_nofileauth_mqttserver(): with LogCapture() as l: - - mqtt_address = ("127.0.0.1", 8883) - mqtt_server = bumper.MQTTServer(mqtt_address, password_file="tests/passwd-notfound") + + mqtt_server = bumper.MQTTServer(HOST, MQTT_PORT, password_file="tests/passwd-notfound") await mqtt_server.broker_coro() await mqtt_server.broker.shutdown() diff --git a/tests/test_xmppserver.py b/tests/test_xmppserver.py index 5140338..776cd0d 100644 --- a/tests/test_xmppserver.py +++ b/tests/test_xmppserver.py @@ -73,12 +73,12 @@ async def test_client_connect_no_starttls(*args, **kwargs): assert mock_send.call_count == 2 # Server opens stream assert ( - mock_send.mock_calls[0].args[0] + mock_send.mock_calls[0][1][0] == '' ) # Server tells client available features assert ( - mock_send.mock_calls[1].args[0] + mock_send.mock_calls[1][1][0] == 'PLAIN' ) @@ -90,7 +90,7 @@ async def test_client_connect_no_starttls(*args, **kwargs): xmppclient._parse_data(test_data) assert ( - mock_send.mock_calls[0].args[0] + mock_send.mock_calls[0][1][0] == '' ) # Client successfully authenticated assert xmppclient.state == xmppclient.INIT # Client moved to INIT state @@ -111,7 +111,7 @@ async def test_client_end_stream(*args, **kwargs): # Expect 2 calls to send assert mock_send.call_count == 1 # Server opens stream - assert mock_send.mock_calls[0].args[0] == "" + assert mock_send.mock_calls[0][1][0] == "" # Reset mock calls mock_send.reset_mock() @@ -144,12 +144,12 @@ async def test_client_connect_starttls_called(*args, **kwargs): assert mock_send.call_count == 2 # Server opens stream assert ( - mock_send.mock_calls[0].args[0] + mock_send.mock_calls[0][1][0] == '' ) # Server tells client available features assert ( - mock_send.mock_calls[1].args[0] + mock_send.mock_calls[1][1][0] == 'PLAIN' ) @@ -175,12 +175,12 @@ async def test_client_connect_starttls_called(*args, **kwargs): assert mock_send.call_count == 2 # Server opens stream assert ( - mock_send.mock_calls[0].args[0] + mock_send.mock_calls[0][1][0] == '' ) # Server tells client available features (without STARTTLS) assert ( - mock_send.mock_calls[1].args[0] + mock_send.mock_calls[1][1][0] == 'PLAIN' ) # Reset mock calls @@ -191,7 +191,7 @@ async def test_client_connect_starttls_called(*args, **kwargs): xmppclient._parse_data(test_data) assert ( - mock_send.mock_calls[0].args[0] + mock_send.mock_calls[0][1][0] == '' ) # Client successfully authenticated assert xmppclient.state == xmppclient.INIT # Client moved to INIT state @@ -274,12 +274,12 @@ async def test_client_init(*args, **kwargs): assert mock_send.call_count == 2 # Server opens stream assert ( - mock_send.mock_calls[0].args[0] + mock_send.mock_calls[0][1][0] == '' ) # Server tells client binds assert ( - mock_send.mock_calls[1].args[0] + mock_send.mock_calls[1][1][0] == '' ) @@ -291,7 +291,7 @@ async def test_client_init(*args, **kwargs): xmppclient._parse_data(test_data) assert ( - mock_send.mock_calls[0].args[0] + mock_send.mock_calls[0][1][0] == 'fuid_tmpuser@ecouser.net/IOSF53D07BA' ) # client successfully binded assert xmppclient.state == xmppclient.BIND # client moved to BIND state @@ -305,7 +305,7 @@ async def test_client_init(*args, **kwargs): assert xmppclient.state == xmppclient.READY # client moved to READY state assert ( - mock_send.mock_calls[0].args[0] + mock_send.mock_calls[0][1][0] == '' ) # client ready @@ -317,7 +317,7 @@ async def test_client_init(*args, **kwargs): xmppclient._parse_data(test_data) assert ( - mock_send.mock_calls[0].args[0] + mock_send.mock_calls[0][1][0] == ' dummy ' ) # client presence - dummy response @@ -338,12 +338,12 @@ async def test_bot_connect(*args, **kwargs): assert mock_send.call_count == 2 # Server opens stream assert ( - mock_send.mock_calls[0].args[0] + mock_send.mock_calls[0][1][0] == '' ) # Server tells client available features assert ( - mock_send.mock_calls[1].args[0] + mock_send.mock_calls[1][1][0] == 'PLAIN' ) @@ -355,7 +355,7 @@ async def test_bot_connect(*args, **kwargs): xmppclient._parse_data(test_data) assert ( - mock_send.mock_calls[0].args[0] + mock_send.mock_calls[0][1][0] == '' ) # Bot successfully authenticated assert xmppclient.state == xmppclient.INIT # Bot moved to INIT state @@ -381,12 +381,12 @@ async def test_bot_init(*args, **kwargs): assert mock_send.call_count == 2 # Server opens stream assert ( - mock_send.mock_calls[0].args[0] + mock_send.mock_calls[0][1][0] == '' ) # Server tells client binds assert ( - mock_send.mock_calls[1].args[0] + mock_send.mock_calls[1][1][0] == '' ) @@ -398,7 +398,7 @@ async def test_bot_init(*args, **kwargs): xmppclient._parse_data(test_data) assert ( - mock_send.mock_calls[0].args[0] + mock_send.mock_calls[0][1][0] == 'E0000000000000001234@159.ecorobot.net/atom' ) # Bot successfully binded assert xmppclient.state == xmppclient.BIND # Bot moved to BIND state @@ -412,7 +412,7 @@ async def test_bot_init(*args, **kwargs): assert xmppclient.state == xmppclient.READY # Bot moved to READY state assert ( - mock_send.mock_calls[0].args[0] == '' + mock_send.mock_calls[0][1][0] == '' ) # Bot ready # Reset mock calls @@ -423,7 +423,7 @@ async def test_bot_init(*args, **kwargs): xmppclient._parse_data(test_data) assert ( - mock_send.mock_calls[0].args[0] + mock_send.mock_calls[0][1][0] == ' dummy ' ) # bot presence - dummy response @@ -443,7 +443,7 @@ async def test_ping_server(*args, **kwargs): xmppclient._parse_data(test_data) assert ( - mock_send.mock_calls[0].args[0] + mock_send.mock_calls[0][1][0] == '' ) # ping response @@ -475,7 +475,7 @@ async def test_ping_client_to_client(*args, **kwargs): xmppclient._parse_data(test_data) assert ( - mock_send2.mock_calls[0].args[0] + mock_send2.mock_calls[0][1][0] == '' ) # ping response @@ -484,7 +484,7 @@ async def test_ping_client_to_client(*args, **kwargs): xmppclient2._parse_data(test_data) assert ( - mock_send.mock_calls[0].args[0] + mock_send.mock_calls[0][1][0] == '' ) # ping response @@ -517,7 +517,7 @@ async def test_client_send_iq(*args, **kwargs): xmppclient._parse_data(test_data) assert ( - mock_send.mock_calls[0].args[0] + mock_send.mock_calls[0][1][0] == '' ) # feature not implemented response @@ -529,7 +529,7 @@ async def test_client_send_iq(*args, **kwargs): xmppclient._parse_data(test_data) assert ( - mock_send2.mock_calls[0].args[0] + mock_send2.mock_calls[0][1][0] == '' ) # command was sent to bot @@ -541,7 +541,7 @@ async def test_client_send_iq(*args, **kwargs): xmppclient2._parse_data(test_data) assert ( - mock_send.mock_calls[0].args[0] + mock_send.mock_calls[0][1][0] == '' ) # result sent to client @@ -553,7 +553,7 @@ async def test_client_send_iq(*args, **kwargs): xmppclient2._parse_data(test_data) assert ( - mock_send.mock_calls[0].args[0] + mock_send.mock_calls[0][1][0] == '' ) # result sent to ecouser.net @@ -565,7 +565,7 @@ async def test_client_send_iq(*args, **kwargs): xmppclient2._parse_data(test_data) assert ( - mock_send.mock_calls[0].args[0] + mock_send.mock_calls[0][1][0] == '' ) # result sent to ecouser.net @@ -577,7 +577,7 @@ async def test_client_send_iq(*args, **kwargs): xmppclient2._parse_data(test_data) assert ( - mock_send.mock_calls[0].args[0] + mock_send.mock_calls[0][1][0] == '' ) # result sent to ecouser.net @@ -588,7 +588,7 @@ async def test_client_send_iq(*args, **kwargs): test_data = b"" xmppclient2._parse_data(test_data) assert ( - mock_send.mock_calls[0].args[0] + mock_send.mock_calls[0][1][0] == '' ) # result sent to ecouser.net