def test_bad_query_parameters(self): with self.assertRaises(RestClientConfigurationError): parameters = {"para": QueryParameter(name="sort", required=3)} self.UrlApiConfig(_create_endpoints(parameters=parameters)) with self.assertRaises(RestClientConfigurationError): parameters = {"para": QueryParameter(name="sort", multiple=3)} self.UrlApiConfig(_create_endpoints(parameters=parameters)) with self.assertRaises(RestClientConfigurationError): parameters = { "para": QueryParameter(name="sort", exclusion_group=3) } self.UrlApiConfig(_create_endpoints(parameters=parameters)) with self.assertRaises(RestClientConfigurationError): parameters = {"para": QueryParameter(name=None)} self.UrlApiConfig(_create_endpoints(parameters=parameters)) with self.assertRaises(RestClientConfigurationError): parameters = { "para": QueryParameter(name="sort", default="some_default", required=True) } self.UrlApiConfig(_create_endpoints(parameters=parameters))
def test_good_query_parameters(self): parameters = { "para": QueryParameter(name="sort", default="some_default", description="description") } self.UrlApiConfig(_create_endpoints(parameters=parameters)) parameters = {"para": QueryParameter(name="sort", required=False)} self.UrlApiConfig(_create_endpoints(parameters=parameters))
def test_exclusion_group(self): with self.assertRaises(RestClientConfigurationError): parameters = { "para": QueryParameter(name="sort", exclusion_group="\n") } self.UrlApiConfig(_create_endpoints(parameters=parameters)) with self.assertRaises(RestClientConfigurationError): parameters = { "para": QueryParameter(name="sort", default="x", choices=["a", "b"]) } self.UrlApiConfig(_create_endpoints(parameters=parameters))
def test_choices(self): with self.assertRaises(RestClientConfigurationError): parameters = { "para": QueryParameter(name="sort", choices="some_default") } self.UrlApiConfig(_create_endpoints(parameters=parameters))
class MyConfig(ResourceConfig): name = "my_config" path = ["my", "config"] method = "GET" title = BodyParameter(name="title") user_id = QueryParameter(name="userId")
def test_bad_schema_parameters(self): with self.assertRaises(RestClientConfigurationError) as exc: parameters = {"para": BodyParameter(name="foo", schema="bar")} self.UrlApiConfig(_create_endpoints(parameters=parameters)) self.assertEqual(exc.exception.args[0], "parameter schema must be dict") with self.assertRaises(RestClientConfigurationError) as exc: parameters = { "para": QueryParameter(name="foo", schema={'type': 'ni'}, example="bar") } self.UrlApiConfig(_create_endpoints(parameters=parameters)) self.assertEqual(exc.exception.args[0], "provided schema is not a valid schema") with self.assertRaises(RestClientConfigurationError) as exc: parameters = { "para": BodyParameter(name="foo", schema={'type': 'boolean'}, example="bar") } self.UrlApiConfig(_create_endpoints(parameters=parameters)) self.assertEqual(exc.exception.args[0], "example does not obey schema") with self.assertRaises(RestClientConfigurationError) as exc: parameters = { "para": QueryParameter(name="foo", schema={'type': 'boolean'}, default="bar") } self.UrlApiConfig(_create_endpoints(parameters=parameters)) self.assertEqual(exc.exception.args[0], "default does not obey schema")
class FilterPosts(ResourceConfig): name = "filter_posts" path = ["posts"] method = "GET" description = "retrieve all posts from the given author" user_id = QueryParameter(name="userId", description="the user ID of the author of the post")
def test_bad_example_with_choices(self): with self.assertRaises(RestClientConfigurationError) as exc: parameters = { "para": QueryParameter(name="sort", example=3, choices=[1, 2, 4]) } self.UrlApiConfig(_create_endpoints(parameters=parameters)) self.assertEqual(exc.exception.args[0], "example should be one of the choices")
def test_schema_with_choices(self): with self.assertRaises(RestClientConfigurationError) as exc: parameters = { "para": QueryParameter(name="sort", schema={'type': 'string'}, choices=[1, 2, 4]) } self.UrlApiConfig(_create_endpoints(parameters=parameters)) self.assertEqual(exc.exception.args[0], "choices and schema can't be combined")
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_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)
def test_good_example_with_choices(self): parameters = { "para": QueryParameter(name="sort", example=3, choices=[1, 2, 3]) } self.UrlApiConfig(_create_endpoints(parameters=parameters))
def test_descriptions(self): with self.assertRaises(RestClientConfigurationError): parameters = {"para": QueryParameter(name="sort", description=3)} self.UrlApiConfig(_create_endpoints(parameters=parameters))