Skip to content
Snippets Groups Projects
Commit c42360d5 authored by OZG-Cloud Team's avatar OZG-Cloud Team
Browse files

OZG-5156 fim: Allow fim messages

parent 729632e0
No related branches found
No related tags found
No related merge requests found
package de.ozgcloud.eingang.xta;
import static java.util.Collections.*;
import java.util.List;
import java.util.Spliterators;
import java.util.stream.Stream;
......@@ -23,6 +25,8 @@ class XtaService {
static final String XDOMEA_0201_MESSAGE_TYPE = "Geschaeftsgang.Geschaeftsgang.0201";
static final String FIM_MESSAGE_TYPE_PREFIX = "fim.";
@Autowired
private XtaRemoteService remoteService;
@Autowired
......@@ -48,6 +52,10 @@ class XtaService {
return true;
}
if (StringUtils.startsWith(metaData.getMessageType(), FIM_MESSAGE_TYPE_PREFIX)) {
return true;
}
LOG.warn("Ignoring XTA-Message of type '{}'.", metaData.getMessageType());
return false;
}
......@@ -63,9 +71,20 @@ class XtaService {
if (StringUtils.equals(metaData.getMessageType(), XDOMEA_0201_MESSAGE_TYPE)) {
return xdomeaMessageDataMapper.mapIncomingFilesToRepresentationsAttachmentsPair(incomingFiles);
}
if (StringUtils.startsWith(metaData.getMessageType(), FIM_MESSAGE_TYPE_PREFIX)) {
return mapIncomingFilesToRepresentations(incomingFiles);
}
throw new TechnicalException("Unexpected XTA message type: %s".formatted(metaData.getMessageType()));
}
RepresentationsAttachmentsPair mapIncomingFilesToRepresentations(List<IncomingFile> incomingFiles) {
return RepresentationsAttachmentsPair.builder()
.representations(incomingFiles)
.attachments(emptyList())
.build();
}
public void acknowledgeReceive(@NonNull XtaMessageId messageId) {
remoteService.close(messageId);
}
......
......@@ -13,6 +13,7 @@ import java.util.Optional;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import org.mockito.ArgumentCaptor;
......@@ -148,6 +149,28 @@ class XtaITCase {
assertThat(vorgangNummer).hasSize(9);
}
@DisplayName("should use xta vorgangsnummer for FIM")
@Test
void shouldUseVorgangsnummerForFIM() {
mockNachrichtenBroker("versammlungsanzeige.xml");
runner.runGetXtaMessages();
var vorgangNummer = captureEingang().getHeader().getVorgangNummer();
assertThat(vorgangNummer).hasSize(9);
}
@DisplayName("should have one attachment for FIM")
@Test
void shouldHaveOneRepresentationForFim() {
mockNachrichtenBroker("versammlungsanzeige.xml");
runner.runGetXtaMessages();
var eingang = captureEingang();
assertThat(eingang.getNumberOfRepresentations()).isEqualTo(1);
}
private GrpcEingang captureEingang() {
verify(vorgangRemoteService, times(1))
.createVorgang(
......@@ -158,7 +181,6 @@ class XtaITCase {
assertThat(formDataArgumentCaptor.getValue()).isNotNull();
assertThat(eingangArgumentCaptor.getValue()).isNotNull();
assertThat(organisationseinheitenIdArgumentCaptor.getValue()).isPresent();
return eingangArgumentCaptor.getValue();
}
......
package de.ozgcloud.eingang.xta;
import static de.ozgcloud.eingang.xta.XtaService.*;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
......@@ -102,10 +103,19 @@ class XtaServiceTest {
class TestIsSupportedMessageType {
@Test
void shouldAcceptDFoerdermittel() {
var metaDataDFoerder = XtaMessageMetaDataTestFactory.create();
void shouldAcceptGeschaeftsgang() {
var geschaeftsgangMetaData = XtaMessageMetaDataTestFactory.create();
assertThat(service.isSupportedMessageType(metaDataDFoerder)).isTrue();
assertThat(service.isSupportedMessageType(geschaeftsgangMetaData)).isTrue();
}
@Test
void shouldAcceptFIM() {
var fimMetaData = XtaMessageMetaDataTestFactory.createBuilder()
.messageType(FIM_MESSAGE_TYPE_PREFIX + "34355")
.build();
assertThat(service.isSupportedMessageType(fimMetaData)).isTrue();
}
@Test
......@@ -205,6 +215,17 @@ class XtaServiceTest {
assertThat(result).isEqualTo(classification);
}
@DisplayName("should use correct mapping for FIM message")
@Test
void shouldUseCorrectMappingForFimMessage() {
when(messageMetaData.getMessageType()).thenReturn(FIM_MESSAGE_TYPE_PREFIX + "836487");
doReturn(classification).when(service).mapIncomingFilesToRepresentations(incomingFiles);
var result = service.getRepresentationsAttachmentsPair(messageMetaData, incomingFiles);
assertThat(result).isEqualTo(classification);
}
@DisplayName("should throw exception for unexpected message type")
@Test
void shouldThrowExceptionForUnexpectedMessageType() {
......@@ -215,6 +236,34 @@ class XtaServiceTest {
}
}
@DisplayName("map incoming files to representations")
@Nested
class TestMapIncomingFilesToRepresentations {
private List<IncomingFile> incomingFiles;
@BeforeEach
void mock() {
incomingFiles = List.of(IncomingFileTestFactory.create(), IncomingFileTestFactory.create());
}
@DisplayName("should return representations with incoming files")
@Test
void shouldReturnRepresentationsWithIncomingFiles() {
var result = service.mapIncomingFilesToRepresentations(incomingFiles);
assertThat(result.representations()).isEqualTo(incomingFiles);
}
@DisplayName("should return attachments with empty list")
@Test
void shouldReturnAttachmentsWithEmptyList() {
var result = service.mapIncomingFilesToRepresentations(incomingFiles);
assertThat(result.attachments()).isEmpty();
}
}
@Nested
class TestAcknowledgeReceive {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment