Skip to content

Commit 1908683

Browse files
committed
1 parent b76e748 commit 1908683

File tree

20 files changed

+838
-818
lines changed

20 files changed

+838
-818
lines changed

framework-platform/framework-platform.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ dependencies {
3737
api("com.networknt:json-schema-validator:1.5.3")
3838
api("com.oracle.database.jdbc:ojdbc11:21.9.0.0")
3939
api("com.rometools:rome:1.19.0")
40-
api("com.squareup.okhttp3:mockwebserver:3.14.9")
40+
api("com.squareup.okhttp3:mockwebserver3:5.1.0")
4141
api("com.sun.activation:jakarta.activation:2.0.1")
4242
api("com.sun.xml.bind:jaxb-core:3.0.2")
4343
api("com.sun.xml.bind:jaxb-impl:3.0.2")

spring-core/spring-core.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ dependencies {
9696
testImplementation("com.fasterxml.jackson.core:jackson-databind")
9797
testImplementation("com.fasterxml.woodstox:woodstox-core")
9898
testImplementation("com.google.code.findbugs:jsr305")
99-
testImplementation("com.squareup.okhttp3:mockwebserver")
99+
testImplementation("com.squareup.okhttp3:mockwebserver3")
100100
testImplementation("io.projectreactor:reactor-test")
101101
testImplementation("io.projectreactor.tools:blockhound")
102102
testImplementation("jakarta.annotation:jakarta.annotation-api")

spring-core/src/test/java/org/springframework/core/io/ResourceTests.java

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@
3737
import java.util.concurrent.atomic.AtomicBoolean;
3838
import java.util.stream.Stream;
3939

40-
import okhttp3.mockwebserver.Dispatcher;
41-
import okhttp3.mockwebserver.MockResponse;
42-
import okhttp3.mockwebserver.MockWebServer;
43-
import okhttp3.mockwebserver.RecordedRequest;
40+
import mockwebserver3.Dispatcher;
41+
import mockwebserver3.MockResponse;
42+
import mockwebserver3.MockWebServer;
43+
import mockwebserver3.RecordedRequest;
4444
import org.junit.jupiter.api.AfterEach;
4545
import org.junit.jupiter.api.Nested;
4646
import org.junit.jupiter.api.Test;
@@ -419,7 +419,7 @@ void canCustomizeHttpUrlConnectionForExists() throws Exception {
419419
assertThat(resource.exists()).isTrue();
420420
RecordedRequest request = this.server.takeRequest();
421421
assertThat(request.getMethod()).isEqualTo("HEAD");
422-
assertThat(request.getHeader("Framework-Name")).isEqualTo("Spring");
422+
assertThat(request.getHeaders().get("Framework-Name")).isEqualTo("Spring");
423423
}
424424

425425
@Test
@@ -429,7 +429,7 @@ void canCustomizeHttpUrlConnectionForExistsFallback() throws Exception {
429429
assertThat(resource.exists()).isTrue();
430430
RecordedRequest request = this.server.takeRequest();
431431
assertThat(request.getMethod()).isEqualTo("HEAD");
432-
assertThat(request.getHeader("Framework-Name")).isEqualTo("Spring");
432+
assertThat(request.getHeaders().get("Framework-Name")).isEqualTo("Spring");
433433
}
434434

435435
@Test
@@ -439,7 +439,7 @@ void canCustomizeHttpUrlConnectionForRead() throws Exception {
439439
assertThat(resource.getInputStream()).hasContent("Spring");
440440
RecordedRequest request = this.server.takeRequest();
441441
assertThat(request.getMethod()).isEqualTo("GET");
442-
assertThat(request.getHeader("Framework-Name")).isEqualTo("Spring");
442+
assertThat(request.getHeaders().get("Framework-Name")).isEqualTo("Spring");
443443
}
444444

445445
@Test
@@ -449,15 +449,15 @@ void useUserInfoToSetBasicAuth() throws Exception {
449449
"http://alice:secret@localhost:" + this.server.getPort() + "/resource");
450450
assertThat(resource.getInputStream()).hasContent("Spring");
451451
RecordedRequest request = this.server.takeRequest();
452-
String authorization = request.getHeader("Authorization");
452+
String authorization = request.getHeaders().get("Authorization");
453453
assertThat(authorization).isNotNull().startsWith("Basic ");
454454
assertThat(new String(Base64.getDecoder().decode(authorization.substring(6)),
455455
StandardCharsets.ISO_8859_1)).isEqualTo("alice:secret");
456456
}
457457

458458
@AfterEach
459-
void shutdown() throws Exception {
460-
this.server.shutdown();
459+
void shutdown() {
460+
this.server.close();
461461
}
462462

463463
private String startServer(boolean withHeadSupport) throws Exception {
@@ -488,23 +488,25 @@ public ResourceDispatcher(boolean withHeadSupport) {
488488

489489
@Override
490490
public MockResponse dispatch(RecordedRequest request) {
491-
if (request.getPath().equals("/resource")) {
491+
if (request.getTarget().equals("/resource")) {
492492
return switch (request.getMethod()) {
493493
case "HEAD" -> (this.withHeadSupport ?
494-
new MockResponse()
494+
new MockResponse.Builder()
495495
.addHeader("Content-Type", "text/plain")
496496
.addHeader("Content-Length", "6")
497-
.addHeader("Last-Modified", LAST_MODIFIED) :
498-
new MockResponse().setResponseCode(405));
499-
case "GET" -> new MockResponse()
497+
.addHeader("Last-Modified", LAST_MODIFIED)
498+
.build() :
499+
new MockResponse.Builder().code(405).build());
500+
case "GET" -> new MockResponse.Builder()
500501
.addHeader("Content-Type", "text/plain")
501502
.addHeader("Content-Length", "6")
502503
.addHeader("Last-Modified", LAST_MODIFIED)
503-
.setBody("Spring");
504-
default -> new MockResponse().setResponseCode(404);
504+
.body("Spring")
505+
.build();
506+
default -> new MockResponse.Builder().code(404).build();
505507
};
506508
}
507-
return new MockResponse().setResponseCode(404);
509+
return new MockResponse.Builder().code(404).build();
508510
}
509511
}
510512
}

spring-web/spring-web.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ dependencies {
8282
testImplementation("com.fasterxml.jackson.module:jackson-module-kotlin")
8383
testImplementation("com.fasterxml.jackson.module:jackson-module-parameter-names")
8484
testImplementation("com.fasterxml.jackson.dataformat:jackson-dataformat-csv")
85-
testImplementation("com.squareup.okhttp3:mockwebserver")
85+
testImplementation("com.squareup.okhttp3:mockwebserver3")
8686
testImplementation("io.micrometer:micrometer-observation-test")
8787
testImplementation("io.projectreactor:reactor-test")
8888
testImplementation("io.projectreactor.tools:blockhound")

spring-web/src/test/java/org/springframework/http/client/AbstractMockWebServerTests.java

Lines changed: 39 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616

1717
package org.springframework.http.client;
1818

19-
import okhttp3.mockwebserver.Dispatcher;
20-
import okhttp3.mockwebserver.MockResponse;
21-
import okhttp3.mockwebserver.MockWebServer;
22-
import okhttp3.mockwebserver.RecordedRequest;
19+
import mockwebserver3.Dispatcher;
20+
import mockwebserver3.MockResponse;
21+
import mockwebserver3.MockWebServer;
22+
import mockwebserver3.RecordedRequest;
2323
import org.junit.jupiter.api.AfterEach;
2424
import org.junit.jupiter.api.BeforeEach;
2525

@@ -49,8 +49,8 @@ void setUp() throws Exception {
4949
}
5050

5151
@AfterEach
52-
void tearDown() throws Exception {
53-
this.server.shutdown();
52+
void tearDown() {
53+
this.server.close();
5454
}
5555

5656

@@ -59,56 +59,57 @@ protected class TestDispatcher extends Dispatcher {
5959
@Override
6060
public MockResponse dispatch(RecordedRequest request) {
6161
try {
62-
if (request.getPath().equals("/echo")) {
63-
assertThat(request.getHeader("Host")).contains("localhost:" + port);
64-
MockResponse response = new MockResponse()
65-
.setHeaders(request.getHeaders())
66-
.setHeader("Content-Length", request.getBody().size())
67-
.setResponseCode(200)
68-
.setBody(request.getBody());
69-
request.getBody().flush();
70-
return response;
62+
if (request.getTarget().equals("/echo")) {
63+
assertThat(request.getHeaders().get("Host")).contains("localhost:" + port);
64+
MockResponse.Builder builder = new MockResponse.Builder().headers(request.getHeaders());
65+
if (request.getBody() != null) {
66+
builder = builder.body(request.getBody().utf8());
67+
}
68+
else {
69+
builder.setHeader("Content-Length", 0);
70+
}
71+
return builder.code(200).build();
7172
}
72-
else if(request.getPath().equals("/status/ok")) {
73-
return new MockResponse();
73+
else if(request.getTarget().equals("/status/ok")) {
74+
return new MockResponse.Builder().build();
7475
}
75-
else if(request.getPath().equals("/status/notfound")) {
76-
return new MockResponse().setResponseCode(404);
76+
else if(request.getTarget().equals("/status/notfound")) {
77+
return new MockResponse.Builder().code(404).build();
7778
}
78-
else if (request.getPath().equals("/status/299")) {
79-
assertThat(request.getHeader("Expect")).contains("299");
80-
return new MockResponse().setResponseCode(299);
79+
else if (request.getTarget().equals("/status/299")) {
80+
assertThat(request.getHeaders().get("Expect")).contains("299");
81+
return new MockResponse.Builder().code(299).build();
8182
}
82-
else if(request.getPath().startsWith("/params")) {
83-
assertThat(request.getPath()).contains("param1=value");
84-
assertThat(request.getPath()).contains("param2=value1&param2=value2");
85-
return new MockResponse();
83+
else if(request.getTarget().startsWith("/params")) {
84+
assertThat(request.getTarget()).contains("param1=value");
85+
assertThat(request.getTarget()).contains("param2=value1&param2=value2");
86+
return new MockResponse.Builder().build();
8687
}
87-
else if(request.getPath().equals("/methods/post")) {
88+
else if(request.getTarget().equals("/methods/post")) {
8889
assertThat(request.getMethod()).isEqualTo("POST");
89-
String transferEncoding = request.getHeader("Transfer-Encoding");
90+
String transferEncoding = request.getHeaders().get("Transfer-Encoding");
9091
if(StringUtils.hasLength(transferEncoding)) {
9192
assertThat(transferEncoding).isEqualTo("chunked");
9293
}
9394
else {
94-
long contentLength = Long.parseLong(request.getHeader("Content-Length"));
95+
long contentLength = Long.parseLong(request.getHeaders().get("Content-Length"));
9596
assertThat(request.getBody().size()).isEqualTo(contentLength);
9697
}
97-
return new MockResponse().setResponseCode(200);
98+
return new MockResponse.Builder().code(200).build();
9899
}
99-
else if(request.getPath().startsWith("/methods/")) {
100-
String expectedMethod = request.getPath().replace("/methods/","").toUpperCase();
100+
else if(request.getTarget().startsWith("/methods/")) {
101+
String expectedMethod = request.getTarget().replace("/methods/","").toUpperCase();
101102
assertThat(request.getMethod()).isEqualTo(expectedMethod);
102-
return new MockResponse();
103+
return new MockResponse.Builder().build();
103104
}
104-
else if(request.getPath().startsWith("/header/")) {
105-
String headerName = request.getPath().replace("/header/","");
106-
return new MockResponse().setBody(headerName + ":" + request.getHeader(headerName)).setResponseCode(200);
105+
else if(request.getTarget().startsWith("/header/")) {
106+
String headerName = request.getTarget().replace("/header/","");
107+
return new MockResponse.Builder().body(headerName + ":" + request.getHeaders().get(headerName)).code(200).build();
107108
}
108-
return new MockResponse().setResponseCode(404);
109+
return new MockResponse.Builder().code(404).build();
109110
}
110111
catch (Throwable ex) {
111-
return new MockResponse().setResponseCode(500).setBody(ex.toString());
112+
return new MockResponse.Builder().code(500).body(ex.toString()).build();
112113
}
113114
}
114115
}

spring-web/src/test/java/org/springframework/http/client/reactive/ClientHttpConnectorTests.java

Lines changed: 26 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,11 @@
3434
import java.util.Set;
3535
import java.util.concurrent.CountDownLatch;
3636
import java.util.function.Consumer;
37+
import java.util.function.Function;
3738

38-
import okhttp3.mockwebserver.MockResponse;
39-
import okhttp3.mockwebserver.MockWebServer;
40-
import okhttp3.mockwebserver.RecordedRequest;
39+
import mockwebserver3.MockResponse;
40+
import mockwebserver3.MockWebServer;
41+
import mockwebserver3.RecordedRequest;
4142
import okio.Buffer;
4243
import org.apache.hc.client5.http.impl.async.HttpAsyncClientBuilder;
4344
import org.junit.jupiter.api.AfterEach;
@@ -84,8 +85,8 @@ void startServer() throws IOException {
8485
}
8586

8687
@AfterEach
87-
void stopServer() throws IOException {
88-
server.shutdown();
88+
void stopServer() {
89+
server.close();
8990
}
9091

9192
// Do not auto-close arguments since HttpComponentsClientHttpConnector implements
@@ -96,11 +97,10 @@ void basic(ClientHttpConnector connector, HttpMethod method) throws Exception {
9697
URI uri = this.server.url("/").uri();
9798

9899
String responseBody = "bar\r\n";
99-
prepareResponse(response -> {
100-
response.setResponseCode(200);
101-
response.addHeader("Baz", "Qux");
102-
response.setBody(responseBody);
103-
});
100+
prepareResponse(builder -> builder
101+
.code(200)
102+
.addHeader("Baz", "Qux")
103+
.body(responseBody));
104104

105105
String requestBody = "foo\r\n";
106106
boolean requestHasBody = METHODS_WITH_BODY.contains(method);
@@ -144,9 +144,9 @@ void basic(ClientHttpConnector connector, HttpMethod method) throws Exception {
144144

145145
expectRequest(request -> {
146146
assertThat(request.getMethod()).isEqualTo(method.name());
147-
assertThat(request.getHeader("Foo")).isEqualTo("Bar");
147+
assertThat(request.getHeaders().get("Foo")).isEqualTo("Bar");
148148
if (requestHasBody) {
149-
assertThat(request.getBody().readUtf8()).isEqualTo(requestBody);
149+
assertThat(request.getBody().utf8()).isEqualTo(requestBody);
150150
}
151151
});
152152
}
@@ -158,7 +158,7 @@ void errorInRequestBody(ClientHttpConnector connector) {
158158
stringBuffer("foo"),
159159
Mono.error(error)
160160
);
161-
prepareResponse(response -> response.setResponseCode(200));
161+
prepareResponse(builder -> builder.code(200));
162162
Mono<ClientHttpResponse> futureResponse =
163163
connector.connect(HttpMethod.POST, this.server.url("/").uri(), request -> request.writeWith(body));
164164
StepVerifier.create(futureResponse)
@@ -169,7 +169,7 @@ void errorInRequestBody(ClientHttpConnector connector) {
169169
@ParameterizedConnectorTest
170170
void cancelResponseBody(ClientHttpConnector connector) {
171171
Buffer responseBody = randomBody(100);
172-
prepareResponse(response -> response.setBody(responseBody));
172+
prepareResponse(builder -> builder.body(responseBody));
173173

174174
ClientHttpResponse response = connector.connect(HttpMethod.POST, this.server.url("/").uri(),
175175
ReactiveHttpOutputMessage::setComplete).block();
@@ -187,10 +187,9 @@ void cookieExpireValueSetAsMaxAge(ClientHttpConnector connector) {
187187
ZonedDateTime tomorrow = ZonedDateTime.now(ZoneId.of("UTC")).plusDays(1);
188188
String formattedDate = tomorrow.format(DateTimeFormatter.RFC_1123_DATE_TIME);
189189

190-
prepareResponse(response -> {
191-
response.setResponseCode(200);
192-
response.addHeader("Set-Cookie", "id=test; Expires= " + formattedDate + ";");
193-
});
190+
prepareResponse(builder -> builder
191+
.code(200)
192+
.addHeader("Set-Cookie", "id=test; Expires= " + formattedDate + ";"));
194193
Mono<ClientHttpResponse> futureResponse =
195194
connector.connect(HttpMethod.GET, this.server.url("/").uri(), ReactiveHttpOutputMessage::setComplete);
196195
StepVerifier.create(futureResponse)
@@ -206,10 +205,9 @@ void cookieExpireValueSetAsMaxAge(ClientHttpConnector connector) {
206205
void partitionedCookieSupport(ClientHttpConnector connector) {
207206
Assumptions.assumeFalse(connector instanceof JettyClientHttpConnector, "Jetty client does not support partitioned cookies");
208207
Assumptions.assumeFalse(connector instanceof JdkClientHttpConnector, "JDK client does not support partitioned cookies");
209-
prepareResponse(response -> {
210-
response.setResponseCode(200);
211-
response.addHeader("Set-Cookie", "id=test; Partitioned;");
212-
});
208+
prepareResponse(builder -> builder
209+
.code(200)
210+
.addHeader("Set-Cookie", "id=test; Partitioned;"));
213211
Mono<ClientHttpResponse> futureResponse =
214212
connector.connect(HttpMethod.GET, this.server.url("/").uri(), ReactiveHttpOutputMessage::setComplete);
215213
StepVerifier.create(futureResponse)
@@ -227,10 +225,9 @@ void disableCookieWithHttpComponents() {
227225
HttpAsyncClientBuilder.create().disableCookieManagement().build()
228226
);
229227

230-
prepareResponse(response -> {
231-
response.setResponseCode(200);
232-
response.addHeader("Set-Cookie", "id=test;");
233-
});
228+
prepareResponse(builder -> builder
229+
.code(200)
230+
.addHeader("Set-Cookie", "id=test;"));
234231
Mono<ClientHttpResponse> futureResponse =
235232
connector.connect(HttpMethod.GET, this.server.url("/").uri(), ReactiveHttpOutputMessage::setComplete);
236233
StepVerifier.create(futureResponse)
@@ -254,10 +251,9 @@ private Buffer randomBody(int size) {
254251
return responseBody;
255252
}
256253

257-
private void prepareResponse(Consumer<MockResponse> consumer) {
258-
MockResponse response = new MockResponse();
259-
consumer.accept(response);
260-
this.server.enqueue(response);
254+
private void prepareResponse(Function<MockResponse.Builder, MockResponse.Builder> f) {
255+
MockResponse.Builder builder = new MockResponse.Builder();
256+
this.server.enqueue(f.apply(builder).build());
261257
}
262258

263259
private void expectRequest(Consumer<RecordedRequest> consumer) {

0 commit comments

Comments
 (0)