def test_get_examples_with_env(self):
        api = APIModel()
        self.document_generator.response_id = 10
        self.document_generator.api_id_counter = 1
        self.document_generator.env_file = self.json_env

        examples = self.document_generator.get_examples(
            api, self.json_responses)
        self.assertEqual(2, len(examples))
        for api_example in examples:
            if api_example.name == 'Example 1':
                self.assertEqual('1', api_example.request_id)
                self.assertEqual('response_11', api_example.id)
                self.assertEqual('POST', api_example.method)
                self.assertEqual(
                    'https://cpd-service.dev.apps.scholastic.tech/sample/url/path',
                    api_example.url)
                self.assertEqual(
                    '\nPOST https://cpd-service.dev.apps.scholastic.tech/sample/url/path\n'
                    + self.request_body_formatted, api_example.request_body)
                self.assertIsNone(api_example.status)
                self.assertIsNone(api_example.code)
                self.assertEqual('\n' + self.response_body_formatted,
                                 api_example.response_body)
            elif api_example.name == 'Example 2':
                self.assertEqual('1', api_example.request_id)
                self.assertEqual('response_12', api_example.id)
                self.assertIsNone(api_example.method)
                self.assertIsNone(api_example.url)
                self.assertIsNone(api_example.request_body)
                self.assertIsNone(api_example.status)
                self.assertIsNone(api_example.code)
                self.assertEqual('\n' + self.response_body_formatted,
                                 api_example.response_body)
    def test_get_examples(self):
        api = APIModel()
        self.document_generator.response_id = 10
        self.document_generator.api_id_counter = 1

        examples = self.document_generator.get_examples(
            api, self.json_responses)
        self.assertEqual(2, len(examples))
        for api_example in examples:
            if api_example.name == 'Example 1':
                self.assertEqual('1', api_example.request_id)
                self.assertEqual('response_11', api_example.id)
                self.assertEqual('POST', api_example.method)
                self.assertEqual('{{HOST}}/sample/url/path', api_example.url)
                self.assertEqual(
                    '\nPOST {{HOST}}/sample/url/path\n' +
                    self.request_body.raw, api_example.request_body)
                self.assertIsNone(api_example.status)
                self.assertIsNone(api_example.code)
                self.assertEqual('\n' + self.response_body,
                                 api_example.response_body)

            elif api_example.name == 'Example 2':
                self.assertEqual('1', api_example.request_id)
                self.assertEqual('response_12', api_example.id)
                self.assertIsNone(api_example.method)
                self.assertIsNone(api_example.url)
                self.assertIsNone(api_example.request_body)
                self.assertIsNone(api_example.status)
                self.assertIsNone(api_example.code)
                self.assertEqual('\n' + self.response_body,
                                 api_example.response_body)
    def test_get_examples_from_api(self):
        api = APIModel()
        api.id = 11
        api.name = 'Example 1'
        api.url = '{{HOST}}/sample/url/path'
        api.body = self.request_body
        api.method = 'POST'

        self.document_generator.response_id = 10
        self.document_generator.api_id_counter = 1

        examples = self.document_generator.get_examples(api, [])
        self.assertEqual(1, len(examples))
        api_example = examples[0]

        self.assertEqual('1', api_example.request_id)
        self.assertEqual('response_11', api_example.id)
        self.assertEqual('Example 1', api_example.name)
        self.assertEqual('POST', api_example.method)
        self.assertEqual('{{HOST}}/sample/url/path', api_example.url)
        self.assertEqual(
            '\nPOST {{HOST}}/sample/url/path\n' + self.request_body.raw,
            api_example.request_body)
        self.assertIsNone(api_example.status)
        self.assertIsNone(api_example.code)
示例#4
0
    def add_apis(self, item: json):
        """
        Creates an APIModel and adds it to api_info
        :param item: json node representing an api
        """
        api = APIModel()
        api.id = self.api_id_counter
        api.name = item.get(NAME, NOT_FOUND)
        api.body = None
        if item.get(REQUEST, {}).get(DESCRIPTION, None) is not None:
            api.description = item.get(REQUEST, {}).get(DESCRIPTION, None)
        if item.get(REQUEST, {}).get(BODY, None) is not None:
            api.body = self.get_body(item.get(REQUEST).get(BODY))

        if api.body is not None and api.body.raw is not None:
            api.body.raw = '\n' + api.body.raw.strip(
            )  # append a line break for better formatting of jsons

        api.method = item.get(REQUEST, {}).get(METHOD, None)

        headers = item.get(REQUEST, {}).get(HEADER, None)
        if headers is not None:
            api.headers = DocumentGenerator.get_key_values(headers)

        if item.get(REQUEST, {}).get(URL, None) is not None:
            api.url = item.get(REQUEST, {}).get(URL, {}).get(RAW, None)

            query_params = item.get(REQUEST, {}).get(URL, {}).get(QUERY, None)
            if query_params is not None:
                api.params = DocumentGenerator.get_key_values(query_params)

            path_variables = item.get(REQUEST,
                                      {}).get(URL,
                                              {}).get(PATH_VARIABLE, None)
            if path_variables is not None:
                api.path_variables = DocumentGenerator.get_key_values(
                    path_variables)

        api.examples = self.get_examples(api, item.get(RESPONSE, []))
        self.api_info.append(api)