mirror of
https://github.com/correl/openapi-core.git
synced 2024-11-28 11:09:52 +00:00
88 lines
2.6 KiB
Python
88 lines
2.6 KiB
Python
import pytest
|
|
|
|
from openapi_core.deserializing.exceptions import DeserializeError
|
|
from openapi_core.deserializing.media_types.factories import (
|
|
MediaTypeDeserializersFactory,
|
|
)
|
|
from openapi_core.deserializing.parameters.factories import (
|
|
ParameterDeserializersFactory,
|
|
)
|
|
from openapi_core.deserializing.parameters.exceptions import (
|
|
EmptyParameterValue,
|
|
)
|
|
from openapi_core.schema.media_types.models import MediaType
|
|
from openapi_core.schema.parameters.models import Parameter
|
|
|
|
|
|
class TestParameterDeserialise(object):
|
|
|
|
@pytest.fixture
|
|
def deserializer_factory(self):
|
|
def create_deserializer(param):
|
|
return ParameterDeserializersFactory().create(param)
|
|
return create_deserializer
|
|
|
|
def test_deprecated(self, deserializer_factory):
|
|
param = Parameter('param', 'query', deprecated=True)
|
|
value = 'test'
|
|
|
|
with pytest.warns(DeprecationWarning):
|
|
result = deserializer_factory(param)(value)
|
|
|
|
assert result == value
|
|
|
|
def test_query_empty(self, deserializer_factory):
|
|
param = Parameter('param', 'query')
|
|
value = ''
|
|
|
|
with pytest.raises(EmptyParameterValue):
|
|
deserializer_factory(param)(value)
|
|
|
|
def test_query_valid(self, deserializer_factory):
|
|
param = Parameter('param', 'query')
|
|
value = 'test'
|
|
|
|
result = deserializer_factory(param)(value)
|
|
|
|
assert result == value
|
|
|
|
|
|
class TestMediaTypeDeserialise(object):
|
|
|
|
@pytest.fixture
|
|
def deserializer_factory(self):
|
|
def create_deserializer(media_type, custom_deserializers=None):
|
|
return MediaTypeDeserializersFactory(
|
|
custom_deserializers=custom_deserializers).create(media_type)
|
|
return create_deserializer
|
|
|
|
def test_empty(self, deserializer_factory):
|
|
media_type = MediaType('application/json')
|
|
value = ''
|
|
|
|
with pytest.raises(DeserializeError):
|
|
deserializer_factory(media_type)(value)
|
|
|
|
def test_no_schema_deserialised(self, deserializer_factory):
|
|
media_type = MediaType('application/json')
|
|
value = "{}"
|
|
|
|
result = deserializer_factory(media_type)(value)
|
|
|
|
assert result == {}
|
|
|
|
def test_no_schema_custom_deserialiser(self, deserializer_factory):
|
|
custom_mimetype = 'application/custom'
|
|
media_type = MediaType(custom_mimetype)
|
|
value = "{}"
|
|
|
|
def custom_deserializer(value):
|
|
return 'custom'
|
|
custom_deserializers = {
|
|
custom_mimetype: custom_deserializer,
|
|
}
|
|
|
|
result = deserializer_factory(
|
|
media_type, custom_deserializers=custom_deserializers)(value)
|
|
|
|
assert result == 'custom'
|