Example #1
0
 def __init__(self, jsonDict, requestClass):
     validator = avrotools.Validator(requestClass)
     self.message = ("Response '{}' is not a valid instance of {}. "
                     "Invalid fields: {} "
                     "Please file a bug report.".format(
                         jsonDict, requestClass,
                         validator.getInvalidFields(jsonDict)))
Example #2
0
 def __init__(self, jsonDict, requestClass):
     messageString = (
         "Request '{}' is not a valid instance of {}; "
         "invalid fields: {}")
     validator = avrotools.Validator(requestClass)
     self.message = messageString.format(
         jsonDict, requestClass, validator.getInvalidFields(jsonDict))
Example #3
0
 def testLessFields(self):
     # Returns a bogus field indicator
     # when there are fields missing from the jsonDict
     for class_ in protocol.getProtocolClasses():
         validator = avrotools.Validator(class_)
         invalidFields = validator.getInvalidFields({})
         for key, value in invalidFields.items():
             self.assertEqual(value, avrotools.SchemaValidator.missingValue)
Example #4
0
 def testMoreFields(self):
     # Throws an exception when there are extra fields in the jsonDict
     for class_ in protocol.getProtocolClasses():
         jsonDict = class_().toJsonDict()
         jsonDict['extra'] = 'extra'
         validator = avrotools.Validator(class_)
         with self.assertRaises(avrotools.AvrotoolsException):
             validator.getInvalidFields(jsonDict)
Example #5
0
 def testGeneratedObjects(self):
     # Test that generated objects pass validation
     for class_ in protocol.getProtocolClasses():
         creator = avrotools.Creator(class_)
         validator = avrotools.Validator(class_)
         generatedInstance = creator.getTypicalInstance()
         jsonDict = generatedInstance.toJsonDict()
         returnValue = validator.getInvalidFields(jsonDict)
         self.assertEqual(returnValue, {})
Example #6
0
 def assertValid(self, protocolClass, jsonDict):
     """
     Asserts that the specified JSON dictionary is a valid instance
     of the specified protocol class.
     """
     if not protocolClass.validate(jsonDict):
         validator = avrotools.Validator(protocolClass)
         invalidFields = validator.getInvalidFields(jsonDict)
         message = ("{} is not a valid instance of {}. "
                    "Invalid fields = {}".format(jsonDict, protocolClass,
                                                 invalidFields))
         assert False, message
Example #7
0
 def testMoreFields(self):
     # Returns a bogus field indicator
     # when there are extra fields in the jsonDict
     key = 'extra'
     for class_ in protocol.getProtocolClasses():
         jsonDict = class_().toJsonDict()
         jsonDict[key] = None
         validator = avrotools.Validator(class_)
         invalidFields = validator.getInvalidFields(jsonDict)
         self.assertIn(key, invalidFields)
         self.assertEqual(invalidFields[key],
                          avrotools.SchemaValidator.extraValue)
Example #8
0
 def testOptionalFields(self):
     # test that omission of optional fields does not throw
     # an exception, but omission of a required field returns
     # a dict only mentioning that field
     for class_ in protocol.getProtocolClasses():
         validator = avrotools.Validator(class_)
         creator = avrotools.Creator(class_)
         generatedInstance = creator.getTypicalInstance()
         jsonDict = generatedInstance.toJsonDict()
         requiredFields = class_.requiredFields
         for key in jsonDict.keys():
             if key not in requiredFields:
                 del jsonDict[key]
         returnValue = validator.getInvalidFields(jsonDict)
         self.assertEqual(returnValue, {})
         if len(requiredFields) != 0:
             requiredKey = list(requiredFields)[0]
             del jsonDict[requiredKey]
             returnValue = validator.getInvalidFields(jsonDict)
             self.assertEqual(returnValue[requiredKey],
                              avrotools.SchemaValidator.missingValue)
             self.assertEqual(len(returnValue), 1)
Example #9
0
 def testNonProtocolElement(self):
     # Throws an exception when class_ is not a subclass of ProtocolElement
     with self.assertRaises(avrotools.AvrotoolsException):
         avrotools.Validator(object).getInvalidFields({})
Example #10
0
 def testLessFields(self):
     # Throws an exception when there are fields missing from the jsonDict
     for class_ in protocol.getProtocolClasses():
         validator = avrotools.Validator(class_)
         with self.assertRaises(avrotools.AvrotoolsException):
             validator.getInvalidFields({})