Skip to content
Snippets Groups Projects
Commit e3490c86 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-6990 add itcases for archive-manager

parent ff1a7c34
Branches
Tags
No related merge requests found
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
<vorgang-manager.version>2.18.0-SNAPSHOT</vorgang-manager.version> <vorgang-manager.version>2.18.0-SNAPSHOT</vorgang-manager.version>
<nachrichten-manager.version>2.14.0</nachrichten-manager.version> <nachrichten-manager.version>2.14.0</nachrichten-manager.version>
<document-manager.version>1.1.0-SNAPSHOT</document-manager.version> <document-manager.version>1.1.0-SNAPSHOT</document-manager.version>
<api-lib.version>0.13.0</api-lib.version> <api-lib.version>0.14.0-SNAPSHOT</api-lib.version>
<spring-cloud-config-client.version>4.1.3</spring-cloud-config-client.version> <spring-cloud-config-client.version>4.1.3</spring-cloud-config-client.version>
</properties> </properties>
...@@ -59,6 +59,7 @@ ...@@ -59,6 +59,7 @@
<groupId>de.ozgcloud.api-lib</groupId> <groupId>de.ozgcloud.api-lib</groupId>
<artifactId>api-lib-core</artifactId> <artifactId>api-lib-core</artifactId>
<version>${api-lib.version}</version> <version>${api-lib.version}</version>
<scope>runtime</scope>
</dependency> </dependency>
......
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
<bescheid-manager.version>1.21.0-SNAPSHOT</bescheid-manager.version> <bescheid-manager.version>1.21.0-SNAPSHOT</bescheid-manager.version>
<processor-manager.version>0.5.0</processor-manager.version> <processor-manager.version>0.5.0</processor-manager.version>
<nachrichten-manager.version>2.14.0</nachrichten-manager.version> <nachrichten-manager.version>2.14.0</nachrichten-manager.version>
<ozgcloud-starter.version>0.14.0-SNAPSHOT</ozgcloud-starter.version> <api-lib.version>0.14.0-SNAPSHOT</api-lib.version>
<notification-manager.version>2.12.0</notification-manager.version> <notification-manager.version>2.12.0</notification-manager.version>
<collaboration-manager.version>0.5.0-SNAPSHOT</collaboration-manager.version> <collaboration-manager.version>0.5.0-SNAPSHOT</collaboration-manager.version>
<archive-manager.version>0.1.0-SNAPSHOT</archive-manager.version> <archive-manager.version>0.1.0-SNAPSHOT</archive-manager.version>
...@@ -302,7 +302,12 @@ ...@@ -302,7 +302,12 @@
<dependency> <dependency>
<groupId>de.ozgcloud.api-lib</groupId> <groupId>de.ozgcloud.api-lib</groupId>
<artifactId>ozg-cloud-spring-boot-starter</artifactId> <artifactId>ozg-cloud-spring-boot-starter</artifactId>
<version>${ozgcloud-starter.version}</version> <version>${api-lib.version}</version>
</dependency>
<dependency>
<groupId>de.ozgcloud.api-lib</groupId>
<artifactId>api-lib-core</artifactId>
<version>${api-lib.version}</version>
</dependency> </dependency>
<dependency> <dependency>
......
/*
* Copyright (C) 2024 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.archive;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.SpyBean;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
import de.ozgcloud.archive.attributes.ClientAttributeService;
import de.ozgcloud.archive.common.callcontext.CallContextProvider;
import de.ozgcloud.archive.common.callcontext.CallContextUser;
import de.ozgcloud.command.CommandStatus;
import de.ozgcloud.common.test.DataITCase;
import de.ozgcloud.vorgang.VorgangManagerServerApplication;
import de.ozgcloud.vorgang.callcontext.WithMockCustomUser;
import de.ozgcloud.vorgang.clientattribute.ClientAttribute;
import de.ozgcloud.vorgang.command.CommandService;
import de.ozgcloud.vorgang.command.CreateCommandRequest;
import de.ozgcloud.vorgang.vorgang.Vorgang;
import de.ozgcloud.vorgang.vorgang.VorgangService;
import de.ozgcloud.vorgang.vorgang.VorgangTestFactory;
@SpringBootTest(classes = VorgangManagerServerApplication.class, properties = {
"grpc.server.inProcessName=test",
"grpc.client.vorgang-manager.address=in-process:test",
"grpc.client.ozgcloud-command-manager.address=in-process:test",
"grpc.client.inProcess.address=in-process:test",
})
@DataITCase
@DirtiesContext
@WithMockCustomUser
@ContextConfiguration(classes = CallContextProvider.class)
public class ArchiveManagerITCase {
@Autowired
private CommandService commandService;
@Autowired
private MongoOperations mongoOperations;
@Autowired
private VorgangService vorgangService;
@SpyBean
private TestArchiveEventListener archiveEventListener;
private Vorgang vorgang;
@BeforeEach
void init() {
vorgang = mongoOperations.save(VorgangTestFactory.createBuilder().id(null).version(0).build());
}
@Nested
class TestArchiveVorgang {
@Test
void shouldSetArchiveClientAttribute() {
commandService.createCommand(buildArchiveVorgangCommand());
verify(archiveEventListener, timeout(60_000)).onVorgangLockedEvent(any());
var updatedVorgang = mongoOperations.findById(vorgang.getId(), Vorgang.class);
assertThat(getArchivingClientAttribute(updatedVorgang).getBoolValue()).contains(true);
}
@Test
void shouldLockVorgang() {
commandService.createCommand(buildArchiveVorgangCommand());
verify(archiveEventListener, timeout(60_000)).onVorgangLockedEvent(any());
assertThat(vorgangService.isVorgangLocked(vorgang.getId())).isTrue();
}
@Test
void shouldNotFinishParentCommand() {
var archiveVorgangCommand = commandService.createCommand(buildArchiveVorgangCommand());
verify(archiveEventListener, timeout(60_000)).onVorgangLockedEvent(any());
var parentCommand = commandService.getById(archiveVorgangCommand.getId());
assertThat(parentCommand.getStatus()).isEqualTo(CommandStatus.PENDING);
}
private CreateCommandRequest buildArchiveVorgangCommand() {
return CreateCommandRequest.builder()
.order("ARCHIVE_VORGANG")
.vorgangId(vorgang.getId())
.relationId(vorgang.getId())
.relationVersion(vorgang.getVersion())
.build();
}
private ClientAttribute getArchivingClientAttribute(Vorgang vorgang) {
var archiveAttributes = vorgang.getClientAttributes().get(CallContextUser.ARCHIVE_MANAGER_CLIENT_NAME);
assertThat(archiveAttributes).isNotNull();
return archiveAttributes.get(ClientAttributeService.ATTRIBUTE_NAME_ANTRAG_ARCHIVING);
}
}
}
/*
* Copyright (C) 2024 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.archive;
import org.springframework.context.event.EventListener;
import de.ozgcloud.command.VorgangLockedEvent;
public class TestArchiveEventListener {
@EventListener
public void onVorgangLockedEvent(VorgangLockedEvent event) {
}
}
...@@ -77,6 +77,7 @@ import io.grpc.stub.StreamObserver; ...@@ -77,6 +77,7 @@ import io.grpc.stub.StreamObserver;
"grpc.server.in-process-name=postfachitcase", "grpc.server.in-process-name=postfachitcase",
"grpc.client.ozgcloud-command-manager.address=in-process:postfachitcase", "grpc.client.ozgcloud-command-manager.address=in-process:postfachitcase",
"grpc.client.command-manager.address=in-process:postfachitcase", "grpc.client.command-manager.address=in-process:postfachitcase",
"grpc.client.-manager.address=in-process:postfachitcase",
"grpc.client.pluto.address=in-process:postfachitcase", "grpc.client.pluto.address=in-process:postfachitcase",
"ozgcloud.osi.postfach.proxyapi.url=http://localhost/ApiProxy/V1/Message", "ozgcloud.osi.postfach.proxyapi.url=http://localhost/ApiProxy/V1/Message",
"ozgcloud.osi.postfach.proxyapi.key=1234", "ozgcloud.osi.postfach.proxyapi.key=1234",
......
...@@ -25,19 +25,13 @@ package de.ozgcloud.vorgang; ...@@ -25,19 +25,13 @@ package de.ozgcloud.vorgang;
import static org.mockito.Mockito.*; import static org.mockito.Mockito.*;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.JavaMailSender;
import de.ozgcloud.archive.common.callcontext.CallContextProvider;
@Configuration @Configuration
public class TestConfiguration { public class TestConfiguration {
@MockBean
private CallContextProvider callContextProvider;
@Bean @Bean
JavaMailSender mockMailSender() { JavaMailSender mockMailSender() {
return mock(JavaMailSender.class); return mock(JavaMailSender.class);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment