mirror of
https://github.com/spring-projects/spring-framework
synced 2026-06-08 17:33:33 +00:00
Polishing contribution
Closes gh-35225
This commit is contained in:
+24
-15
@@ -16,21 +16,21 @@
|
||||
|
||||
package org.springframework.http.client;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.util.zip.DeflaterOutputStream;
|
||||
import java.util.zip.GZIPOutputStream;
|
||||
|
||||
import mockwebserver3.Dispatcher;
|
||||
import mockwebserver3.MockResponse;
|
||||
import mockwebserver3.MockWebServer;
|
||||
import mockwebserver3.RecordedRequest;
|
||||
import okio.Buffer;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.zip.DeflaterOutputStream;
|
||||
import java.util.zip.GZIPOutputStream;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
@@ -112,25 +112,34 @@ public abstract class AbstractMockWebServerTests {
|
||||
String headerName = request.getTarget().replace("/header/","");
|
||||
return new MockResponse.Builder().body(headerName + ":" + request.getHeaders().get(headerName)).code(200).build();
|
||||
}
|
||||
else if(request.getTarget().startsWith("/compress/")) {
|
||||
else if(request.getTarget().startsWith("/compress/") && request.getBody() != null) {
|
||||
String encoding = request.getTarget().replace("/compress/","");
|
||||
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
|
||||
String requestBody = request.getBody().utf8();
|
||||
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
||||
if (encoding.equals("gzip")) {
|
||||
try(GZIPOutputStream gzipOutputStream = new GZIPOutputStream(byteArrayOutputStream)) {
|
||||
gzipOutputStream.write("Test Payload".getBytes());
|
||||
try(GZIPOutputStream gzipOutputStream = new GZIPOutputStream(outputStream)) {
|
||||
gzipOutputStream.write(requestBody.getBytes());
|
||||
gzipOutputStream.flush();
|
||||
}
|
||||
}
|
||||
else if(encoding.equals("deflate")) {
|
||||
try(DeflaterOutputStream deflaterOutputStream = new DeflaterOutputStream(byteArrayOutputStream)) {
|
||||
deflaterOutputStream.write("Test Payload".getBytes());
|
||||
try(DeflaterOutputStream deflaterOutputStream = new DeflaterOutputStream(outputStream)) {
|
||||
deflaterOutputStream.write(requestBody.getBytes());
|
||||
deflaterOutputStream.flush();
|
||||
}
|
||||
} else {
|
||||
byteArrayOutputStream.write("Test Payload".getBytes());
|
||||
}
|
||||
return new MockResponse.Builder().body(byteArrayOutputStream.toString(StandardCharsets.ISO_8859_1))
|
||||
.code(200).setHeader(HttpHeaders.CONTENT_ENCODING, encoding).build();
|
||||
else {
|
||||
outputStream.write(requestBody.getBytes());
|
||||
}
|
||||
Buffer buffer = new Buffer();
|
||||
buffer.write(outputStream.toByteArray());
|
||||
MockResponse.Builder builder = new MockResponse.Builder()
|
||||
.body(buffer)
|
||||
.code(200);
|
||||
if (!encoding.isEmpty()) {
|
||||
builder.setHeader(HttpHeaders.CONTENT_ENCODING, encoding);
|
||||
}
|
||||
return builder.build();
|
||||
}
|
||||
return new MockResponse.Builder().code(404).build();
|
||||
}
|
||||
|
||||
+18
-15
@@ -100,22 +100,22 @@ class JdkClientHttpRequestFactoryTests extends AbstractHttpRequestFactoryTests {
|
||||
void deleteRequestWithBody() throws Exception {
|
||||
URI uri = URI.create(baseUrl + "/echo");
|
||||
ClientHttpRequest request = this.factory.createRequest(uri, HttpMethod.DELETE);
|
||||
StreamUtils.copy("body", StandardCharsets.ISO_8859_1, request.getBody());
|
||||
StreamUtils.copy("body", StandardCharsets.UTF_8, request.getBody());
|
||||
try (ClientHttpResponse response = request.execute()) {
|
||||
assertThat(response.getStatusCode()).as("Invalid response status").isEqualTo(HttpStatus.OK);
|
||||
assertThat(StreamUtils.copyToString(response.getBody(), StandardCharsets.ISO_8859_1))
|
||||
.as("Invalid request body").isEqualTo("body");
|
||||
assertThat(response.getBody()).as("Invalid request body").hasContent("body");
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void compressionDisabled() throws IOException {
|
||||
URI uri = URI.create(baseUrl + "/compress/");
|
||||
ClientHttpRequest request = this.factory.createRequest(uri, HttpMethod.GET);
|
||||
ClientHttpRequest request = this.factory.createRequest(uri, HttpMethod.POST);
|
||||
StreamUtils.copy("Payload to compress", StandardCharsets.UTF_8, request.getBody());
|
||||
try (ClientHttpResponse response = request.execute()) {
|
||||
assertThat(response.getStatusCode()).as("Invalid response status").isEqualTo(HttpStatus.OK);
|
||||
assertThat(StreamUtils.copyToString(response.getBody(), StandardCharsets.ISO_8859_1))
|
||||
.as("Invalid request body").isEqualTo("Test Payload");
|
||||
assertThat(response.getHeaders().containsHeader("Content-Encoding")).isFalse();
|
||||
assertThat(response.getBody()).as("Invalid request body").hasContent("Payload to compress");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,13 +123,14 @@ class JdkClientHttpRequestFactoryTests extends AbstractHttpRequestFactoryTests {
|
||||
void compressionGzip() throws IOException {
|
||||
URI uri = URI.create(baseUrl + "/compress/gzip");
|
||||
JdkClientHttpRequestFactory requestFactory = (JdkClientHttpRequestFactory) this.factory;
|
||||
requestFactory.setCompressionEnabled(true);
|
||||
ClientHttpRequest request = requestFactory.createRequest(uri, HttpMethod.GET);
|
||||
|
||||
requestFactory.enableCompression(true);
|
||||
ClientHttpRequest request = requestFactory.createRequest(uri, HttpMethod.POST);
|
||||
StreamUtils.copy("Payload to compress", StandardCharsets.UTF_8, request.getBody());
|
||||
try (ClientHttpResponse response = request.execute()) {
|
||||
assertThat(response.getStatusCode()).as("Invalid response status").isEqualTo(HttpStatus.OK);
|
||||
assertThat(StreamUtils.copyToString(response.getBody(), StandardCharsets.ISO_8859_1))
|
||||
.as("Invalid request body").isEqualTo("Test Payload");
|
||||
assertThat(response.getHeaders().getFirst("Content-Encoding"))
|
||||
.as("Invalid content encoding").isEqualTo("gzip");
|
||||
assertThat(response.getBody()).as("Invalid request body").hasContent("Payload to compress");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -137,12 +138,14 @@ class JdkClientHttpRequestFactoryTests extends AbstractHttpRequestFactoryTests {
|
||||
void compressionDeflate() throws IOException {
|
||||
URI uri = URI.create(baseUrl + "/compress/deflate");
|
||||
JdkClientHttpRequestFactory requestFactory = (JdkClientHttpRequestFactory) this.factory;
|
||||
requestFactory.setCompressionEnabled(true);
|
||||
ClientHttpRequest request = requestFactory.createRequest(uri, HttpMethod.GET);
|
||||
requestFactory.enableCompression(true);
|
||||
ClientHttpRequest request = requestFactory.createRequest(uri, HttpMethod.POST);
|
||||
StreamUtils.copy("Payload to compress", StandardCharsets.UTF_8, request.getBody());
|
||||
try (ClientHttpResponse response = request.execute()) {
|
||||
assertThat(response.getStatusCode()).as("Invalid response status").isEqualTo(HttpStatus.OK);
|
||||
assertThat(StreamUtils.copyToString(response.getBody(), StandardCharsets.ISO_8859_1))
|
||||
.as("Invalid request body").isEqualTo("Test Payload");
|
||||
assertThat(response.getHeaders().getFirst("Content-Encoding"))
|
||||
.as("Invalid content encoding").isEqualTo("deflate");
|
||||
assertThat(response.getBody()).as("Invalid request body").hasContent("Payload to compress");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -72,7 +72,7 @@ class JdkClientHttpRequestTests {
|
||||
}
|
||||
|
||||
private JdkClientHttpRequest createRequest(Duration timeout) {
|
||||
return new JdkClientHttpRequest(client, URI.create("https://abc.com"), HttpMethod.GET, executor, timeout);
|
||||
return new JdkClientHttpRequest(client, URI.create("https://abc.com"), HttpMethod.GET, executor, timeout, false);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user