Exemple #1
0
    def test_extract_path_parameters(self):
        #case 1: parameter is a path variable
        element_value_mock = mock.Mock()
        element_value_mock.string_value = 'mock'
        element_map_mock = mock.Mock()
        element_map_mock.elements = {'value': element_value_mock}
        field_info_mock = mock.Mock()
        field_info_mock.name = 'mock_name'
        field_info_mock.metadata = {'PathVariable' :  element_map_mock}
        url = '/package/mock-1/{mock}'
        params = [field_info_mock]
        ''''
        params = [FieldInfo(name = 'mock_name', metadata = {
            'PathVariable' : ElementMap(elements = {
                'value' : ElementValue(string_value = 'mock')
            })
        })]
        ''' 
        path_params_expected = [field_info_mock]
        other_params_expected = []
        new_url_expected = '/package/mock-1/{mock_name}'
        path_params_actual, other_params_actual, new_url_actual = utils.extract_path_parameters(params, url)
        self.assertEqual(path_params_expected, path_params_actual)
        self.assertEqual(other_params_expected, other_params_actual)
        self.assertEqual(new_url_expected, new_url_actual)

        #case 2: parameter is not a path variable
        field_info_mock.metadata = {'metadata_key' :  element_map_mock}
        path_params_expected = []
        other_params_expected = [field_info_mock]
        new_url_expected = '/package/mock-1/{mock}'
        path_params_actual, other_params_actual, new_url_actual = utils.extract_path_parameters(params, url)
        self.assertEqual(path_params_expected, path_params_actual)
        self.assertEqual(other_params_expected, other_params_actual)
        self.assertEqual(new_url_expected, new_url_actual)
Exemple #2
0
    def process_get_request(self, url, params, type_dict, structure_svc,
                            enum_svc, enable_filtering, spec):
        param_array = []
        path_param_list, other_params_list, new_url = utils.extract_path_parameters(
            params, url)

        for field_info in path_param_list:
            parameter_obj = spec.convert_field_info_to_swagger_parameter(
                'path', field_info, type_dict, structure_svc, enum_svc,
                enable_filtering)
            param_array.append(parameter_obj)

        query_param_list, other_params_list = utils.extract_query_parameters(
            other_params_list)
        # Query
        for query_param in query_param_list:
            parameter_obj = spec.convert_field_info_to_swagger_parameter(
                'query', query_param, type_dict, structure_svc, enum_svc,
                enable_filtering)
            param_array.append(parameter_obj)

        # process query parameters
        for field_info in other_params_list:
            # See documentation of method flatten_query_param_spec to understand
            # handling of all the query parameters; filter as well as non
            # filter
            flattened_params = spec.flatten_query_param_spec(
                field_info, type_dict, structure_svc, enum_svc,
                enable_filtering)
            if flattened_params is not None:
                param_array = param_array + flattened_params
        return param_array, new_url
Exemple #3
0
    def process_put_post_patch_request(self, url, service_name, operation_name,
                                       params, type_dict, structure_svc,
                                       enum_svc, show_unreleased_apis, spec):
        """
        Handles http post/put/patch request.
        todo: handle query, formData and header parameters
        """
        # Path
        path_param_list, other_param_list, new_url = utils.extract_path_parameters(
            params, url)
        par_array = []
        for field_info in path_param_list:
            parx = spec.convert_field_info_to_swagger_parameter(
                'path', field_info, type_dict, structure_svc, enum_svc,
                show_unreleased_apis)
            par_array.append(parx)

        # Body
        body_param_list = other_param_list

        if body_param_list:
            parx = spec.wrap_body_params(service_name, operation_name,
                                         body_param_list, type_dict,
                                         structure_svc, enum_svc,
                                         show_unreleased_apis)
            if parx is not None:
                par_array.append(parx)

        return par_array, new_url
Exemple #4
0
    def process_put_post_patch_request(
            self,
            url,
            service_name,
            operation_name,
            params,
            type_dict,
            structure_svc,
            enum_svc,
            show_unreleased_apis,
            spec):
        """
        Handles http post/put/patch request.
        todo: handle query, formData and header parameters
        """
        # Path
        path_param_list, other_param_list, new_url = utils.extract_path_parameters(
            params, url)
        par_array = []
        for field_info in path_param_list:
            parx = spec.convert_field_info_to_swagger_parameter(
                'path', field_info, type_dict, structure_svc, enum_svc, show_unreleased_apis)
            par_array.append(parx)

        # Body
        body_param_list, other_param_list = utils.extract_body_parameters(
            other_param_list)

        if body_param_list:
            parx = spec.wrap_body_params(
                service_name,
                operation_name,
                body_param_list,
                type_dict,
                structure_svc,
                enum_svc,
                show_unreleased_apis)
            if parx is not None:
                par_array.append(parx)

        # Query
        query_param_list, other_param_list = utils.extract_query_parameters(
            other_param_list)
        for query_param in query_param_list:
            parx = spec.convert_field_info_to_swagger_parameter(
                'query', query_param, type_dict, structure_svc, enum_svc, show_unreleased_apis)
            par_array.append(parx)

        # process query parameters
        for field_info in other_param_list:
            # See documentation of method flatten_query_param_spec to understand
            # handling of all the query parameters; filter as well as non
            # filter
            flattened_params = spec.flatten_query_param_spec(
                field_info, type_dict, structure_svc, enum_svc, show_unreleased_apis)
            if flattened_params is not None:
                par_array = par_array + flattened_params

        return par_array, new_url
Exemple #5
0
 def process_delete_request(self, url, params, type_dict, structure_svc,
                            enum_svc, enable_filtering, spec):
     path_param_list, other_params, new_url = utils.extract_path_parameters(
         params, url)
     param_array = []
     for field_info in path_param_list:
         parx = spec.convert_field_info_to_swagger_parameter(
             'path', field_info, type_dict, structure_svc, enum_svc,
             enable_filtering)
         param_array.append(parx)
     for field_info in other_params:
         parx = spec.convert_field_info_to_swagger_parameter(
             'query', field_info, type_dict, structure_svc, enum_svc,
             enable_filtering)
         param_array.append(parx)
     return param_array, new_url