Example #1
0
def test_mqtt_subscribes_topics_on_connect(hass):
    """Test subscription to topic on connect."""
    mqtt_client = yield from async_mock_mqtt_client(hass)

    hass.data['mqtt'].subscriptions = [
        mqtt.Subscription('topic/test', None),
        mqtt.Subscription('home/sensor', None, 2),
        mqtt.Subscription('still/pending', None),
        mqtt.Subscription('still/pending', None, 1),
    ]

    hass.add_job = mock.MagicMock()
    hass.data['mqtt']._mqtt_on_connect(None, None, 0, 0)

    yield from hass.async_block_till_done()

    assert mqtt_client.disconnect.call_count == 0

    expected = {
        'topic/test': 0,
        'home/sensor': 2,
        'still/pending': 1
    }
    calls = {call[1][1]: call[1][2] for call in hass.add_job.mock_calls}
    assert calls == expected
Example #2
0
 def test_mqtt_disconnect_tries_reconnect(self, mock_sleep):
     """Test the re-connect tries."""
     self.hass.data['mqtt'].subscriptions = [
         mqtt.Subscription('test/progress', None, 0),
         mqtt.Subscription('test/progress', None, 1),
         mqtt.Subscription('test/topic', None, 2),
     ]
     self.hass.data['mqtt']._mqttc.reconnect.side_effect = [1, 1, 1, 0]
     self.hass.data['mqtt']._mqtt_on_disconnect(None, None, 1)
     assert self.hass.data['mqtt']._mqttc.reconnect.called
     assert len(self.hass.data['mqtt']._mqttc.reconnect.mock_calls) == 4
     assert [call[1][0] for call in mock_sleep.mock_calls] == [1, 2, 4]
Example #3
0
async def test_mqtt_subscribes_topics_on_connect(hass):
    """Test subscription to topic on connect."""
    mqtt_client = await async_mock_mqtt_client(hass)

    hass.data["mqtt"].subscriptions = [
        mqtt.Subscription("topic/test", None),
        mqtt.Subscription("home/sensor", None, 2),
        mqtt.Subscription("still/pending", None),
        mqtt.Subscription("still/pending", None, 1),
    ]

    hass.add_job = mock.MagicMock()
    hass.data["mqtt"]._mqtt_on_connect(None, None, 0, 0)

    await hass.async_block_till_done()

    assert mqtt_client.disconnect.call_count == 0

    expected = {"topic/test": 0, "home/sensor": 2, "still/pending": 1}
    calls = {call[1][1]: call[1][2] for call in hass.add_job.mock_calls}
    assert calls == expected