def _dispatch_message(self, msg): self._check_request(msg) method = self._name_to_method_info[msg["method"]].method params = msg.get("params", []) parameter_checker.validate_params_match(method, params) if isinstance(params, list): result = method(*params) elif isinstance(params, dict): result = method(**params) else: raise InvalidRequestError("Given params '{}' are neither a list nor a dict." .format(msg["params"])) return result
def _dispatch_message(self, msg): self._check_request(msg) method = self._name_to_method_info[msg["method"]].method params = msg.get("params", []) parameter_checker.validate_params_match(method, params) if isinstance(params, list): result = method(*params) elif isinstance(params, dict): result = method(**params) else: raise InvalidRequestError( "Given params '{}' are neither a list nor a dict.".format( msg["params"])) return result
def test_kwargs(): def foo(a, b, c="baz", **kwargs): pass with pytest.raises(InvalidParamsError): parameter_checker.validate_params_match(foo, {"a": "foo"}) parameter_checker.validate_params_match(foo, {"a": "foo", "b": "bar"}) parameter_checker.validate_params_match(foo, {"a": "foo", "b": "bar", "d": 42}) with pytest.raises(InvalidParamsError): parameter_checker.validate_params_match(foo, {"a": "foo", "c": "bar"})
def test_varargs(): def foo(a, b="foo", *varargs): pass with pytest.raises(InvalidParamsError): parameter_checker.validate_params_match(foo, []) parameter_checker.validate_params_match(foo, ["foo", "bar"]) parameter_checker.validate_params_match(foo, ["foo", "bar", 42])
def test_list(): def foo(a, b, c="baz"): pass with pytest.raises(InvalidParamsError): parameter_checker.validate_params_match(foo, ["foo"]) parameter_checker.validate_params_match(foo, ["foo", "bar"]) with pytest.raises(InvalidParamsError): parameter_checker.validate_params_match(foo, ["foo", "bar", "bop", 42])
def test_no_defaults(): def foo(a): pass with pytest.raises(InvalidParamsError): parameter_checker.validate_params_match(foo, []) parameter_checker.validate_params_match(foo, ["bar"]) with pytest.raises(InvalidParamsError): parameter_checker.validate_params_match(foo, ["bar", "baz"]) with pytest.raises(InvalidParamsError): parameter_checker.validate_params_match(foo, {}) parameter_checker.validate_params_match(foo, {"a": "bar"}) with pytest.raises(InvalidParamsError): parameter_checker.validate_params_match(foo, {"a": "bar", "b": "baz"})