Skip to content

Commit 438cd59

Browse files
Update MockWebServer to MockWebServer3
* Updated `MockWebServer` package with new package which does not target a specific JUnit version. * Updated associated `OkHttp`. * Fixed package imports. * Replaced `MockWebServer.shutdown()` with `MockWebService.close()` as shutdown has now been deprecated. * Used `MockResponse.Builder()` to construct responses instead as the way of constructing responses has changed. * Replace `MockResponses` using `SocketPolicy`, as this is no longer possible, with a MockResponse with large timeout to do the same thing.
1 parent 5fd06e8 commit 438cd59

File tree

3 files changed

+55
-51
lines changed

3 files changed

+55
-51
lines changed

service/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ dependencies {
7171
testImplementation 'org.testcontainers:junit-jupiter:1.21.3'
7272
testImplementation 'org.awaitility:awaitility:4.3.0'
7373
testImplementation 'org.wiremock:wiremock-standalone:3.13.1'
74-
testImplementation 'com.squareup.okhttp3:okhttp:4.12.0'
75-
testImplementation 'com.squareup.okhttp3:mockwebserver:4.12.0'
74+
testImplementation 'com.squareup.okhttp3:okhttp:5.1.0'
75+
testImplementation 'com.squareup.okhttp3:mockwebserver3:5.1.0'
7676
testImplementation 'com.adobe.testing:s3mock-testcontainers:4.7.0'
7777

7878

service/src/intTest/java/uk/nhs/adaptors/gp2gp/gpc/GpcWebClientTest.java

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,12 @@
1313
import java.util.ArrayList;
1414
import java.util.Collection;
1515
import java.util.Objects;
16+
import java.util.concurrent.TimeUnit;
1617
import java.util.concurrent.TimeoutException;
1718

19+
import mockwebserver3.MockResponse;
20+
import mockwebserver3.MockWebServer;
21+
1822
import org.junit.jupiter.api.AfterEach;
1923
import org.junit.jupiter.api.BeforeEach;
2024
import org.junit.jupiter.api.Test;
@@ -27,9 +31,6 @@
2731
import org.springframework.test.context.bean.override.mockito.MockitoSpyBean;
2832
import org.springframework.test.context.junit.jupiter.SpringExtension;
2933

30-
import okhttp3.mockwebserver.MockResponse;
31-
import okhttp3.mockwebserver.MockWebServer;
32-
import okhttp3.mockwebserver.SocketPolicy;
3334
import uk.nhs.adaptors.gp2gp.common.exception.RetryLimitReachedException;
3435
import uk.nhs.adaptors.gp2gp.gpc.builder.GpcTokenBuilder;
3536
import uk.nhs.adaptors.gp2gp.gpc.configuration.GpcConfiguration;
@@ -69,33 +70,30 @@ public class GpcWebClientTest {
6970
private GpcClient gpcWebClient;
7071

7172
private static MockResponse initialiseOKResponse() {
72-
MockResponse response = new MockResponse();
73-
response.setResponseCode(OK.value())
74-
.setBody(TEST_BODY);
75-
76-
return response;
73+
return new MockResponse.Builder()
74+
.code(OK.value())
75+
.body(TEST_BODY)
76+
.build();
7777
}
7878

7979
private static MockResponse initialise500Response() {
80-
MockResponse response = new MockResponse();
81-
response.setResponseCode(INTERNAL_SERVER_ERROR.value());
82-
response.setBody(TEST_BODY);
83-
84-
return response;
80+
return new MockResponse.Builder()
81+
.code(INTERNAL_SERVER_ERROR.value())
82+
.body(TEST_BODY)
83+
.build();
8584
}
8685

8786
private static MockResponse initialise500ResponseNoBody() {
88-
MockResponse response = new MockResponse();
89-
response.setResponseCode(INTERNAL_SERVER_ERROR.value());
90-
91-
return response;
87+
return new MockResponse.Builder()
88+
.code(INTERNAL_SERVER_ERROR.value())
89+
.build();
9290
}
9391

9492
private static MockResponse initialiseNoResponse() {
95-
MockResponse response = new MockResponse();
96-
response.setSocketPolicy(SocketPolicy.NO_RESPONSE);
97-
98-
return response;
93+
return new MockResponse.Builder()
94+
.bodyDelay(1, TimeUnit.HOURS)
95+
.headersDelay(1, TimeUnit.HOURS)
96+
.build();
9997
}
10098

10199
@BeforeEach
@@ -107,8 +105,8 @@ public void initialise() throws IOException {
107105
}
108106

109107
@AfterEach
110-
public void tearDown() throws IOException {
111-
mockWebServer.shutdown();
108+
public void tearDown() {
109+
mockWebServer.close();
112110
}
113111

114112
@Test
@@ -254,7 +252,7 @@ void When_GetStructuredRecord_With_HttpStatus200_Expect_AuthorizationHeaderToBeP
254252
gpcWebClient.getStructuredRecord(taskDefinition);
255253
tokens.add(Objects.requireNonNull(mockWebServer
256254
.takeRequest()
257-
.getHeader(HttpHeaders.AUTHORIZATION))); // Add token from Authorisation header (WebClient call).
255+
.getHeaders().get(HttpHeaders.AUTHORIZATION))); // Add token from Authorisation header (WebClient call).
258256

259257
// then
260258
final long distinctTokens = tokens.stream().distinct().count();

service/src/intTest/java/uk/nhs/adaptors/gp2gp/mhs/MhsWebClientTest.java

Lines changed: 31 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,12 @@
88
import static org.springframework.http.HttpStatus.NOT_FOUND;
99

1010
import java.io.IOException;
11+
import java.util.concurrent.TimeUnit;
1112
import java.util.concurrent.TimeoutException;
1213
import java.util.stream.Stream;
1314

15+
import mockwebserver3.MockResponse;
16+
import mockwebserver3.MockWebServer;
1417
import org.junit.jupiter.api.AfterEach;
1518
import org.junit.jupiter.api.BeforeEach;
1619
import org.junit.jupiter.api.Test;
@@ -25,9 +28,6 @@
2528
import org.springframework.test.context.bean.override.mockito.MockitoSpyBean;
2629
import org.springframework.test.context.junit.jupiter.SpringExtension;
2730

28-
import okhttp3.mockwebserver.MockResponse;
29-
import okhttp3.mockwebserver.MockWebServer;
30-
import okhttp3.mockwebserver.SocketPolicy;
3131
import uk.nhs.adaptors.gp2gp.common.exception.MaximumExternalAttachmentsException;
3232
import uk.nhs.adaptors.gp2gp.common.exception.RetryLimitReachedException;
3333
import uk.nhs.adaptors.gp2gp.mhs.configuration.MhsConfiguration;
@@ -83,18 +83,18 @@ public void initialise() throws IOException {
8383
}
8484

8585
@AfterEach
86-
public void tearDown() throws IOException {
87-
mockWebServer.shutdown();
86+
public void tearDown() {
87+
mockWebServer.close();
8888
}
8989

9090
@ParameterizedTest
9191
@MethodSource("maxAttachmentsValidationErrors")
9292
public void When_SendMessageToMHS_With_HttpStatus400AndMaxExternalAttachments_Expect_CorrectException(String body) {
93-
MockResponse response = new MockResponse();
94-
response
95-
.addHeader("Content-Type", "text/plain")
96-
.setResponseCode(BAD_REQUEST.value())
97-
.setBody(body);
93+
var response = new MockResponse.Builder()
94+
.code(BAD_REQUEST.value())
95+
.addHeader("Content-Type", "application/json")
96+
.body(body)
97+
.build();
9898

9999
mockWebServer.enqueue(response);
100100

@@ -108,11 +108,11 @@ public void When_SendMessageToMHS_With_HttpStatus400AndMaxExternalAttachments_Ex
108108
@ParameterizedTest
109109
@MethodSource("otherValidationErrors")
110110
public void When_SendMessageToMHS_With_HttpStatus400AndOtherValidationErrors_Expect_CorrectException(String body) {
111-
MockResponse response = new MockResponse();
112-
response
111+
var response = new MockResponse.Builder()
112+
.code(BAD_REQUEST.value())
113113
.addHeader("Content-Type", "text/plain")
114-
.setResponseCode(BAD_REQUEST.value())
115-
.setBody(body);
114+
.body(body)
115+
.build();
116116

117117
mockWebServer.enqueue(response);
118118

@@ -126,9 +126,9 @@ public void When_SendMessageToMHS_With_HttpStatus400AndOtherValidationErrors_Exp
126126

127127
@Test
128128
public void When_SendMessageToMHS_With_HttpStatus404_Expect_IllegalStateException() {
129-
MockResponse response = new MockResponse();
130-
response
131-
.setResponseCode(NOT_FOUND.value());
129+
var response = new MockResponse.Builder()
130+
.code(NOT_FOUND.value())
131+
.build();
132132

133133
mockWebServer.enqueue(response);
134134

@@ -141,8 +141,10 @@ public void When_SendMessageToMHS_With_HttpStatus404_Expect_IllegalStateExceptio
141141

142142
@Test
143143
public void When_SendMessageToMHS_With_NoResponse_Expect_RetryExceptionWithTimeoutRootCause() {
144-
MockResponse response = new MockResponse();
145-
response.setSocketPolicy(SocketPolicy.NO_RESPONSE);
144+
var response = new MockResponse.Builder()
145+
.bodyDelay(1, TimeUnit.HOURS)
146+
.headersDelay(1, TimeUnit.HOURS)
147+
.build();
146148

147149
for (int i = 0; i < FOUR; i++) {
148150
mockWebServer.enqueue(response);
@@ -163,10 +165,13 @@ public void When_SendMessageToMHS_With_NoResponse_Expect_RetryExceptionWithTimeo
163165

164166
@Test
165167
public void When_SendMessageToMHS_With_ResponseOn404SecondAttempt_Expect_RetryBeforeIllegalStateException() {
166-
MockResponse response1 = new MockResponse();
167-
response1.setSocketPolicy(SocketPolicy.NO_RESPONSE);
168-
MockResponse response2 = new MockResponse();
169-
response2.setResponseCode(NOT_FOUND.value());
168+
var response1 = new MockResponse.Builder()
169+
.bodyDelay(1, TimeUnit.HOURS)
170+
.headersDelay(1, TimeUnit.HOURS)
171+
.build();
172+
var response2 = new MockResponse.Builder()
173+
.code(NOT_FOUND.value())
174+
.build();
170175

171176
mockWebServer.enqueue(response1);
172177
mockWebServer.enqueue(response2);
@@ -182,8 +187,9 @@ public void When_SendMessageToMHS_With_ResponseOn404SecondAttempt_Expect_RetryBe
182187

183188
@Test
184189
public void When_SendMessageToMHS_With_HttpStatus5xx_Expect_RetryExceptionWithMhsServerErrorRootCause() {
185-
MockResponse response = new MockResponse();
186-
response.setResponseCode(INTERNAL_SERVER_ERROR.value());
190+
var response = new MockResponse.Builder()
191+
.code(INTERNAL_SERVER_ERROR.value())
192+
.build();
187193

188194
for (int i = 0; i < FOUR; i++) {
189195
mockWebServer.enqueue(response);

0 commit comments

Comments
 (0)