From cc49b9b5613ef05275db571861d9673332553465 Mon Sep 17 00:00:00 2001 From: Marten Meijboom Date: Fri, 26 Jan 2024 15:48:54 +0100 Subject: [PATCH] Provide message type based on response type to UftpMessageSupport in ReferencedRequestMessageIdInResponseValidator Signed-off-by: Marten Meijboom --- ...edRequestMessageIdInResponseValidator.java | 10 ++++-- ...questMessageIdInResponseValidatorTest.java | 31 ++++++++++++++++++- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/org/lfenergy/shapeshifter/core/service/validation/base/ReferencedRequestMessageIdInResponseValidator.java b/core/src/main/java/org/lfenergy/shapeshifter/core/service/validation/base/ReferencedRequestMessageIdInResponseValidator.java index 761b760..3461f24 100644 --- a/core/src/main/java/org/lfenergy/shapeshifter/core/service/validation/base/ReferencedRequestMessageIdInResponseValidator.java +++ b/core/src/main/java/org/lfenergy/shapeshifter/core/service/validation/base/ReferencedRequestMessageIdInResponseValidator.java @@ -2,7 +2,6 @@ import lombok.RequiredArgsConstructor; -import org.lfenergy.shapeshifter.api.FlexRequest; import org.lfenergy.shapeshifter.api.PayloadMessageResponseType; import org.lfenergy.shapeshifter.api.PayloadMessageType; import org.lfenergy.shapeshifter.core.model.UftpMessage; @@ -29,8 +28,13 @@ public int order() { @Override public boolean isValid(UftpMessage message) { var value = UftpRequestResponseMapping.getReferencedRequestMessageId(message.payloadMessage()); - return value.isPresent() && support.findReferencedMessage(message.referenceToPreviousMessage(value.get(), message.payloadMessage().getConversationID(), - FlexRequest.class)).isPresent(); + return value.isPresent() && support.findReferencedMessage( + message.referenceToPreviousMessage( + value.get(), + message.payloadMessage().getConversationID(), + UftpRequestResponseMapping.getRequestTypeFor(message.payloadMessage()) + ) + ).isPresent(); } @Override diff --git a/core/src/test/java/org/lfenergy/shapeshifter/core/service/validation/base/ReferencedRequestMessageIdInResponseValidatorTest.java b/core/src/test/java/org/lfenergy/shapeshifter/core/service/validation/base/ReferencedRequestMessageIdInResponseValidatorTest.java index ebeb45d..5c11ce5 100644 --- a/core/src/test/java/org/lfenergy/shapeshifter/core/service/validation/base/ReferencedRequestMessageIdInResponseValidatorTest.java +++ b/core/src/test/java/org/lfenergy/shapeshifter/core/service/validation/base/ReferencedRequestMessageIdInResponseValidatorTest.java @@ -2,6 +2,8 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import org.lfenergy.shapeshifter.api.FlexOffer; +import org.lfenergy.shapeshifter.api.FlexOfferResponse; import org.lfenergy.shapeshifter.api.FlexRequest; import org.lfenergy.shapeshifter.api.FlexRequestResponse; import org.lfenergy.shapeshifter.api.PayloadMessageResponseType; @@ -23,6 +25,7 @@ @ExtendWith(MockitoExtension.class) class ReferencedRequestMessageIdInResponseValidatorTest { private static final String FLEX_REQUEST_MESSAGE_ID = UUID.randomUUID().toString(); + private static final String FLEX_OFFER_MESSAGE_ID = UUID.randomUUID().toString(); private static final String CONVERSATION_ID = UUID.randomUUID().toString(); @Mock private UftpMessageSupport messageSupport; @@ -32,7 +35,9 @@ class ReferencedRequestMessageIdInResponseValidatorTest { private final UftpParticipant sender = new UftpParticipant("example.com", USEFRoleType.DSO); private final PayloadMessageResponseType flexRequestResponse = new FlexRequestResponse(); + private final PayloadMessageResponseType flexOfferResponse = new FlexOfferResponse(); private final FlexRequest flexRequest = new FlexRequest(); + private final FlexOffer flexOffer = new FlexOffer(); @Test void appliesTo() { @@ -64,7 +69,19 @@ void valid_whenFlexRequestReferenceInResponseIsKnown() { } @Test - void invalid_whenReferenceInResponseIsNotKnown() { + void valid_whenFlexOfferReferenceInResponseIsKnown() { + var uftpMessage = UftpMessageFixture.createIncomingResponse(sender, flexOfferResponse); + + ((FlexOfferResponse) flexOfferResponse).setFlexOfferMessageID(FLEX_OFFER_MESSAGE_ID); + flexOfferResponse.setConversationID(CONVERSATION_ID); + given(messageSupport.findReferencedMessage(uftpMessage.referenceToPreviousMessage(FLEX_OFFER_MESSAGE_ID, CONVERSATION_ID, + FlexOffer.class))).willReturn(Optional.of(flexOffer)); + + assertThat(testSubject.isValid(uftpMessage)).isTrue(); + } + + @Test + void invalid_whenFlexRequestReferenceInResponseIsNotKnown() { var uftpMessage = UftpMessageFixture.createIncomingResponse(sender, flexRequestResponse); ((FlexRequestResponse) flexRequestResponse).setFlexRequestMessageID(FLEX_REQUEST_MESSAGE_ID); @@ -75,6 +92,18 @@ void invalid_whenReferenceInResponseIsNotKnown() { assertThat(testSubject.isValid(uftpMessage)).isFalse(); } + @Test + void valid_whenFlexOfferReferenceInResponseIsNotKnown() { + var uftpMessage = UftpMessageFixture.createIncomingResponse(sender, flexOfferResponse); + + ((FlexOfferResponse) flexOfferResponse).setFlexOfferMessageID(FLEX_OFFER_MESSAGE_ID); + flexOfferResponse.setConversationID(CONVERSATION_ID); + given(messageSupport.findReferencedMessage(uftpMessage.referenceToPreviousMessage(FLEX_OFFER_MESSAGE_ID, CONVERSATION_ID, + FlexOffer.class))).willReturn(Optional.empty()); + + assertThat(testSubject.isValid(uftpMessage)).isFalse(); + } + @Test void getReason() { assertThat(testSubject.getReason()).isEqualTo("Unknown reference Request message ID");