def _create_endpoints(**kwargs) -> Dict[str, ResourceConfig]: """Return endpoints for testing purposes. This function creates a single ResourceConfig for path ``[""]``, method ``GET`` and the keyword arguments from its signature. The endpoint is named ``ep``. """ return {"ep": ResourceConfig(path=[""], method="GET", **kwargs)}
def test_good_schema_parameters(self): parameters = { "para": BodyParameter(name="foo", schema={'type': 'boolean'}, example=True) } self.UrlApiConfig({ "ep": ResourceConfig(path=[""], method="POST", parameters=parameters) }) parameters = { "para": QueryParameter(name="foo", schema={'type': 'integer'}, default=4) } self.UrlApiConfig({ "ep": ResourceConfig(path=[""], method="POST", parameters=parameters) })
def test_minimal_config(self): """ check method or path """ class Config(APIConfig): url = "http://localhost" Config({"ep": ResourceConfig(path=[""], method="GET")}) Config({"ep": ResourceConfig(path=["test"], method="GET")}) with self.assertRaises(RestClientConfigurationError): Config({"ep": ResourceConfig(path=["test"], method="ERR")}) with self.assertRaises(RestClientConfigurationError): Config({"ep": ResourceConfig(path=3, method="GET")}) with self.assertRaises(RestClientConfigurationError): Config({"ep": ResourceConfig(path=[""], method="ERR")})
def test_introspection(self): endpoints = { "ep1": ResourceConfig( path=[""], method="GET", parameters={ "p1": QueryParameter("p1"), "p2": QueryParameter("p2", multiple=True), "p3": QueryParameter("p3", required=True), "p4": QueryParameter("p4", default="def"), }, ) } c = self.UrlApiConfig(endpoints) expected = { "required": ["p3"], "optional": ["p1", "p2", "p4"], "multiple": ["p2"] } ep1_endpoint = c.endpoints["ep1"] self.assertDictEqual(ep1_endpoint.query_parameters, expected) self.assertListEqual(ep1_endpoint.all_query_parameters, ["p1", "p2", "p4", "p3"]) self.assertListEqual(ep1_endpoint.required_parameters, ["p3"]) self.assertListEqual(ep1_endpoint.multiple_parameters, ["p2"]) self.assertListEqual(ep1_endpoint.all_parameters, ["p1", "p2", "p4", "p3"]) self.assertDictEqual(ep1_endpoint.as_dict, { "required": ["p3"], "optional": ["p1", "p2", "p4"] }) self.assertDictEqual(ep1_endpoint.defaults, {"p4": "def"}) endpoints = { "ep1": ResourceConfig( path=[""], method="GET", parameters={ "p1": QueryParameter("p1"), "p2": QueryParameter("p2", multiple=True, exclusion_group="a"), "p3": QueryParameter("p3", required=True, exclusion_group="a"), "p4": QueryParameter("p4"), }, ) } c = self.UrlApiConfig(endpoints) expected = {"a": ["p2", "p3"]} ep1_endpoint = c.endpoints["ep1"] self.assertDictEqual(ep1_endpoint.query_parameter_groups, expected) endpoints = {"ep1": ResourceConfig(path=["x", "y", "z"], method="GET")} c = self.UrlApiConfig(endpoints) expected = [] ep1_endpoint = c.endpoints["ep1"] self.assertListEqual(expected, ep1_endpoint.path_parameters) endpoints = { "ep1": ResourceConfig(path=["x", "{y}", "z"], method="GET") } c = self.UrlApiConfig(endpoints) expected = ["y"] ep1_endpoint = c.endpoints["ep1"] self.assertListEqual(expected, ep1_endpoint.path_parameters)
class Config(self.UrlApiConfig): ep = ResourceConfig(path=[""], method="GET", headers={"otherkey": "val"}) default_headers = {"key": "val"}
def test_bad_endpoints(self): with self.assertRaises(RestClientConfigurationError): self.UrlApiConfig( {"data": ResourceConfig(path=[""], method="GET")})