def run_test(self, obj, service=None, method=None, operator=None): ec = apilib.ErrorContext() vc = apilib.ValidationContext(service=service, method=method, operator=operator) m = self.Model.from_json(obj, ec, vc) return m, ec.all_errors()
def test_simple_valid(self): ec = apilib.ErrorContext() m = SimpleValidationModel.from_json(None, ec, apilib.ValidationContext()) self.assertIsNone(m) self.assertFalse(ec.has_errors()) ec = apilib.ErrorContext() m = SimpleValidationModel.from_json({'fstring': None}, ec, apilib.ValidationContext()) self.assertIsNotNone(m) self.assertEqual(None, m.fstring) self.assertFalse(ec.has_errors()) ec = apilib.ErrorContext() m = SimpleValidationModel.from_json({'fstring': 'foo'}, ec, apilib.ValidationContext()) self.assertIsNotNone(m) self.assertEqual('foo', m.fstring) self.assertFalse(ec.has_errors())
def test_simple_invalid(self): ec = apilib.ErrorContext() m = SimpleValidationModel.from_json({'fstring': 'EvIL'}, ec, apilib.ValidationContext()) self.assertIsNone(m) self.assertTrue(ec.has_errors()) errors = ec.all_errors() self.assertEqual(1, len(errors)) self.assertEqual('EVIL_VALUE',errors[0].code) self.assertEqual('fstring', errors[0].path) self.assertEqual('An evil value was found', errors[0].msg)
def run_test(self, model_type, obj, service=None, method=None, operator=None): ec = apilib.ErrorContext() vc = apilib.ValidationContext(service=service, method=method, operator=operator) m = model_type.from_json(obj, ec, vc) sorted_errors = sorted( ec.all_errors(), key=lambda e: (e.code, e.path)) # So as not to rely on iteration order return m, sorted_errors
def run_validator_test_for_method(self, validator, value, method, *error_codes): return self.run_validator_test_for_context( validator, value, apilib.ValidationContext(method=method), *error_codes)