Skip to content

Commit ddb6753

Browse files
NIAD-3351: Replace obsolete @MockBean and @SpyBean (#313)
* Replace @MockBean with @MockitoBean. * Replace @SpyBean with @MockitoSpyBean * The `@MockitoSpyBean` being used in some test files are not being used as spys and causing issues with tests as unable to wrap the bean. The have been replaced these with `@MockitoBean` and tests now run as expected.
1 parent de5e021 commit ddb6753

File tree

10 files changed

+36
-46
lines changed

10 files changed

+36
-46
lines changed

src/intTest/java/uk/nhs/digital/nhsconnect/nhais/inbound/DeadLetterQueueTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import com.fasterxml.jackson.databind.ObjectMapper;
44
import org.junit.jupiter.api.Test;
55
import org.springframework.beans.factory.annotation.Autowired;
6-
import org.springframework.boot.test.mock.mockito.SpyBean;
76
import org.springframework.test.annotation.DirtiesContext;
7+
import org.springframework.test.context.bean.override.mockito.MockitoSpyBean;
88
import uk.nhs.digital.nhsconnect.nhais.IntegrationBaseTest;
99
import uk.nhs.digital.nhsconnect.nhais.mesh.http.MeshClient;
1010
import uk.nhs.digital.nhsconnect.nhais.mesh.message.OutboundMeshMessage;
@@ -27,10 +27,10 @@ public class DeadLetterQueueTest extends IntegrationBaseTest {
2727
@Autowired
2828
private OutboundQueueService outboundQueueService;
2929

30-
@SpyBean
30+
@MockitoSpyBean
3131
private MeshClient meshClient;
3232

33-
@SpyBean
33+
@MockitoSpyBean
3434
private ConversationIdService conversationIdService;
3535

3636
@Autowired

src/intTest/java/uk/nhs/digital/nhsconnect/nhais/inbound/InboundMeshQueueMultiTransactionTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
import org.skyscreamer.jsonassert.JSONAssert;
88
import org.skyscreamer.jsonassert.JSONCompareMode;
99
import org.springframework.beans.factory.annotation.Value;
10-
import org.springframework.boot.test.mock.mockito.MockBean;
1110
import org.springframework.core.io.Resource;
1211
import org.springframework.test.annotation.DirtiesContext;
12+
import org.springframework.test.context.bean.override.mockito.MockitoBean;
1313
import uk.nhs.digital.nhsconnect.nhais.IntegrationBaseTest;
1414
import uk.nhs.digital.nhsconnect.nhais.inbound.state.InboundState;
1515
import uk.nhs.digital.nhsconnect.nhais.mesh.message.MeshMessage;
@@ -81,7 +81,7 @@ public class InboundMeshQueueMultiTransactionTest extends IntegrationBaseTest {
8181
private static final String ISO_GENERATED_TIMESTAMP = new TimestampService()
8282
.formatInISO(GENERATED_TIMESTAMP);
8383

84-
@MockBean
84+
@MockitoBean
8585
private TimestampService timestampService;
8686

8787
@Value("classpath:edifact/multi_transaction.1.dat")

src/intTest/java/uk/nhs/digital/nhsconnect/nhais/inbound/InboundMeshQueueRecepTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
import org.junit.jupiter.api.BeforeEach;
66
import org.junit.jupiter.api.Test;
77
import org.springframework.beans.factory.annotation.Value;
8-
import org.springframework.boot.test.mock.mockito.MockBean;
98
import org.springframework.core.io.Resource;
109
import org.springframework.test.annotation.DirtiesContext;
10+
import org.springframework.test.context.bean.override.mockito.MockitoBean;
1111
import uk.nhs.digital.nhsconnect.nhais.IntegrationBaseTest;
1212
import uk.nhs.digital.nhsconnect.nhais.inbound.state.InboundState;
1313
import uk.nhs.digital.nhsconnect.nhais.mesh.message.MeshMessage;
@@ -50,10 +50,10 @@ public class InboundMeshQueueRecepTest extends IntegrationBaseTest {
5050
@Value("classpath:edifact/recep.dat")
5151
private Resource recep;
5252

53-
@MockBean
53+
@MockitoBean
5454
private TimestampService timestampService;
5555

56-
@MockBean
56+
@MockitoBean
5757
private ConversationIdService conversationIdService;
5858

5959
@BeforeEach

src/intTest/java/uk/nhs/digital/nhsconnect/nhais/inbound/InboundMeshQueueRegistrationTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
import org.skyscreamer.jsonassert.JSONAssert;
88
import org.skyscreamer.jsonassert.JSONCompareMode;
99
import org.springframework.beans.factory.annotation.Value;
10-
import org.springframework.boot.test.mock.mockito.MockBean;
1110
import org.springframework.core.io.Resource;
1211
import org.springframework.test.annotation.DirtiesContext;
12+
import org.springframework.test.context.bean.override.mockito.MockitoBean;
1313
import uk.nhs.digital.nhsconnect.nhais.IntegrationBaseTest;
1414
import uk.nhs.digital.nhsconnect.nhais.inbound.state.InboundState;
1515
import uk.nhs.digital.nhsconnect.nhais.mesh.message.MeshMessage;
@@ -51,7 +51,7 @@ public class InboundMeshQueueRegistrationTest extends IntegrationBaseTest {
5151
private static final String ISO_GENERATED_TIMESTAMP = new TimestampService()
5252
.formatInISO(GENERATED_TIMESTAMP);
5353

54-
@MockBean
54+
@MockitoBean
5555
private TimestampService timestampService;
5656
@Value("classpath:edifact/registration.dat")
5757
private Resource interchange;

src/intTest/java/uk/nhs/digital/nhsconnect/nhais/outbound/OutboundUserAcceptanceTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
import org.junit.jupiter.params.provider.ArgumentsSource;
77
import org.springframework.beans.factory.annotation.Autowired;
88
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
9-
import org.springframework.boot.test.mock.mockito.SpyBean;
109
import org.springframework.test.annotation.DirtiesContext;
10+
import org.springframework.test.context.bean.override.mockito.MockitoSpyBean;
1111
import org.springframework.test.web.servlet.MockMvc;
1212
import org.springframework.test.web.servlet.MvcResult;
1313
import uk.nhs.digital.nhsconnect.nhais.IntegrationBaseTest;
@@ -48,7 +48,7 @@ public class OutboundUserAcceptanceTest extends IntegrationBaseTest {
4848
@Autowired
4949
private MockMvc mockMvc;
5050

51-
@SpyBean
51+
@MockitoSpyBean
5252
private TimestampService timestampService;
5353

5454
private String conversationId;

src/main/java/uk/nhs/digital/nhsconnect/nhais/configuration/ConversationIdFilterConfig.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,8 @@
99
public class ConversationIdFilterConfig {
1010

1111
@Bean
12-
public FilterRegistrationBean<ConversationIdFilter> servletRegistrationBean() {
12+
public FilterRegistrationBean<ConversationIdFilter> servletRegistrationBean(ConversationIdFilter conversationIdFilter) {
1313
final FilterRegistrationBean<ConversationIdFilter> registrationBean = new FilterRegistrationBean<>();
14-
final ConversationIdFilter conversationIdFilter = new ConversationIdFilter();
1514
registrationBean.setFilter(conversationIdFilter);
1615
registrationBean.setOrder(2);
1716
return registrationBean;

src/main/java/uk/nhs/digital/nhsconnect/nhais/outbound/ConversationIdFilter.java

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,10 @@
44
import lombok.EqualsAndHashCode;
55
import org.springframework.stereotype.Component;
66
import org.springframework.util.StringUtils;
7-
import org.springframework.web.context.WebApplicationContext;
8-
import org.springframework.web.context.support.WebApplicationContextUtils;
97
import org.springframework.web.filter.OncePerRequestFilter;
108
import uk.nhs.digital.nhsconnect.nhais.utils.ConversationIdService;
119

1210
import jakarta.servlet.FilterChain;
13-
import jakarta.servlet.ServletContext;
1411
import jakarta.servlet.ServletException;
1512
import jakarta.servlet.http.HttpServletRequest;
1613
import jakarta.servlet.http.HttpServletResponse;
@@ -22,12 +19,15 @@ public class ConversationIdFilter extends OncePerRequestFilter {
2219

2320
static final String HEADER_NAME = "ConversationId";
2421

25-
private ConversationIdService conversationIdService;
22+
private final ConversationIdService conversationIdService;
23+
24+
public ConversationIdFilter(ConversationIdService conversationIdService) {
25+
this.conversationIdService = conversationIdService;
26+
}
2627

2728
@Override
2829
protected void doFilterInternal(final HttpServletRequest request, final HttpServletResponse response, final FilterChain chain)
2930
throws java.io.IOException, ServletException {
30-
lazyInitialize(request);
3131
try {
3232
var token = request.getHeader(HEADER_NAME);
3333
if (StringUtils.isEmpty(token)) {
@@ -41,12 +41,4 @@ protected void doFilterInternal(final HttpServletRequest request, final HttpServ
4141
conversationIdService.resetConversationId();
4242
}
4343
}
44-
45-
private void lazyInitialize(HttpServletRequest request) {
46-
if (conversationIdService == null) {
47-
ServletContext servletContext = request.getServletContext();
48-
WebApplicationContext webApplicationContext = WebApplicationContextUtils.getWebApplicationContext(servletContext);
49-
this.conversationIdService = webApplicationContext.getBean(ConversationIdService.class);
50-
}
51-
}
5244
}

src/test/java/uk/nhs/digital/nhsconnect/nhais/outbound/controller/AmendmentControllerTest.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,8 @@
66
import org.springframework.beans.factory.annotation.Autowired;
77
import org.springframework.beans.factory.annotation.Value;
88
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
9-
import org.springframework.boot.test.mock.mockito.MockBean;
10-
import org.springframework.boot.test.mock.mockito.SpyBean;
119
import org.springframework.core.io.Resource;
10+
import org.springframework.test.context.bean.override.mockito.MockitoBean;
1211
import org.springframework.test.context.junit.jupiter.SpringExtension;
1312
import org.springframework.test.web.servlet.MockMvc;
1413
import org.testcontainers.shaded.com.fasterxml.jackson.databind.ObjectMapper;
@@ -41,19 +40,19 @@ public class AmendmentControllerTest {
4140
@Autowired
4241
private MockMvc mockMvc;
4342

44-
@MockBean
43+
@MockitoBean
4544
private JsonPatchToEdifactService jsonPatchToEdifactService;
4645

47-
@MockBean
46+
@MockitoBean
4847
private OutboundQueueService outboundQueueService;
4948

50-
@MockBean
49+
@MockitoBean
5150
private ObjectMapper objectMapper;
5251

53-
@SpyBean
52+
@MockitoBean
5453
private ConversationIdService conversationIdService;
5554

56-
@MockBean
55+
@MockitoBean
5756
private FhirParser fhirParser;
5857

5958
@Value("classpath:/amendment/amendment.json")

src/test/java/uk/nhs/digital/nhsconnect/nhais/outbound/controller/ConversationIdHeadersTest.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77
import org.junit.jupiter.api.extension.ExtendWith;
88
import org.springframework.beans.factory.annotation.Autowired;
99
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
10-
import org.springframework.boot.test.mock.mockito.MockBean;
11-
import org.springframework.boot.test.mock.mockito.SpyBean;
10+
import org.springframework.test.context.bean.override.mockito.MockitoBean;
1211
import org.springframework.test.context.junit.jupiter.SpringExtension;
1312
import org.springframework.test.web.servlet.MockMvc;
1413
import uk.nhs.digital.nhsconnect.nhais.outbound.OutboundQueueService;
@@ -17,6 +16,7 @@
1716
import uk.nhs.digital.nhsconnect.nhais.outbound.fhir.FhirToEdifactService;
1817
import uk.nhs.digital.nhsconnect.nhais.utils.ConversationIdService;
1918

19+
import static org.mockito.Mockito.when;
2020
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
2121
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.header;
2222
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@@ -29,16 +29,16 @@ public class ConversationIdHeadersTest {
2929
@Autowired
3030
private MockMvc mockMvc;
3131

32-
@MockBean
32+
@MockitoBean
3333
private FhirParser fhirParser;
3434

35-
@MockBean
35+
@MockitoBean
3636
private OutboundQueueService outboundQueueService;
3737

38-
@MockBean
38+
@MockitoBean
3939
private FhirToEdifactService fhirToEdifactService;
4040

41-
@SpyBean
41+
@MockitoBean
4242
private ConversationIdService conversationIdService;
4343

4444
@Test
@@ -53,6 +53,7 @@ void When_ConversationIdInRequestHeader_Expect_ProvidedIdIsUsed() throws Excepti
5353

5454
@Test
5555
void When_ConversationNotIdInRequestHeader_Expect_GeneratedIdIsUsed() throws Exception {
56+
when(conversationIdService.applyRandomConversationId()).thenCallRealMethod();
5657
mockMvc.perform(post("/fhir/Patient/$nhais.acceptance")
5758
.contentType("text/plain")
5859
.content("qwe"))

src/test/java/uk/nhs/digital/nhsconnect/nhais/outbound/controller/FhirControllerTest.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,9 @@
1010
import org.springframework.beans.factory.annotation.Autowired;
1111
import org.springframework.beans.factory.annotation.Value;
1212
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
13-
import org.springframework.boot.test.mock.mockito.MockBean;
14-
import org.springframework.boot.test.mock.mockito.SpyBean;
1513
import org.springframework.core.io.Resource;
1614
import org.springframework.http.HttpStatus;
15+
import org.springframework.test.context.bean.override.mockito.MockitoBean;
1716
import org.springframework.test.context.junit.jupiter.SpringExtension;
1817
import org.springframework.test.web.servlet.MockMvc;
1918
import uk.nhs.digital.nhsconnect.nhais.mesh.message.MeshMessage;
@@ -53,16 +52,16 @@ public class FhirControllerTest {
5352
@Value("classpath:/patient/parameters.json")
5453
private Resource paramsPayload;
5554

56-
@MockBean
55+
@MockitoBean
5756
private OutboundQueueService outboundQueueService;
5857

59-
@MockBean
58+
@MockitoBean
6059
private FhirToEdifactService fhirToEdifactService;
6160

62-
@MockBean
61+
@MockitoBean
6362
private FhirParser fhirParser;
6463

65-
@SpyBean
64+
@MockitoBean
6665
private ConversationIdService conversationIdService;
6766

6867
@Test

0 commit comments

Comments
 (0)