Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@


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;
Expand All @@ -13,27 +14,27 @@
@RequiredArgsConstructor
public class ReferencedRequestMessageIdInResponseValidator implements UftpValidator<PayloadMessageResponseType> {

private final UftpMessageSupport support;

@Override
public boolean appliesTo(Class<? extends PayloadMessageType> clazz) {
return UftpRequestResponseMapping.hasReferencedRequestMessageId(clazz);
}

@Override
public int order() {
return 0;
}

@Override
public boolean isValid(UftpMessage<PayloadMessageResponseType> message) {
var value = UftpRequestResponseMapping.getReferencedRequestMessageId(message.payloadMessage());
return value.isEmpty() || support.findDuplicateMessage(value.get(), message.payloadMessage().getSenderDomain() ,
message.payloadMessage().getRecipientDomain()).isPresent();
}

@Override
public String getReason() {
return "Unknown reference Request message ID";
}
private final UftpMessageSupport support;

@Override
public boolean appliesTo(Class<? extends PayloadMessageType> clazz) {
return UftpRequestResponseMapping.hasReferencedRequestMessageId(clazz);
}

@Override
public int order() {
return 0;
}

@Override
public boolean isValid(UftpMessage<PayloadMessageResponseType> message) {
var value = UftpRequestResponseMapping.getReferencedRequestMessageId(message.payloadMessage());
return value.isPresent() && support.findReferencedMessage(message.referenceToPreviousMessage(value.get(), message.payloadMessage().getConversationID(),
FlexRequest.class)).isPresent();
}

@Override
public String getReason() {
return "Unknown reference Request message ID";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@

package org.lfenergy.shapeshifter.core.model;

import org.lfenergy.shapeshifter.api.*;
import org.lfenergy.shapeshifter.api.AvailableRequestedType;
import org.lfenergy.shapeshifter.api.FlexRequest;
import org.lfenergy.shapeshifter.api.FlexRequestISPType;
import org.lfenergy.shapeshifter.api.FlexRequestResponse;
import org.lfenergy.shapeshifter.api.TestMessage;

import java.time.Duration;
import java.time.OffsetDateTime;
Expand Down Expand Up @@ -49,6 +53,16 @@ public static FlexRequest createTestFlexRequest(String messageId, String senderD
return flexRequest;
}

public static FlexRequestResponse createTestFlexRequestResponse(String messageId, String senderDomain, String recipientDomain) {
var flexRequestResponse = new FlexRequestResponse();
flexRequestResponse.setMessageID(messageId);
flexRequestResponse.setConversationID(CONVERSATION_ID);
flexRequestResponse.setSenderDomain(senderDomain);
flexRequestResponse.setRecipientDomain(recipientDomain);
flexRequestResponse.setTimeStamp(NOW);
return flexRequestResponse;
}

public static TestMessage createTestMessage(String messageId, String senderDomain, String recipientDomain) {
var testMessage = new TestMessage();
testMessage.setMessageID(messageId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

package org.lfenergy.shapeshifter.core.model;

import org.lfenergy.shapeshifter.api.PayloadMessageResponseType;
import org.lfenergy.shapeshifter.api.PayloadMessageType;

public final class UftpMessageFixture {
Expand All @@ -15,6 +16,9 @@ private UftpMessageFixture() {
public static <T extends PayloadMessageType> UftpMessage<T> createIncoming(UftpParticipant sender, T payloadMessage) {
return new UftpMessage<>(sender, UftpMessageDirection.INCOMING, payloadMessage);
}
public static <T extends PayloadMessageResponseType> UftpMessage<T> createIncomingResponse(UftpParticipant sender, T payloadMessage) {
return new UftpMessage<>(sender, UftpMessageDirection.INCOMING, payloadMessage);
}

public static <T extends PayloadMessageType> UftpMessage<T> createOutgoing(UftpParticipant sender, T payloadMessage) {
return new UftpMessage<>(sender, UftpMessageDirection.OUTGOING, payloadMessage);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,6 @@ class UftpSendMessageServiceTest {
@Mock
private UftpValidationService uftpValidationService;


private UftpSendMessageService testSubject;

@Mock
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
package org.lfenergy.shapeshifter.core.service.validation.base;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.lfenergy.shapeshifter.api.FlexRequest;
import org.lfenergy.shapeshifter.api.FlexRequestResponse;
import org.lfenergy.shapeshifter.api.PayloadMessageResponseType;
import org.lfenergy.shapeshifter.api.TestMessageResponse;
import org.lfenergy.shapeshifter.api.USEFRoleType;
import org.lfenergy.shapeshifter.core.model.UftpMessageFixture;
import org.lfenergy.shapeshifter.core.model.UftpParticipant;
import org.lfenergy.shapeshifter.core.service.validation.UftpMessageSupport;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;

import java.util.Optional;
import java.util.UUID;

import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.BDDMockito.given;

@ExtendWith(MockitoExtension.class)
class ReferencedRequestMessageIdInResponseValidatorTest {
private static final String FLEX_REQUEST_MESSAGE_ID = UUID.randomUUID().toString();
private static final String CONVERSATION_ID = UUID.randomUUID().toString();
@Mock
private UftpMessageSupport messageSupport;

@InjectMocks
private ReferencedRequestMessageIdInResponseValidator testSubject;

private final UftpParticipant sender = new UftpParticipant("example.com", USEFRoleType.DSO);
private final PayloadMessageResponseType flexRequestResponse = new FlexRequestResponse();
private final FlexRequest flexRequest = new FlexRequest();

@Test
void appliesTo() {
assertThat(testSubject.appliesTo(FlexRequestResponse.class)).isTrue();
}

@Test
void notAppliesTo() {
assertThat(testSubject.appliesTo(TestMessageResponse.class)).isFalse();
}

@Test
void valid_whenNoFlexRequestReferenceInResponse() {
((FlexRequestResponse) flexRequestResponse).setFlexRequestMessageID(null);

assertThat(testSubject.isValid(UftpMessageFixture.createIncomingResponse(sender, flexRequestResponse))).isFalse();
}

@Test
void valid_whenFlexRequestReferenceInResponseIsKnown() {
var uftpMessage = UftpMessageFixture.createIncomingResponse(sender, flexRequestResponse);

((FlexRequestResponse) flexRequestResponse).setFlexRequestMessageID(FLEX_REQUEST_MESSAGE_ID);
flexRequestResponse.setConversationID(CONVERSATION_ID);
given(messageSupport.findReferencedMessage(uftpMessage.referenceToPreviousMessage(FLEX_REQUEST_MESSAGE_ID, CONVERSATION_ID,
FlexRequest.class))).willReturn(Optional.of(flexRequest));

assertThat(testSubject.isValid(uftpMessage)).isTrue();
}

@Test
void invalid_whenReferenceInResponseIsNotKnown() {
var uftpMessage = UftpMessageFixture.createIncomingResponse(sender, flexRequestResponse);

((FlexRequestResponse) flexRequestResponse).setFlexRequestMessageID(FLEX_REQUEST_MESSAGE_ID);
flexRequestResponse.setConversationID(CONVERSATION_ID);
given(messageSupport.findReferencedMessage(uftpMessage.referenceToPreviousMessage(FLEX_REQUEST_MESSAGE_ID, CONVERSATION_ID,
FlexRequest.class))).willReturn(Optional.empty());

assertThat(testSubject.isValid(uftpMessage)).isFalse();
}

@Test
void getReason() {
assertThat(testSubject.getReason()).isEqualTo("Unknown reference Request message ID");
}
}