def validate(self, validation_key: str, model: dict): """ Validate based on a schema definition :param validation_key: path in swagger document to find schema :param model: model to validate :return: None if validation is successful, otherwise an exception will be raised """ spec = reach(self.spec_source, validation_key) if not spec: raise Base422Exception( 'No validation available', reason='A spec was requested but not resolved from API decs') try: validate_object(self.spec, spec, model) except ValidationError as verr: raise Base422Exception('Validation Failed', str(verr))
def test_returns_none(self): self.assertEqual(reach(self.obj, 'j'), None)
def test_returns_function_property(self): self.assertEqual(reach(self.obj, 'i.x'), 5)
def test_returns_none_from_invalid_attribute(self): self.assertEqual(reach(self.obj, 'a.b.c.d-.x'), None)
def test_raises_keyerror_from_missing_object_attribute_in_strict_mode( self): with self.assertRaises(KeyError): reach(self.obj, 'a.b.c.o.x', options={'strict': True})
def test_returns_none_from_missing_function_attribute(self): self.assertEqual(reach(self.obj, 'i.y'), None)
def test_returns_none_from_missing_object_attribute(self): self.assertEqual(reach(self.obj, 'a.b.c.d.x'), None)
def get_authorization_header(event): """Gets the authorization header from the standard lambda event, returns None if not present.""" return reach(event, "headers.Authorization", options={'default': None})
def test_returns_a_valid_member_with_separator_override(self): self.assertEqual( reach(self.obj, 'a/b/c/d', options={'separator': '/'}), 1)
def test_returns_a_valid_member(self): self.assertEqual(reach(self.obj, 'a.b.c.d'), 1)
def test_returns_last_value_of_array_using_negative_index(self): self.assertEqual(reach(self.obj, 'k.-2'), 9)
def test_returns_first_value_of_array(self): self.assertEqual(reach(self.obj, 'k.0'), 4)
def test_returns_object_itself(self): self.assertEqual(reach(self.obj, None), self.obj) self.assertEqual(reach(self.obj, False), self.obj) self.assertEqual(reach(self.obj), self.obj)
def get_claims(event): """Attempts to get the dictionary of claims from within standard lambda event.""" return reach(event, 'requestContext.authorizer.claims', options={'default': {}})
def test_returns_nested_default_value(self): self.assertEqual( reach(self.obj, 'a.b.q', options={'default': 'testerino'}), 'testerino')
def test_returns_none_from_none_object(self): self.assertEqual(reach(None, 'a.b.c.d'), None)
def get_account_id(event): """Gets the account id from a standard lambda event.""" return reach(event, 'requestContext.authorizer.claims.sub', options={'default': None})