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);