Exemplo n.º 1
0
    def test_post_tx_rx_any_of_payload(self):
        """Test case for postInlineAdditionlPropertiesPayload
        """
        from petstore_api.model.gm_fruit_no_properties import GmFruitNoProperties
        endpoint = self.api.tx_rx_any_of_model_endpoint
        assert endpoint.openapi_types['gm_fruit_no_properties'] == (
            GmFruitNoProperties, )
        assert endpoint.settings['response_type'] == (GmFruitNoProperties, )

        # serialization + deserialization works
        from petstore_api.rest import RESTClientObject, RESTResponse
        with patch.object(RESTClientObject, 'request') as mock_method:
            expected_json_body = {
                'cultivar': 'Alice',
                'origin': 'Kazakhstan',
                'lengthCm': 7,
            }
            fruit = GmFruitNoProperties(**expected_json_body)
            mock_method.return_value = self.mock_response(expected_json_body)

            response = self.api.tx_rx_any_of_model(
                gm_fruit_no_properties=fruit)
            self.assert_request_called_with(
                mock_method,
                'http://petstore.swagger.io:80/v2/fake/TxRxAnyOfModel',
                body=expected_json_body)

            assert isinstance(response, GmFruitNoProperties)
            assert model_to_dict(response) == expected_json_body
 def sanitize_for_serialization(cls, obj):
     """Prepares data for transmission before it is sent with the rest client
     If obj is None, return None.
     If obj is str, int, long, float, bool, return directly.
     If obj is datetime.datetime, datetime.date
         convert to string in iso8601 format.
     If obj is list, sanitize each element in the list.
     If obj is dict, return the dict.
     If obj is OpenAPI model, return the properties dict.
     If obj is io.IOBase, return the bytes
     :param obj: The data to serialize.
     :return: The serialized form of data.
     """
     if isinstance(obj, (ModelNormal, ModelComposed)):
         return {
             key: cls.sanitize_for_serialization(val) for key, val in model_to_dict(obj, serialize=True).items()
         }
     elif isinstance(obj, io.IOBase):
         return cls.get_file_data_and_close_file(obj)
     elif isinstance(obj, (str, int, float, none_type, bool)):
         return obj
     elif isinstance(obj, (datetime, date)):
         return obj.isoformat()
     elif isinstance(obj, ModelSimple):
         return cls.sanitize_for_serialization(obj.value)
     elif isinstance(obj, (list, tuple)):
         return [cls.sanitize_for_serialization(item) for item in obj]
     if isinstance(obj, dict):
         return {key: cls.sanitize_for_serialization(val) for key, val in obj.items()}
     raise ApiValueError('Unable to prepare type {} for serialization'.format(obj.__class__.__name__))
Exemplo n.º 3
0
    def test_post_inline_additional_properties_payload(self):
        """Test case for postInlineAdditionlPropertiesPayload
        """
        from petstore_api.model.inline_object6 import InlineObject6
        from petstore_api.model.fake_post_inline_additional_properties_payload_array_data import FakePostInlineAdditionalPropertiesPayloadArrayData
        endpoint = self.api.post_inline_additional_properties_payload_endpoint
        assert endpoint.openapi_types['inline_object6'] == (InlineObject6, )
        assert endpoint.settings['response_type'] == (InlineObject6, )

        # serialization + deserialization works
        from petstore_api.rest import RESTClientObject, RESTResponse
        with patch.object(RESTClientObject, 'request') as mock_method:
            expected_json_body = {'arrayData': [{'labels': [None, 'foo']}]}
            inline_object6 = InlineObject6(array_data=[
                FakePostInlineAdditionalPropertiesPayloadArrayData(
                    labels=[None, 'foo'])
            ])
            mock_method.return_value = self.mock_response(expected_json_body)

            response = self.api.post_inline_additional_properties_payload(
                inline_object6=inline_object6)
            self.assert_request_called_with(
                mock_method,
                'http://petstore.swagger.io:80/v2/fake/postInlineAdditionalPropertiesPayload',
                body=expected_json_body)

            assert isinstance(response, InlineObject6)
            assert model_to_dict(response) == expected_json_body
Exemplo n.º 4
0
    def sanitize_for_serialization(self, obj):
        """Builds a JSON POST object.

        If obj is None, return None.
        If obj is str, int, long, float, bool, return directly.
        If obj is datetime.datetime, datetime.date
            convert to string in iso8601 format.
        If obj is list, sanitize each element in the list.
        If obj is dict, return the dict.
        If obj is OpenAPI model, return the properties dict.

        :param obj: The data to serialize.
        :return: The serialized form of data.
        """
        if obj is None:
            return None
        elif isinstance(obj, self.PRIMITIVE_TYPES):
            return obj
        elif isinstance(obj, list):
            return [
                self.sanitize_for_serialization(sub_obj) for sub_obj in obj
            ]
        elif isinstance(obj, tuple):
            return tuple(
                self.sanitize_for_serialization(sub_obj) for sub_obj in obj)
        elif isinstance(obj, (datetime, date)):
            return obj.isoformat()

        if isinstance(obj, dict):
            obj_dict = obj
        elif isinstance(obj, ModelNormal) or isinstance(obj, ModelComposed):
            # Convert model obj to dict
            # Convert attribute name to json key in
            # model definition for request
            obj_dict = model_to_dict(obj, serialize=True)
        elif isinstance(obj, ModelSimple):
            return self.sanitize_for_serialization(obj.value)

        return {
            key: self.sanitize_for_serialization(val)
            for key, val in six.iteritems(obj_dict)
        }
Exemplo n.º 5
0
 def to_dict(self):
     """Returns the model properties as a dict"""
     return model_to_dict(self, serialize=False)