Ejemplo n.º 1
0
    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))
Ejemplo n.º 2
0
    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))
Ejemplo n.º 3
0
    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))
Ejemplo n.º 4
0
    def test_choices(self):
        with self.assertRaises(RestClientConfigurationError):

            parameters = {
                "para": QueryParameter(name="sort", choices="some_default")
            }
            self.UrlApiConfig(_create_endpoints(parameters=parameters))
Ejemplo n.º 5
0
        class MyConfig(ResourceConfig):
            name = "my_config"
            path = ["my", "config"]
            method = "GET"

            title = BodyParameter(name="title")
            user_id = QueryParameter(name="userId")
Ejemplo n.º 6
0
    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")
Ejemplo n.º 7
0
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")
Ejemplo n.º 8
0
    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")
Ejemplo n.º 9
0
    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")
Ejemplo n.º 10
0
    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)
        })
Ejemplo n.º 11
0
    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)
Ejemplo n.º 12
0
 def test_good_example_with_choices(self):
     parameters = {
         "para": QueryParameter(name="sort", example=3, choices=[1, 2, 3])
     }
     self.UrlApiConfig(_create_endpoints(parameters=parameters))
Ejemplo n.º 13
0
    def test_descriptions(self):
        with self.assertRaises(RestClientConfigurationError):

            parameters = {"para": QueryParameter(name="sort", description=3)}
            self.UrlApiConfig(_create_endpoints(parameters=parameters))