Allow HTTP delete with request entity
Issue: SPR-12361
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2014 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -16,10 +16,14 @@
|
||||
|
||||
package org.springframework.http.client;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.ProtocolException;
|
||||
import java.net.URL;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.http.HttpMethod;
|
||||
|
||||
public class BufferedSimpleHttpRequestFactoryTests extends AbstractHttpRequestFactoryTestCase {
|
||||
@@ -40,4 +44,42 @@ public class BufferedSimpleHttpRequestFactoryTests extends AbstractHttpRequestFa
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void prepareConnectionWithRequestBody() throws Exception {
|
||||
URL uri = new URL("http://example.com");
|
||||
testRequestBodyAllowed(uri, "GET", false);
|
||||
testRequestBodyAllowed(uri, "HEAD", false);
|
||||
testRequestBodyAllowed(uri, "OPTIONS", false);
|
||||
testRequestBodyAllowed(uri, "TRACE", false);
|
||||
testRequestBodyAllowed(uri, "PUT", true);
|
||||
testRequestBodyAllowed(uri, "POST", true);
|
||||
testRequestBodyAllowed(uri, "DELETE", true);
|
||||
}
|
||||
|
||||
private void testRequestBodyAllowed(URL uri, String httpMethod, boolean allowed) throws IOException {
|
||||
HttpURLConnection connection = new TestHttpURLConnection(uri);
|
||||
((SimpleClientHttpRequestFactory) this.factory).prepareConnection(connection, httpMethod);
|
||||
assertEquals(allowed, connection.getDoOutput());
|
||||
}
|
||||
|
||||
|
||||
private static class TestHttpURLConnection extends HttpURLConnection {
|
||||
|
||||
public TestHttpURLConnection(URL uri) {
|
||||
super(uri);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void connect() throws IOException {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disconnect() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean usingProxy() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,20 +16,23 @@
|
||||
|
||||
package org.springframework.http.client;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.net.URI;
|
||||
|
||||
import org.apache.http.HttpEntityEnclosingRequest;
|
||||
import org.apache.http.client.HttpClient;
|
||||
import org.apache.http.client.config.RequestConfig;
|
||||
import org.apache.http.client.methods.HttpUriRequest;
|
||||
import org.apache.http.client.protocol.HttpClientContext;
|
||||
import org.apache.http.impl.client.DefaultHttpClient;
|
||||
import org.apache.http.impl.client.HttpClientBuilder;
|
||||
import org.apache.http.params.CoreConnectionPNames;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.http.HttpMethod;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
public class HttpComponentsClientHttpRequestFactoryTests extends AbstractHttpRequestFactoryTestCase {
|
||||
|
||||
@Override
|
||||
@@ -73,6 +76,25 @@ public class HttpComponentsClientHttpRequestFactoryTests extends AbstractHttpReq
|
||||
RequestConfig requestConfig = (RequestConfig) config;
|
||||
assertEquals("Wrong custom connection timeout", 1234, requestConfig.getConnectTimeout());
|
||||
assertEquals("Wrong custom socket timeout", 4567, requestConfig.getSocketTimeout());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createHttpUriRequest() throws Exception {
|
||||
URI uri = new URI("http://example.com");
|
||||
testRequestBodyAllowed(uri, HttpMethod.GET, false);
|
||||
testRequestBodyAllowed(uri, HttpMethod.HEAD, false);
|
||||
testRequestBodyAllowed(uri, HttpMethod.OPTIONS, false);
|
||||
testRequestBodyAllowed(uri, HttpMethod.TRACE, false);
|
||||
testRequestBodyAllowed(uri, HttpMethod.PUT, true);
|
||||
testRequestBodyAllowed(uri, HttpMethod.POST, true);
|
||||
testRequestBodyAllowed(uri, HttpMethod.PATCH, true);
|
||||
testRequestBodyAllowed(uri, HttpMethod.DELETE, true);
|
||||
|
||||
}
|
||||
|
||||
private void testRequestBodyAllowed(URI uri, HttpMethod method, boolean allowed) {
|
||||
HttpUriRequest request = ((HttpComponentsClientHttpRequestFactory) this.factory).createHttpUriRequest(method, uri);
|
||||
assertEquals(allowed, request instanceof HttpEntityEnclosingRequest);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user