Skip to content
Snippets Groups Projects
Commit 1566d7b4 authored by Tobias Bruns's avatar Tobias Bruns
Browse files

OZG-7689 remove processoritcase - moved to processor manager

parent 13f66ea5
No related branches found
No related tags found
1 merge request!16Ozg 7689 move status change event
ozgcloud:
processors:
- name: bridge
address: http://localhost:8080/process
transferAttachments: true
forms:
- formEngineName: FormSolutions
formId: 8MB Anhang
\ No newline at end of file
/*
* Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.processor;
import static org.assertj.core.api.Assertions.*;
import static org.awaitility.Awaitility.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import java.time.ZonedDateTime;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.TimeUnit;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
import de.ozgcloud.command.CommandStatus;
import de.ozgcloud.command.VorgangCreatedEvent;
import de.ozgcloud.common.test.ITCase;
import de.ozgcloud.notification.postfach.PostfachService;
import de.ozgcloud.notification.user.UserNotificationEventListener;
import de.ozgcloud.processor.processor.ProcessorService;
import de.ozgcloud.processor.vorgang.Vorgang;
import de.ozgcloud.processor.vorgang.VorgangId;
import de.ozgcloud.processor.vorgang.VorgangService;
import de.ozgcloud.vorgang.VorgangManagerServerApplication;
import de.ozgcloud.vorgang.callcontext.WithMockCustomUser;
import de.ozgcloud.vorgang.command.CommandService;
import de.ozgcloud.vorgang.command.CreateCommandRequest;
import de.ozgcloud.vorgang.command.PersistedCommand;
import de.ozgcloud.vorgang.vorgang.VorgangTestFactory;
@SpringBootTest(properties = {
"ozgcloud.processors.0.name=test",
"ozgcloud.processors.0.address=http://localhost:8090/testprocessor",
"ozgcloud.processors.0.forms.0.formEngineName=testFormEngine",
"ozgcloud.processors.0.forms.0.formId=testForm",
"grpc.server.in-process-name=test",
"ozgcloud.command-manager.address=in-process:test",
}, classes = { VorgangManagerServerApplication.class })
@WithMockCustomUser
@ITCase
@DirtiesContext
class ProcessorITCase {
@Autowired
private ApplicationEventPublisher publisher;
@MockitoBean
private VorgangService processorVorgangService;
@MockitoBean
private PostfachService postfachService;
@MockitoBean
private de.ozgcloud.notification.vorgang.VorgangService notificationService;
@MockitoBean
private UserNotificationEventListener userNotificationEventListener;
@MockitoBean
private CommandService commandService;
@MockitoBean
private ProcessorService processorService;
@Captor
private ArgumentCaptor<CreateCommandRequest> requestCaptor;
@BeforeEach
void init() {
when(processorVorgangService.getVorgang(any())).thenReturn(buildVorgang());
when(notificationService.getVorgang(any())).thenReturn(de.ozgcloud.notification.vorgang.Vorgang.builder().build());
when(processorService.processVorgang(any(), anyString())).thenThrow(RuntimeException.class);
}
@BeforeEach
void setupCommandService() {
var commandBuilder = PersistedCommand.builder().id("42").status(CommandStatus.PENDING).createdAt(ZonedDateTime.now());
when(commandService.createCommand(any())).thenReturn(commandBuilder.build());
when(commandService.findById("42"))
.thenReturn(Optional.of(commandBuilder.status(CommandStatus.FINISHED).finishedAt(ZonedDateTime.now()).build()));
}
@Test
void triggerProcessorOnNewVorgang() {
publisher.publishEvent(new VorgangCreatedEvent(VorgangTestFactory.ID));
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> {
verify(processorVorgangService).getVorgang(any());
verify(commandService).createCommand(requestCaptor.capture());
});
var request = requestCaptor.getValue();
@SuppressWarnings("unchecked")
Map<String, Object> item = (Map<String, Object>) request.getBodyObject().get("item");
assertThat(item).containsEntry("text", "Es ist eine Fehler bei der Verarbeitung des Vorganges aufgetreten");
}
private Vorgang buildVorgang() {
return Vorgang.builder()
.id(VorgangId.from(VorgangTestFactory.ID))
.formEngineName("testFormEngine")
.formId("testForm")
.build();
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment