예제 #1
0
    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)
예제 #2
0
    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)
예제 #3
0
    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))
예제 #4
0
 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))