Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_missing_association_for_navigation_property(xml_builder_factory):
""" Test faulty aassociations on navigation property"""
xml_builder = xml_builder_factory()
xml_builder.add_schema('EXAMPLE_SRV', """
""")
metadata = MetadataBuilder(xml_builder.serialize())
with pytest.raises(KeyError) as typ_ex_info:
metadata.build()
assert typ_ex_info.value.args[0] == 'Association Followers does not exist in namespace EXAMPLE_SRV'
"""
)
metadata = MetadataBuilder(xml_builder.serialize())
with pytest.raises(RuntimeError) as e_info:
metadata.build()
assert str(e_info.value) == 'Entity Set DataValueHelp for ValueHelper(Dict/Value) does not exist'
metadata.config.set_custom_error_policy({
ParserError.ANNOTATION: PolicyWarning()
})
metadata.build()
assert_logging_policy(mock_warning,
'RuntimeError',
'Entity Set DataValueHelp for ValueHelper(Dict/Value) does not exist'
)
def test_missing_schema(xml_builder_factory):
"""Test correct handling of missing Schema tag in xml"""
xml_builder = xml_builder_factory()
xml_builder.schema_is_enabled = False
xml = xml_builder.serialize()
try:
MetadataBuilder(xml).build()
except PyODataParserError as ex:
assert str(ex) == 'Metadata document is missing the element Schema'
def test_unsupported_enum_underlying_type(xml_builder_factory):
"""Test if parser will parse only allowed underlying types"""
xml_builder = xml_builder_factory()
xml_builder.add_schema('Test', '')
xml = xml_builder.serialize()
try:
MetadataBuilder(xml).build()
except PyODataParserError as ex:
assert str(ex).startswith(f'Type Edm.Bool is not valid as underlying type for EnumType - must be one of')
def test_whitelisted_edm_namespace_2007_05(mock_from_etree, xml_builder_factory):
"""Test correct handling of whitelisted Microsoft's edm namespace"""
xml_builder = xml_builder_factory()
xml_builder.namespaces['edm'] = 'http://schemas.microsoft.com/ado/2007/05/edm'
xml_builder.add_schema('', '')
xml = xml_builder.serialize()
MetadataBuilder(xml).build()
assert Schema.from_etree is mock_from_etree
mock_from_etree.assert_called_once()
def test_whitelisted_edm_namespace(mock_from_etree, xml_builder_factory):
"""Test correct handling of whitelisted Microsoft's edm namespace"""
xml_builder = xml_builder_factory()
xml_builder.namespaces['edm'] = 'http://schemas.microsoft.com/ado/2009/11/edm'
xml_builder.add_schema('', '')
xml = xml_builder.serialize()
MetadataBuilder(xml).build()
assert Schema.from_etree is mock_from_etree
mock_from_etree.assert_called_once()
def test_namespace_whitelist(mock_from_etree, xml_builder_factory):
"""Test correct handling of whitelisted namespaces"""
xml_builder = xml_builder_factory()
xml_builder.namespaces['edmx'] = 'http://docs.oasis-open.org/odata/ns/edmx'
xml_builder.namespaces['edm'] = 'http://docs.oasis-open.org/odata/ns/edm'
xml_builder.add_schema('', '')
xml = xml_builder.serialize()
MetadataBuilder(xml).build()
assert Schema.from_etree is mock_from_etree
mock_from_etree.assert_called_once()
def test_missing_data_service(xml_builder_factory):
"""Test correct handling of missing DataService tag in xml"""
xml_builder = xml_builder_factory()
xml_builder.data_services_is_enabled = False
xml = xml_builder.serialize()
try:
MetadataBuilder(xml).build()
except PyODataParserError as ex:
assert str(ex) == 'Metadata document is missing the element DataServices'
def test_complex_serializer(schema):
"""Test de/serializer of complex edm types"""
# pylint: disable=redefined-outer-name
# encode without edm type information
with pytest.raises(PyODataException) as e_info:
EdmStructTypeSerializer().to_literal(None, 'something')
assert str(e_info.value).startswith('Cannot encode value something')
# decode without edm type information
with pytest.raises(PyODataException) as e_info:
EdmStructTypeSerializer().from_json(None, 'something')
assert str(e_info.value).startswith('Cannot decode value something')
# entity without properties
entity_type = EntityType('Box', 'Box', False)
srl = EdmStructTypeSerializer()
assert srl.to_literal(entity_type, 'something') == {}
assert srl.from_json(entity_type, 'something') == {}
# entity with properties of ODATA primitive types
entity_type = schema.entity_type('TemperatureMeasurement')
def test_complex_serializer(schema):
"""Test de/serializer of complex edm types"""
# pylint: disable=redefined-outer-name
# encode without edm type information
with pytest.raises(PyODataException) as e_info:
EdmStructTypeSerializer().to_literal(None, 'something')
assert str(e_info.value).startswith('Cannot encode value something')
# decode without edm type information
with pytest.raises(PyODataException) as e_info:
EdmStructTypeSerializer().from_json(None, 'something')
assert str(e_info.value).startswith('Cannot decode value something')
# entity without properties
entity_type = EntityType('Box', 'Box', False)
srl = EdmStructTypeSerializer()
assert srl.to_literal(entity_type, 'something') == {}
assert srl.from_json(entity_type, 'something') == {}
# entity with properties of ODATA primitive types
entity_type = schema.entity_type('TemperatureMeasurement')
assert srl.to_literal(entity_type, {'ignored-key': 'ignored-value', 'Sensor': 'x'}) == {'Sensor': "'x'"}
assert srl.from_json(entity_type, {'ignored-key': 'ignored-value', 'Sensor': "'x'"}) == {'Sensor': 'x'}