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')
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}'
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
def test_mqtt_json_pub_encode_error(mqtt_client, topic): pub = mqtt_json_pub(mqtt_client.publish) with pytest.raises(TypeError): pub(topic, [Mock()])