Exemple #1
0
    def __init__(self, api_spec):
        if "api" not in api_spec:
            raise APIKeyMissingError

        self.spec = api_spec["api"]
        self.request_nodes = []  # tree's leaves
        self.responses = {}
        self.custom_vars = {}
        self.spec_evaluator = SpecEvaluator(self)
        self.root = RootNode(self)

        self.build()
Exemple #2
0
                def spec_evaluator(self):
                    class APITreeMock:
                        def __init__(self):
                            self.responses = {}
                            self.custom_vars = {}

                    return SpecEvaluator(APITreeMock())
Exemple #3
0
                def spec_evaluator(self):
                    class APITreeMock:
                        def __init__(self):
                            self.responses = {}
                            self.custom_vars = {"user_id": "10", "apiKey": "abc123"}

                    return SpecEvaluator(APITreeMock())
                def spec_evaluator(self):
                    class MockResponse:
                        def json(self):
                            return [{"id": 1, "name": "John"}]

                    class APITreeMock:
                        def __init__(self):
                            self.responses = {"user_details": MockResponse()}

                    return SpecEvaluator(APITreeMock())
Exemple #5
0
class APITree:
    def __init__(self, api_spec):
        if "api" not in api_spec:
            raise APIKeyMissingError

        self.spec = api_spec["api"]
        self.request_nodes = []  # tree's leaves
        self.responses = {}
        self.custom_vars = {}
        self.spec_evaluator = SpecEvaluator(self)
        self.root = RootNode(self)

        self.build()

    def build(self):
        logger.info("Building requests")

        # Builds the root requests
        if "requests" in self.spec:
            self.build_requests(self.root)

        if not "endpoints" in self.spec:
            return

        self.build_endpoints(self.root)

    def build_endpoints(self, parent):
        for endpoint_spec in parent.spec["endpoints"]:
            endpoint = EndpointNode(self, endpoint_spec, parent)

            if "requests" in endpoint.spec:
                self.build_requests(endpoint)

            if "endpoints" in endpoint.spec:
                self.build_endpoints(endpoint)

    def build_requests(self, endpoint):
        for request_spec in endpoint.spec["requests"]:
            self.request_nodes.append(RequestNode(self, request_spec,
                                                  endpoint))

    def save_custom_vars(self, node_spec):
        if "vars" not in node_spec:
            return

        for var_name, var_value in node_spec["vars"].items():
            self.custom_vars[var_name] = self.spec_evaluator.evaluate(
                var_value)
Exemple #6
0
 def spec_evaluator(self):
     parent = EndpointNode({"name": "bar", "requests": [{}]})
     endpoint = EndpointNode({"name": "foo", "requests": [{}]}, parent)
     return SpecEvaluator(endpoint, {"name": "foo"})
Exemple #7
0
 def spec_evaluator(self):
     return SpecEvaluator({})
Exemple #8
0
 def test_when_registry_is_empty(self):
     spec_evaluator = SpecEvaluator({}, {})
     assert repr(spec_evaluator) == "{}"
 def spec_evaluator(self):
     endpoint = EndpointNode({"name": "foo", "requests": [{}]})
     return SpecEvaluator(endpoint)
Exemple #10
0
 def spec_evaluator(self):
     endpoint = EndpointNode({})
     return SpecEvaluator(endpoint)