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)
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)
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)
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
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()
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
def test_CtrlConn_handle_cmd_response_malformed(): ctrl = CtrlConn() with pytest.raises(ValueError): ctrl._handle_cmd_response({'emoji': ':tada:'})