def test_function_raises_exception_on_path_missing(): @transmute_core.describe(paths=[]) def func(): pass with pytest.raises(transmute_core.InvalidTransmuteDefinition): TransmuteFunction(func)
def test_with_framework_arg(): """ """ tf = TransmuteFunction(with_framework_arg) extractor = ParamExtractorMock() args, kwargs = extractor.extract_params(default_context, tf, "application/json") assert args == ["framework_arg"] assert kwargs == {}
def test_extract_params_positional_args(): """ if no arguments are passed, use the defaults """ tf = TransmuteFunction(pos_type) extractor = ParamExtractorMock() args, kwargs = extractor.extract_params(default_context, tf, "application/json") assert args == ["query"] assert kwargs == {}
def add_transmute_route(self, *args): """ two formats are accepted, for transmute routes. One allows for a more traditional aiohttp syntax, while the other allows for a flask-like variant. .. code-block:: python # if the path and method are not added in describe. add_transmute_route("GET", "/route", fn) # if the path and method are already added in describe add_transmute_route(fn) """ if len(args) == 1: fn = args[0] elif len(args) == 3: methods, paths, fn = args describe(methods=methods, paths=paths)(fn) else: raise ValueError( "expected one or three arguments for add_transmute_route!" ) transmute_func = TransmuteFunction( fn, args_not_from_request=["request"] ) handler = create_handler( transmute_func, context=self._transmute_context ) swagger_path = transmute_func.get_swagger_path(self._transmute_context) for p in transmute_func.paths: # add to swagger if p not in self._swagger: self._swagger[p] = swagger_path else: for method, definition in swagger_path.items(): setattr(self._swagger[p], method, definition) # add to aiohttp aiohttp_path = self._convert_to_aiohttp_path(p) resource = self.add_resource(aiohttp_path) for method in transmute_func.methods: resource.add_route(method, handler)
def test_extract_params_honor_as_non_list(typ): @describe(paths=["/"], query_parameters=["query"]) @annotate({"query": typ}) def f(query=1): pass tf = TransmuteFunction(f) extractor = ParamExtractorMock() args, kwargs = extractor.extract_params(default_context, tf, None) assert kwargs["query"] == "query"
def all_param_type_transmute_func(): """ ensure retrieval of all parameter types is honored. """ return TransmuteFunction(all_param_type)
def func(): return TransmuteFunction(raw_func)