Source code for cis_interface.metaschema.properties.tests

from cis_interface.tests import assert_raises, assert_equal, assert_not_equal
from cis_interface.metaschema import properties, get_metaschema, _base_validator
from cis_interface.metaschema.properties.MetaschemaProperty import MetaschemaProperty


existing = properties.get_registered_properties()
non_existant = 'invalid_xyz123'
existing_class = list(existing.keys())[0]
existing_validator = non_existant
assert(non_existant not in existing)
assert(non_existant not in _base_validator.VALIDATORS)
for k, v in _base_validator.VALIDATORS.items():
    if k not in existing:
        existing_validator = k
        break
else:  # pragma: debug
    # Not sure how this would happen, but guarantee it dosn't do it silently
    raise Exception('Could not locate unregistered jsonschema property.')


[docs]def test_register_metaschema_property(): r"""Test errors in register_metaschema_property.""" # Error when property class already registered x = type('ReplacementClassSchema', (MetaschemaProperty, ), {'name': existing_class}) assert_raises(ValueError, properties.register_metaschema_property, x) # Error when replacement class has schema x = type('ReplacementClassSchema', (MetaschemaProperty, ), {'name': existing_validator, 'schema': {}}) assert_raises(ValueError, properties.register_metaschema_property, x) # Error when validate set def fake_validate(*args, **kwargs): # pragma: no cover return x = type('ReplacementClassSchema', (MetaschemaProperty, ), {'name': existing_validator, '_validate': fake_validate}) assert_raises(ValueError, properties.register_metaschema_property, x) x = type('ReplacementClassSchema', (MetaschemaProperty, ), {'name': existing_validator, 'schema': {}}) assert_raises(ValueError, properties.register_metaschema_property, x) # Error when property not in existing metaschema get_metaschema() # ensures it has been initialized x = type('ReplacementClassSchema', (MetaschemaProperty, ), {'name': non_existant}) assert_raises(ValueError, properties.register_metaschema_property, x)
[docs]def test_get_registered_properties(): r"""Test get_registered_properties.""" assert(properties.get_registered_properties())
[docs]def test_get_metaschema_property(): r"""Test get_metaschema_property.""" assert_equal(properties.get_metaschema_property(non_existant), MetaschemaProperty) assert_not_equal(properties.get_metaschema_property(existing_class), MetaschemaProperty)