From 09d0e9684ce4a1e281594d82eb4616f3beaaa50d Mon Sep 17 00:00:00 2001 From: Tom Wetjens Date: Tue, 9 Dec 2025 16:20:59 +0100 Subject: [PATCH] Upgrade to Spring Boot 4 Signed-off-by: Tom Wetjens --- CHANGELOG.md | 12 ++++++ spring/pom.xml | 19 +++------- .../ShapeshifterSpringIntegrationTest.java | 37 +++++++++++-------- 3 files changed, 39 insertions(+), 29 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e0e2cf..02e3427 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,18 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## 3.2.3 +### Changed +- Upgrade to Spring Boot 4 + +## 3.2.2 +### Changed +- Remove default from "Unsolicited" attribute in XSD to be backwards compatible with V3.0.0 + +## 3.2.1 +### Changed +- Fix XSDs for V3.1.0 + ## 3.2.0 ### Changed diff --git a/spring/pom.xml b/spring/pom.xml index 9250829..10c5711 100644 --- a/spring/pom.xml +++ b/spring/pom.xml @@ -16,7 +16,7 @@ https://www.lfenergy.org/projects/shapeshifter/ - 3.5.8 + 4.0.0 2.2.41 @@ -45,17 +45,6 @@ ${project.version} - - org.springframework.boot - spring-boot-starter-web - - - - org.yaml - snakeyaml - - - org.springframework.boot spring-boot-autoconfigure @@ -84,12 +73,16 @@ ${swagger-annotations.version} provided - org.springframework.boot spring-boot-starter-test test + + org.springframework.boot + spring-boot-starter-webmvc-test + test + org.junit.jupiter junit-jupiter diff --git a/spring/src/test/java/org/lfenergy/shapeshifter/spring/ShapeshifterSpringIntegrationTest.java b/spring/src/test/java/org/lfenergy/shapeshifter/spring/ShapeshifterSpringIntegrationTest.java index e2fa4cd..1f3465a 100644 --- a/spring/src/test/java/org/lfenergy/shapeshifter/spring/ShapeshifterSpringIntegrationTest.java +++ b/spring/src/test/java/org/lfenergy/shapeshifter/spring/ShapeshifterSpringIntegrationTest.java @@ -6,6 +6,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.lfenergy.shapeshifter.api.*; import org.lfenergy.shapeshifter.api.model.UftpParticipantInformation; import org.lfenergy.shapeshifter.core.model.IncomingUftpMessage; @@ -24,12 +25,13 @@ import org.lfenergy.shapeshifter.spring.service.receiving.UftpInternalController; import org.mockito.ArgumentCaptor; import org.mockito.Captor; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; -import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest; import org.springframework.context.annotation.Configuration; import org.springframework.http.MediaType; import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.test.web.servlet.MockMvc; import java.time.Duration; @@ -44,13 +46,13 @@ import static org.lfenergy.shapeshifter.api.USEFRoleType.DSO; import static org.mockito.ArgumentMatchers.any; import static org.mockito.BDDMockito.given; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoInteractions; +import static org.mockito.Mockito.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @WebMvcTest(controllers = UftpInternalController.class) @ContextConfiguration(classes = TestConfig.class) +@ExtendWith(MockitoExtension.class) class ShapeshifterSpringIntegrationTest { private static final String APPLICATION_ENDPOINT_PATH = "/shapeshifter/api/v3/message"; @@ -76,23 +78,23 @@ class ShapeshifterSpringIntegrationTest { static class TestConfig { } - @MockBean + @MockitoBean private UftpParticipantService uftpParticipantService; - @MockBean + @MockitoBean private UftpValidatorSupport uftpValidatorSupport; - @MockBean + @MockitoBean private ParticipantSupport participantSupport; - @MockBean + @MockitoBean private UftpMessageSupport uftpMessageSupport; - @MockBean + @MockitoBean private ContractSupport contractSupport; - @MockBean + @MockitoBean private CongestionPointSupport congestionPointSupport; - @MockBean + @MockitoBean private UftpIncomingHandler uftpIncomingHandler; - @MockBean + @MockitoBean private UftpOutgoingHandler uftpOutgoingHandler; - @MockBean + @MockitoBean private UftpErrorProcessor uftpErrorProcessor; @Autowired @@ -114,6 +116,9 @@ static class TestConfig { void setUp() { given(uftpIncomingHandler.isSupported(any())).willReturn(true); given(uftpOutgoingHandler.isSupported(any())).willReturn(true); + + doNothing().when(uftpIncomingHandler).handle(incomingUftpMessageCaptor.capture()); + doNothing().when(uftpOutgoingHandler).handle(outgoingUftpMessageCaptor.capture()); } @Test @@ -128,7 +133,7 @@ void postUftpMessage_flexRequest_happyFlow() throws Exception { .content(createSignedMessageXml(flexRequest))) .andExpect(status().isOk()); - verify(uftpIncomingHandler).handle(incomingUftpMessageCaptor.capture()); + verify(uftpIncomingHandler).handle(any()); var incomingUftpMessage = incomingUftpMessageCaptor.getValue(); assertThat(incomingUftpMessage.sender()).isEqualTo(DSO_PARTICIPANT); @@ -180,7 +185,7 @@ void postUftpMessage_flexRequest_validationError() throws Exception { .content(createSignedMessageXml(flexRequest))) .andExpect(status().isOk()); - verify(uftpIncomingHandler).handle(incomingUftpMessageCaptor.capture()); + verify(uftpIncomingHandler).handle(any()); var incomingUftpMessage = incomingUftpMessageCaptor.getValue(); assertThat(incomingUftpMessage.sender()).isEqualTo(DSO_PARTICIPANT); @@ -213,7 +218,7 @@ void postUftpMessage_testMessage_happyFlow() throws Exception { .content(createSignedMessageXml(testMessage))) .andExpect(status().isOk()); - verify(uftpIncomingHandler).handle(incomingUftpMessageCaptor.capture()); + verify(uftpIncomingHandler).handle(any()); var incomingUftpMessage = incomingUftpMessageCaptor.getValue(); assertThat(incomingUftpMessage.sender()).isEqualTo(DSO_PARTICIPANT);