def test_fields_not_found(self):
     doc = {'a': 10, 'd': {'bucket': {'a': 'yes!!!'}},
            'b': 20, 's': {extf.KEY: 'key'},
            'd2': {'bucket2': {'a': 'no!!!'}},
            'd3': {'bucket3': {reservedf.BUCKET: 'yes!!!'}}}
     valid1 = RecursiveValidator(doc, intf.values())
     valid2 = SimpleValidator(doc, reservedf.values(), valid1)
     valid3 = RecursiveValidator(doc, intf.values(), valid2)
     valid3.validate()
    def test_simple1(self):
        doc = {'a': 10, 'd': {'bucket': {reservedf.BUCKET: 'yes!!!'}}, 'b': 20, extf.KEY: 'key'}
        fields = extf + intf + reservedf.values()
        valid = RecursiveValidator(doc, fields)

        try:
            valid.validate()
        except Exception, e:
            assert e.message == 'Document contains forbidden fields [%s,%s]' % \
                                (extf.KEY, reservedf.BUCKET)
    def test_chain_and_duplicate(self):
        doc = {'a': 10, 'd': {'bucket': {reservedf.BUCKET: 'yes!!!'}},
               'b': 20, extf.KEY: 'key',
               'd2': {'bucket2': {reservedf.BUCKET: 'no!!!'}},
               'd3': {'bucket3': {reservedf.BUCKET: 'yes!!!'}}}
        valid1 = RecursiveValidator(doc, reservedf.values())
        valid2 = SimpleValidator(doc, extf.values(), valid1)
        valid3 = RecursiveValidator(doc, intf.values(), valid2)

        try:
            valid3.validate()
        except Exception, e:
            assert e.message == 'Document contains forbidden fields [%s,%s]' % \
                                (extf.KEY, reservedf.BUCKET)