Пример #1
0
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)}
Пример #2
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)
        })
Пример #3
0
    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")})
Пример #4
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)
Пример #5
0
 class Config(self.UrlApiConfig):
     ep = ResourceConfig(path=[""],
                         method="GET",
                         headers={"otherkey": "val"})
     default_headers = {"key": "val"}
Пример #6
0
    def test_bad_endpoints(self):
        with self.assertRaises(RestClientConfigurationError):

            self.UrlApiConfig(
                {"data": ResourceConfig(path=[""], method="GET")})