def test_validate_schema_cannot_validate(self, mock_jsonschema): json_patch_deserializer = wsgi.JSONPatchDeserializer() json_patch_deserializer.schema = {'type': 'array'} test_change = {'path': ['foo_path'], 'value': 'foo_value'} # Assert that jsonschema validation was not performed because # can_validate = False. json_patch_deserializer._validate_schema(test_change) self.assertFalse(mock_jsonschema.validate.called) mock_jsonschema.validate.reset_mock() json_patch_deserializer = wsgi.JSONPatchDeserializer() json_patch_deserializer.schema = {'type': 'object'} json_patch_deserializer._validate_schema(test_change) self.assertFalse(mock_jsonschema.validate.called)
def test_validate_json_pointer(self): json_patch_deserializer = wsgi.JSONPatchDeserializer() expected_exception = webob.exc.HTTPBadRequest bad_pointers = ['pointer', '/ /\n/', '//', '// ', '/~2'] for pointer in bad_pointers: self.assertRaises(expected_exception, json_patch_deserializer._validate_json_pointer, pointer)
def test_validate_allowed_methods_except_http_forbidden(self): json_patch_deserializer = wsgi.JSONPatchDeserializer() json_patch_deserializer.allowed_operations = mock.Mock( spec_set=wsgi.JSONPatchDeserializer.allowed_operations, **{'get.return_value': None} ) e = self.assertRaises( webob.exc.HTTPForbidden, json_patch_deserializer._validate_allowed_methods, {'op': 'foo_op', 'path': 'foo_path'}, allow_unknown_path=False) self.assertEqual("Attribute 'f/o/o/_/p/a/t/h' is invalid", str(e))
def test_from_json_patch_except_value_error(self): json_patch_deserializer = wsgi.JSONPatchDeserializer() e = self.assertRaises(exceptions.MalformedRequestBody, json_patch_deserializer._from_json_patch, "throw value error") self.assertIn('cannot understand JSON', str(e))