Exemplo n.º 1
0
def test_CtrlConn_handle_cmd_response_wrong_state():
    ctrl = CtrlConn()

    with pytest.raises(ValueError) as err:
        ctrl._handle_cmd_response({'state': ':smile:', 'msg_id': 'magic'})

    assert 'Invalid state' in str(err)
Exemplo n.º 2
0
def test_CtrlConn_add_res_callback():
    def success():
        pass

    def error():
        pass

    ctrl = CtrlConn()
    ctrl.add_res_callback('magic', success, error)

    assert ctrl.res_callbacks['magic'] == (success, error)
Exemplo n.º 3
0
def test_CtrlConn_add_res_callback_duplicate():
    def on_success():
        pass

    def on_error():
        pass

    def dup():
        pass

    ctrl = CtrlConn()
    ctrl.add_res_callback('magic', on_success, on_error)
    ctrl.add_res_callback('magic', dup, on_error)

    assert ctrl.res_callbacks['magic'] == (on_success, on_error)
Exemplo n.º 4
0
def test_CtrlConn_handle_cmd_response_error():
    def success(payload):
        assert False

    def error(payload):
        assert payload == {
            'msg_id': 'magic',
            'state': 'error',
            'answer': 42,
        }
        error.invoked = True

    ctrl = CtrlConn()
    ctrl.res_callbacks['magic'] = success, error
    ctrl._handle_cmd_response({
        'msg_id': 'magic',
        'state': 'error',
        'answer': 42})

    assert error.invoked == True
Exemplo n.º 5
0
def test_CtrlConn_on_message_cmd_response(mqtt_client, lock, topic):
    def lock_wrapper(func):
        def wrapper(*args, **kwargs):
            ret = func(*args, **kwargs)
            lock.release()
            return ret

        return wrapper

    def sub(func):
        mqtt_client.on_message = lock_wrapper(func)
        return func

    sub.remove_callback = partial(mqtt_client.message_callback_remove, topic)

    mqtt_client.subscribe(topic)
    ctrl = CtrlConn(sub=sub)
    ctrl.da_ready = True
    mqtt_client.publish(topic, '{"state": "ok", "msg_id": "magic"}')

    lock.acquire()
Exemplo n.º 6
0
def test_CtrlConn_on_message_offline(mqtt_client, lock, topic, resource):
    def lock_wrapper(func):
        def wrapper(*args, **kwargs):
            ret = func(*args, **kwargs)
            lock.release()
            return ret

        return wrapper

    def sub(func):
        mqtt_client.on_message = lock_wrapper(func)
        return func

    sub.remove_callback = partial(mqtt_client.message_callback_remove, topic)

    rev = str(resource.revision)

    mqtt_client.subscribe(topic)
    ctrl = CtrlConn(sub=sub, rev=rev)
    ctrl.da_ready = True
    mqtt_client.publish(topic, '{"state": "offline", "rev": "%s"}' % rev)

    lock.acquire()
    assert ctrl.da_ready == False
Exemplo n.º 7
0
def test_CtrlConn_handle_cmd_response_malformed():
    ctrl = CtrlConn()

    with pytest.raises(ValueError):
        ctrl._handle_cmd_response({'emoji': ':tada:'})