def test_data_schema_validation_failed(self): for method in ("POST", "PUT"): request = DummyRequest() request.method = method request.requestHeaders.setRawHeaders( "Content-Type", ["application/json"]) request.requestHeaders.setRawHeaders( "Accept", ["application/json"]) request.set_content(json.dumps({"bar": ""})) resource = Resource() resource.ALLOWED_CONTENT_TYPE = frozenset(["application/json"]) resource.ALLOWED_ACCEPT = frozenset(["application/json"]) resource.SCHEMAS = { method: Schema({Required("foo"): str}) } method_impl = Mock(return_value=("", OK)) setattr(resource, method.lower(), method_impl) with patch.object(resource, "error") as error: response = resource.render(request) self.assertEqual(response, NOT_DONE_YET) error.assert_called_once_with( request, BAD_REQUEST, "Failed to validate the request data against the schema: extra " "keys not allowed @ data[u'bar']" ) self.assertFalse(method_impl.called)
def test_data_empty(self): for method in ("POST", "PUT"): request = DummyRequest() request.method = method request.requestHeaders.setRawHeaders( "Content-Type", ["application/json"]) request.requestHeaders.setRawHeaders( "Accept", ["application/json"]) resource = Resource() resource.ALLOWED_CONTENT_TYPE = frozenset(["application/json"]) resource.ALLOWED_ACCEPT = frozenset(["application/json"]) resource.SCHEMAS = { method: Schema({Required("foo"): str}) } method_impl = Mock(return_value=("", OK)) setattr(resource, method.lower(), method_impl) response = resource.render(request) self.assertEqual(response, NOT_DONE_YET) method_impl.assert_called_once_with(request=request)