Polishing external contribution

See gh-30787
Closes gh-30788
This commit is contained in:
Arjen Poutsma
2023-07-03 12:28:29 +02:00
parent 9900575f9c
commit 46f1849c2f
3 changed files with 48 additions and 32 deletions

View File

@@ -79,6 +79,11 @@ public abstract class AbstractMockWebServerTests {
else if(request.getPath().equals("/status/notfound")) {
return new MockResponse().setResponseCode(404);
}
else if (request.getPath().equals("/status/299")) {
assertThat(request.getHeader("Expect"))
.contains("299");
return new MockResponse().setResponseCode(299);
}
else if(request.getPath().startsWith("/params")) {
assertThat(request.getPath()).contains("param1=value");
assertThat(request.getPath()).contains("param2=value1&param2=value2");

View File

@@ -16,14 +16,16 @@
package org.springframework.http.client;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.time.Duration;
import java.util.concurrent.Executor;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatusCode;
import org.springframework.lang.Nullable;
import static org.assertj.core.api.Assertions.assertThat;
@@ -32,6 +34,25 @@ import static org.assertj.core.api.Assertions.assertThat;
*/
public class JdkClientHttpRequestFactoryTests extends AbstractHttpRequestFactoryTests {
@Nullable
private static String originalPropertyValue;
@BeforeAll
public static void setProperty() {
originalPropertyValue = System.getProperty("jdk.httpclient.allowRestrictedHeaders");
System.setProperty("jdk.httpclient.allowRestrictedHeaders", "expect");
}
@AfterAll
public static void restoreProperty() {
if (originalPropertyValue != null) {
System.setProperty("jdk.httpclient.allowRestrictedHeaders", originalPropertyValue);
}
else {
System.clearProperty("jdk.httpclient.allowRestrictedHeaders");
}
}
@Override
protected ClientHttpRequestFactory createRequestFactory() {
return new JdkClientHttpRequestFactory();
@@ -45,25 +66,13 @@ public class JdkClientHttpRequestFactoryTests extends AbstractHttpRequestFactory
}
@Test
public void customizeDisallowedHeaders() {
String original = System.getProperty("jdk.httpclient.allowRestrictedHeaders");
System.setProperty("jdk.httpclient.allowRestrictedHeaders", "host");
public void customizeDisallowedHeaders() throws IOException {
ClientHttpRequest request = factory.createRequest(URI.create(this.baseUrl + "/status/299"), HttpMethod.PUT);
request.getHeaders().set("Expect", "299");
assertThat(TestJdkClientHttpRequest.DISALLOWED_HEADERS).doesNotContain("host");
if (original != null) {
System.setProperty("jdk.httpclient.allowRestrictedHeaders", original);
}
else {
System.clearProperty("jdk.httpclient.allowRestrictedHeaders");
}
}
static class TestJdkClientHttpRequest extends JdkClientHttpRequest {
public TestJdkClientHttpRequest(HttpClient httpClient, URI uri, HttpMethod method, Executor executor, Duration readTimeout) {
super(httpClient, uri, method, executor, readTimeout);
}
try (ClientHttpResponse response = request.execute()) {
assertThat(response.getStatusCode()).as("Invalid status code").isEqualTo(HttpStatusCode.valueOf(299));
}
}
}