def test_set_with_validators(): mv = MetadataValidatorSet([ # this is vile MetadataValidator('key1', [ lambda k, v: exec('assert k == "key1"'), lambda k, v: exec('assert v == {"a": "b"}') ]), MetadataValidator('key2', [lambda k, v: exec('assert k == "key2"')]) ]) md = {'key1': {'a': 'b'}, 'key2': {'foo': 'bar'}} mv.validate_metadata(md) mv.validate_metadata(maps.FrozenMap(md)) assert mv.keys() == ['key1', 'key2'] assert mv.prefix_keys() == [] assert mv.validator_count('key1') == 2 assert mv.validator_count('key2') == 1
def test_set_with_prefix_validators(): mv = MetadataValidatorSet([ # this is vile MetadataValidator('pre1', prefix_validators=[ lambda p, k, v: exec('assert p == "pre1"'), lambda p, k, v: exec('assert k == "pre1stuff"'), lambda p, k, v: exec('assert v == {"a": "b"}') ]), MetadataValidator( 'pre2', prefix_validators=[lambda p, k, v: exec('assert p == "pre2"')]) ]) md = {'pre1stuff': {'a': 'b'}, 'pre2thingy': {'foo': 'bar'}} mv.validate_metadata(md) mv.validate_metadata(maps.FrozenMap(md)) assert mv.keys() == [] assert mv.prefix_keys() == ['pre1', 'pre2'] assert mv.prefix_validator_count('pre1') == 3 assert mv.prefix_validator_count('pre2') == 1
def test_set_with_prefix_validators_and_standard_validator(): mv = MetadataValidatorSet([ # this is vile MetadataValidator('pre1', prefix_validators=[ lambda p, k, v: exec('assert p == "pre1"'), lambda p, k, v: exec('assert k == "pre1stuff"'), lambda p, k, v: exec('assert v == {"a": "b"}') ]), MetadataValidator( 'pre2', prefix_validators=[lambda p, k, v: exec('assert p == "pre2"')]), # test that non-prefix validator with same name is ok MetadataValidator('pre2', [lambda k, v: exec('raise ValueError()')]) ]) md = {'pre1stuff': {'a': 'b'}, 'pre2thingy': {'foo': 'bar'}} mv.validate_metadata(md) mv.validate_metadata(maps.FrozenMap(md)) assert mv.keys() == ['pre2'] assert mv.prefix_keys() == ['pre1', 'pre2'] assert mv.prefix_validator_count('pre1') == 3 assert mv.prefix_validator_count('pre2') == 1