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

OZG-7689 fix bean management

parent 76af24d7
No related branches found
No related tags found
1 merge request!3Ozg 7689 erweitern
...@@ -90,6 +90,12 @@ ...@@ -90,6 +90,12 @@
<artifactId>jackson-datatype-jsr310</artifactId> <artifactId>jackson-datatype-jsr310</artifactId>
</dependency> </dependency>
<!-- commons -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<!-- test --> <!-- test -->
<dependency> <dependency>
<groupId>de.ozgcloud.command</groupId> <groupId>de.ozgcloud.command</groupId>
...@@ -136,12 +142,6 @@ ...@@ -136,12 +142,6 @@
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<!-- commons -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
...@@ -7,13 +7,13 @@ import de.ozgcloud.vorgang.grpc.command.GrpcGetCommandRequest; ...@@ -7,13 +7,13 @@ import de.ozgcloud.vorgang.grpc.command.GrpcGetCommandRequest;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import net.devh.boot.grpc.client.inject.GrpcClient; import net.devh.boot.grpc.client.inject.GrpcClient;
@Service @Service("processorManagerCommandService")
@RequiredArgsConstructor @RequiredArgsConstructor
class CommandRemoteService { class CommandRemoteService {
@GrpcClient("command-manager") @GrpcClient("command-manager")
private final CommandServiceBlockingStub commandServiceStub; private final CommandServiceBlockingStub commandServiceStub;
private final CommandMapper mapper; private final ProcessorManagerCommandMapper mapper;
public Command getCommand(String id) { public Command getCommand(String id) {
var grpcCommand = commandServiceStub.getCommand(buildRequest(id)); var grpcCommand = commandServiceStub.getCommand(buildRequest(id));
......
...@@ -4,7 +4,7 @@ import org.springframework.stereotype.Service; ...@@ -4,7 +4,7 @@ import org.springframework.stereotype.Service;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@Service @Service("processorCommandService")
@RequiredArgsConstructor @RequiredArgsConstructor
public class CommandService { public class CommandService {
......
...@@ -9,7 +9,7 @@ import de.ozgcloud.processor.vorgang.VorgangId; ...@@ -9,7 +9,7 @@ import de.ozgcloud.processor.vorgang.VorgangId;
import de.ozgcloud.vorgang.grpc.command.GrpcCommand; import de.ozgcloud.vorgang.grpc.command.GrpcCommand;
@Mapper @Mapper
interface CommandMapper { interface ProcessorManagerCommandMapper {
@Mapping(target = "order", source = "orderString") @Mapping(target = "order", source = "orderString")
Command fromGrpc(GrpcCommand command); Command fromGrpc(GrpcCommand command);
......
/*
* 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.awaitility.Awaitility.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import java.util.concurrent.TimeUnit;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
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.VorgangCreatedEvent;
import de.ozgcloud.common.test.ITCase;
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.processor.vorgang.VorgangTestFactory;
//TODO:
// - rebuild it as api-test
// - build it as ProcessorManager-local test
// ozg api lib mit in-process server unterstützen: https://stackoverflow.com/questions/71059894/does-grpc-have-a-channel-that-can-be-used-for-testing
@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 })
}, classes = { ProcessorTestApplication.class })
//@WithMockCustomUser
@ITCase
@DirtiesContext
@Disabled
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.toString()));
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(de.ozgcloud.processor.vorgang.VorgangTestFactory.ID))
.formEngineName("testFormEngine")
.formId("testForm")
.build();
}
}
...@@ -23,7 +23,7 @@ class CommandRemoteServiceTest { ...@@ -23,7 +23,7 @@ class CommandRemoteServiceTest {
@Mock @Mock
private CommandServiceBlockingStub stub; private CommandServiceBlockingStub stub;
@Mock @Mock
private CommandMapper mapper; private ProcessorManagerCommandMapper mapper;
@Nested @Nested
class TestGetCommand { class TestGetCommand {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment