示例#1
0
    def rm_link(self, payload):
        '''
        This ``rm_link`` command will send a ``DISCONNECT`` control message
        to device application.
        '''
        da_id = payload['da_id']
        msg_id = str(uuid4())  # random
        mode = self.get_mode(payload)
        feature = payload[mode]
        pub = iot_conn_mgr.conns[UUID(payload['da_id'])].ctrl.pub

        try:
            topic = Link.pop(da_id, feature, mode)
        except ValueError as err:
            return self.send_error(payload, reason=str(err))

        iot_conn_mgr.conns[UUID(da_id)].ctrl.add_res_callback(
            msg_id,
            *self.response_func(
                payload,
                on_success=self.rm_link_on_success(),
                on_error=None
            )
        )

        return ctrl.disconnect(msg_id, mode, feature, topic, pub)
示例#2
0
def test_link_pop_unknown(_link):
    with pytest.raises(ValueError) as err:
        assert Link.pop('id', 'feature', 'idf')

    return 'unknown' in str(err)
示例#3
0
def test_link_pop_key(_link):
    assert Link.add('id', 'feature', 'idf', 'topic')
    assert Link.select('id', 'feature', 'idf') == 'topic'
    assert Link.pop('id', 'feature', 'idf') == 'topic'
    assert Link.select('id', 'feature', 'idf') is None