Esempio n. 1
0
def test_mqtt_json_pub_invalid_type(mqtt_client, topic):
    pub = mqtt_json_pub(mqtt_client.publish)

    with pytest.raises(TypeError):
        pub(topic, 42)

    with pytest.raises(TypeError):
        pub(topic, 'magic')
Esempio n. 2
0
def test_mqtt_json_pub(mqtt_client, lock, topic):
    def on_msg(client, userdata, msg):
        on_msg.msg = msg
        userdata.release()

    on_msg.msg = None

    mqtt_client.on_message = on_msg
    pub = mqtt_json_pub(mqtt_client.publish)
    pub(topic, {'answer': 42})

    lock.acquire()
    assert on_msg.msg.payload == b'{"answer": 42}'
Esempio n. 3
0
    def mqtt_pub(self, id_, feature, topic, qos=0):
        '''
        Add a publish function to ``self.conns``.

        :param id_: the ``UUID`` object
        :param feature: the feature name, if feature name is ``_ctrl``, we will
                        setup the control channel
        :param ctrl: control channel or not
        :type topic: str

        :return: the ``publish`` function
        '''
        if feature != '_ctrl':
            pub = partial(self.mqtt_c.publish, topic, qos=qos)
            self.conns[id_].data[feature].o = pub
        else:
            pub = partial(mqtt_json_pub(self.mqtt_c.publish), topic, qos=qos)
            self.conns[id_].ctrl.pub = pub

        return pub
Esempio n. 4
0
def test_mqtt_json_pub_encode_error(mqtt_client, topic):
    pub = mqtt_json_pub(mqtt_client.publish)

    with pytest.raises(TypeError):
        pub(topic, [Mock()])