From f068a489ee813f53ffea119c157e09c9e42c5243 Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Mon, 23 Sep 2024 08:09:05 +0200 Subject: [PATCH] OZG-6751 package infomanager in information umbenannt --- Jenkinsfile | 30 ++-- README.md | 8 +- info-manager-server/pom.xml | 13 +- .../ozgcloud/info/InfoManagerApplication.java | 15 -- .../ozgcloud/info/SecurityConfiguration.java | 31 ---- .../common/CallBeanFactoryPostProcessor.java | 40 ----- .../CallContextAttachingInterceptor.java | 50 ------ .../de/ozgcloud/info/common/CallScope.java | 91 ---------- .../ozgcloud/info/common/ContextService.java | 73 -------- .../{nachricht => common}/NachrichtEvent.java | 5 +- .../InfoManagerProperties.java | 4 +- .../InformationGrpcService.java | 2 +- .../InformationMapper.java | 6 +- .../InformationRepository.java | 8 +- .../InformationService.java | 7 +- .../ReadOnlyRepository.java | 6 +- ...Service.java => NachrichtGrpcService.java} | 6 +- ...ichtenMapper.java => NachrichtMapper.java} | 3 +- ...pository.java => NachrichtRepository.java} | 4 +- ...htenService.java => NachrichtService.java} | 5 +- .../info/InfoManagerApplicationTest.java | 22 --- .../info/NachrichtEventTestFactory.java | 5 +- .../CallBeanFactoryPostProcessorTest.java | 47 ------ .../CallContextAttachingInterceptorTest.java | 59 ------- .../ozgcloud/info/common/CallScopeTest.java | 157 ------------------ .../info/common/ContextServiceTest.java | 105 ------------ .../info/common/MetadataTestFactory.java | 49 ------ .../UserWithEventsConfiguration.java | 46 ----- .../UserWithOutEventsConfiguration.java | 46 ----- .../InformationGrpcServiceNoEventsITCase.java | 6 +- .../InformationGrpcServiceTest.java | 8 +- ...nformationGrpcServiceWithEventsITCase.java | 8 +- .../InformationGrpcTestConfiguration.java | 6 +- .../InformationMapperTest.java | 6 +- .../InformationRepositoryITCase.java | 2 +- .../InformationServiceTest.java | 10 +- .../NachrichtenGrpcServiceITCase.java | 5 +- .../nachricht/NachrichtenGrpcServiceTest.java | 7 +- .../NachrichtenGrpcTestConfiguration.java | 16 +- .../info/nachricht/NachrichtenMapperTest.java | 4 +- .../NachrichtenRepositoryITCase.java | 3 +- .../nachricht/NachrichtenServiceTest.java | 5 +- .../org.junit.jupiter.api.extension.Extension | 1 + .../org.mockito.plugins.MockMaker | 1 + release-erstellen.sh | 46 ++++- release-startdev.sh | 56 ++++++- 46 files changed, 190 insertions(+), 943 deletions(-) delete mode 100644 info-manager-server/src/main/java/de/ozgcloud/info/SecurityConfiguration.java delete mode 100644 info-manager-server/src/main/java/de/ozgcloud/info/common/CallBeanFactoryPostProcessor.java delete mode 100644 info-manager-server/src/main/java/de/ozgcloud/info/common/CallContextAttachingInterceptor.java delete mode 100644 info-manager-server/src/main/java/de/ozgcloud/info/common/CallScope.java delete mode 100644 info-manager-server/src/main/java/de/ozgcloud/info/common/ContextService.java rename info-manager-server/src/main/java/de/ozgcloud/info/{nachricht => common}/NachrichtEvent.java (94%) rename info-manager-server/src/main/java/de/ozgcloud/info/{infomanager => information}/InfoManagerProperties.java (91%) rename info-manager-server/src/main/java/de/ozgcloud/info/{infomanager => information}/InformationGrpcService.java (98%) rename info-manager-server/src/main/java/de/ozgcloud/info/{infomanager => information}/InformationMapper.java (89%) rename info-manager-server/src/main/java/de/ozgcloud/info/{infomanager => information}/InformationRepository.java (85%) rename info-manager-server/src/main/java/de/ozgcloud/info/{infomanager => information}/InformationService.java (86%) rename info-manager-server/src/main/java/de/ozgcloud/info/{infomanager => information}/ReadOnlyRepository.java (92%) rename info-manager-server/src/main/java/de/ozgcloud/info/nachricht/{NachrichtenGrpcService.java => NachrichtGrpcService.java} (91%) rename info-manager-server/src/main/java/de/ozgcloud/info/nachricht/{NachrichtenMapper.java => NachrichtMapper.java} (96%) rename info-manager-server/src/main/java/de/ozgcloud/info/nachricht/{NachrichtenRepository.java => NachrichtRepository.java} (89%) rename info-manager-server/src/main/java/de/ozgcloud/info/nachricht/{NachrichtenService.java => NachrichtService.java} (92%) delete mode 100644 info-manager-server/src/test/java/de/ozgcloud/info/common/CallBeanFactoryPostProcessorTest.java delete mode 100644 info-manager-server/src/test/java/de/ozgcloud/info/common/CallContextAttachingInterceptorTest.java delete mode 100644 info-manager-server/src/test/java/de/ozgcloud/info/common/CallScopeTest.java delete mode 100644 info-manager-server/src/test/java/de/ozgcloud/info/common/ContextServiceTest.java delete mode 100644 info-manager-server/src/test/java/de/ozgcloud/info/common/MetadataTestFactory.java delete mode 100644 info-manager-server/src/test/java/de/ozgcloud/info/infomanager/UserWithEventsConfiguration.java delete mode 100644 info-manager-server/src/test/java/de/ozgcloud/info/infomanager/UserWithOutEventsConfiguration.java rename info-manager-server/src/test/java/de/ozgcloud/info/{infomanager => information}/InformationGrpcServiceNoEventsITCase.java (91%) rename info-manager-server/src/test/java/de/ozgcloud/info/{infomanager => information}/InformationGrpcServiceTest.java (97%) rename info-manager-server/src/test/java/de/ozgcloud/info/{infomanager => information}/InformationGrpcServiceWithEventsITCase.java (88%) rename info-manager-server/src/test/java/de/ozgcloud/info/{infomanager => information}/InformationGrpcTestConfiguration.java (94%) rename info-manager-server/src/test/java/de/ozgcloud/info/{infomanager => information}/InformationMapperTest.java (93%) rename info-manager-server/src/test/java/de/ozgcloud/info/{infomanager => information}/InformationRepositoryITCase.java (98%) rename info-manager-server/src/test/java/de/ozgcloud/info/{infomanager => information}/InformationServiceTest.java (89%) create mode 100644 info-manager-server/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension create mode 100644 info-manager-server/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker diff --git a/Jenkinsfile b/Jenkinsfile index db4cd8f..9d2b79f 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -49,7 +49,7 @@ pipeline { when { not { anyOf { - branch 'dev' + branch 'master' branch 'release' } } @@ -82,7 +82,7 @@ pipeline { } stage('Sonar Checks') { when { - branch 'dev' + branch 'master' } steps { script { @@ -138,7 +138,7 @@ pipeline { tagAndPushDockerImage(IMAGE_TAG) - if (env.BRANCH_NAME == 'dev') { + if (env.BRANCH_NAME == 'master') { tagAndPushDockerImage('snapshot-latest') } @@ -168,9 +168,9 @@ pipeline { } - stage('Trigger Dev rollout') { + stage('Trigger master rollout') { when { - branch 'dev' + branch 'master' } steps { script { @@ -178,9 +178,9 @@ pipeline { cloneGitopsRepo() - setNewDevInfoManagerVersion() + setNewMasterInfoManagerVersion() - pushDevGitopsRepo() + pushMasterGitopsRepo() } } } @@ -227,7 +227,7 @@ pipeline { } failure { script { - if (env.BRANCH_NAME == 'dev' || env.BRANCH_NAME == 'release') { + if (env.BRANCH_NAME == 'master' || env.BRANCH_NAME == 'release') { sendFailureMessage() } } @@ -262,7 +262,7 @@ Void loginToDockerRepo() { String generateHelmChartVersion() { def chartVersion = getPomVersion('pom.xml') - if (env.BRANCH_NAME == 'dev') { + if (env.BRANCH_NAME == 'master') { chartVersion += "-${env.GIT_COMMIT.take(7)}" } else if (env.BRANCH_NAME != 'release') { @@ -290,7 +290,7 @@ String getPomVersion(String pomFile){ String generateImageTag() { def imageTag = "${env.BRANCH_NAME}-${getPomVersion('pom.xml')}" - if (env.BRANCH_NAME == 'dev') { + if (env.BRANCH_NAME == 'master') { imageTag += "-${env.GIT_COMMIT.take(7)}" } @@ -315,8 +315,8 @@ Void cloneGitopsRepo() { configureGit() } -Void setNewDevInfoManagerVersion() { - setNewInfoManagerGitopsVersion("dev") +Void setNewMasterInfoManagerVersion() { + setNewInfoManagerGitopsVersion("master") } Void setNewTestInfoManagerVersion() { @@ -336,8 +336,8 @@ Void setNewInfoManagerGitopsVersion(String environment) { } } -Void pushDevGitopsRepo() { - pushNewGitopsVersion('dev') +Void pushMasterGitopsRepo() { + pushNewGitopsVersion('master') } Void pushTestGitopsRepo() { @@ -370,7 +370,7 @@ Void sendFailureMessage() { "format": "org.matrix.custom.html", \ "formatted_body":"InfoManager: Build Failed. Stage: ${FAILED_STAGE} Build-ID: <a href='${BLUE_OCEAN_URL}'>${env.BUILD_NUMBER}</a>"}""" - if (env.BRANCH_NAME == 'dev') { + if (env.BRANCH_NAME == 'master') { room = "!iQPAvQIiRwRpNOszjw:matrix.ozg-sh.de" } else if (env.BRANCH_NAME == 'release') { diff --git a/README.md b/README.md index 175344f..c7180a0 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ For further reference, please consider the following sections: * [Spring Boot Gradle Plugin Reference Guide](https://docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/htmlsingle/) * [Create an OCI image](https://docs.spring.io/spring-boot/docs/3.1.3/maven-plugin/reference/html/#build-image) -* [gRPC](https://grpc.io/) +* [Spring RestClient](https://docs.spring.io/spring-framework/reference/integration/rest-clients.html) * [Spring Boot Actuator](https://docs.spring.io/spring-boot/docs/3.1.3/reference/htmlsingle/index.html#actuator) * [Spring Data MongoDB](https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/) * [Spring Boot DevTools](https://docs.spring.io/spring-boot/docs/3.1.3/reference/htmlsingle/index.html#using.devtools) @@ -38,4 +38,8 @@ Run it from commandline use: ./mvnw spring-boot:run -Dspring-boot.run.profiles=local -pl info-manager-server ``` -at the info-manager root directory \ No newline at end of file +at the info-manager root directory + +### Releasing + +See https://git.ozg-sh.de/ozgcloud-doc/dokumentation/src/branch/master/Operations/Release-Antragsraum.md \ No newline at end of file diff --git a/info-manager-server/pom.xml b/info-manager-server/pom.xml index 0794db3..2505613 100644 --- a/info-manager-server/pom.xml +++ b/info-manager-server/pom.xml @@ -65,12 +65,6 @@ <version>${info-manager-interface.version}</version> </dependency> - <dependency> - <groupId>net.devh</groupId> - <artifactId>grpc-client-spring-boot-starter</artifactId> - <version>${net-devh-grpc.version}</version> - </dependency> - <dependency> <groupId>net.devh</groupId> <artifactId>grpc-server-spring-boot-starter</artifactId> @@ -156,6 +150,13 @@ <version>${ozgcloud-starter.version}</version> </dependency> + <dependency> + <groupId>net.devh</groupId> + <artifactId>grpc-client-spring-boot-starter</artifactId> + <version>${net-devh-grpc.version}</version> + <scope>test</scope> + </dependency> + <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> diff --git a/info-manager-server/src/main/java/de/ozgcloud/info/InfoManagerApplication.java b/info-manager-server/src/main/java/de/ozgcloud/info/InfoManagerApplication.java index 5639bb4..a32f144 100644 --- a/info-manager-server/src/main/java/de/ozgcloud/info/InfoManagerApplication.java +++ b/info-manager-server/src/main/java/de/ozgcloud/info/InfoManagerApplication.java @@ -23,27 +23,12 @@ package de.ozgcloud.info; -import org.springframework.beans.factory.config.BeanFactoryPostProcessor; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.context.annotation.Bean; - -import de.ozgcloud.info.common.CallBeanFactoryPostProcessor; -import de.ozgcloud.info.common.CallScope; @SpringBootApplication public class InfoManagerApplication { public static void main(String[] args) { SpringApplication.run(InfoManagerApplication.class, args); } - - @Bean - public CallScope callScope() { - return new CallScope(); - } - - @Bean - public static BeanFactoryPostProcessor beanFactoryPostProcessor(CallScope callScope) { - return new CallBeanFactoryPostProcessor(callScope); - } } diff --git a/info-manager-server/src/main/java/de/ozgcloud/info/SecurityConfiguration.java b/info-manager-server/src/main/java/de/ozgcloud/info/SecurityConfiguration.java deleted file mode 100644 index 5164035..0000000 --- a/info-manager-server/src/main/java/de/ozgcloud/info/SecurityConfiguration.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2023-2024. - * 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.info; - -import org.springframework.context.annotation.Configuration; - -import lombok.RequiredArgsConstructor; -import lombok.extern.log4j.Log4j2; - -@Configuration -@Log4j2 -@RequiredArgsConstructor -public class SecurityConfiguration { -} diff --git a/info-manager-server/src/main/java/de/ozgcloud/info/common/CallBeanFactoryPostProcessor.java b/info-manager-server/src/main/java/de/ozgcloud/info/common/CallBeanFactoryPostProcessor.java deleted file mode 100644 index c302d99..0000000 --- a/info-manager-server/src/main/java/de/ozgcloud/info/common/CallBeanFactoryPostProcessor.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (c) 2023-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.info.common; - -import org.springframework.beans.BeansException; -import org.springframework.beans.factory.config.BeanFactoryPostProcessor; -import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; - -import lombok.RequiredArgsConstructor; - -@RequiredArgsConstructor -public class CallBeanFactoryPostProcessor implements BeanFactoryPostProcessor { - private final CallScope callScope; - - @Override - public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { - beanFactory.registerScope(CallScope.SCOPE_NAME, callScope); - } -} diff --git a/info-manager-server/src/main/java/de/ozgcloud/info/common/CallContextAttachingInterceptor.java b/info-manager-server/src/main/java/de/ozgcloud/info/common/CallContextAttachingInterceptor.java deleted file mode 100644 index 88c6ca7..0000000 --- a/info-manager-server/src/main/java/de/ozgcloud/info/common/CallContextAttachingInterceptor.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2023-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.info.common; - -import io.grpc.Metadata; -import io.grpc.ServerCall; -import io.grpc.ServerCallHandler; -import io.grpc.ServerInterceptor; -import lombok.NonNull; -import lombok.RequiredArgsConstructor; -import lombok.extern.log4j.Log4j2; -import net.devh.boot.grpc.server.interceptor.GrpcGlobalServerInterceptor; - -@Log4j2 -@GrpcGlobalServerInterceptor -@RequiredArgsConstructor -public class CallContextAttachingInterceptor implements ServerInterceptor { - private final @NonNull ContextService contextService; - - @Override - public <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(ServerCall<ReqT, RespT> call, Metadata headers, - ServerCallHandler<ReqT, RespT> next) { - contextService.readMetadata(headers); - - LOG.debug("Got metadata: {}", headers); - - return next.startCall(call, headers); - } -} diff --git a/info-manager-server/src/main/java/de/ozgcloud/info/common/CallScope.java b/info-manager-server/src/main/java/de/ozgcloud/info/common/CallScope.java deleted file mode 100644 index 7f6c474..0000000 --- a/info-manager-server/src/main/java/de/ozgcloud/info/common/CallScope.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (c) 2023-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.info.common; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import org.springframework.beans.factory.ObjectFactory; -import org.springframework.beans.factory.config.Scope; -import org.springframework.core.NamedInheritableThreadLocal; - -import lombok.NonNull; -import lombok.extern.log4j.Log4j2; - -@Log4j2 -public class CallScope implements Scope { - public static final String SCOPE_NAME = "call"; - - static final ThreadLocal<Map<String, Object>> scopedObjectsHolder = new NamedInheritableThreadLocal<>("Call Context"); - static final ThreadLocal<Map<String, Runnable>> destructionCallbacksHolder = new NamedInheritableThreadLocal<>( - "Call Context Destruction Callbacks"); - - public void startScope() { - LOG.debug("START Call-Scope"); - scopedObjectsHolder.set(new ConcurrentHashMap<>()); - destructionCallbacksHolder.set(new ConcurrentHashMap<>()); - } - - public void endScope() { - scopedObjectsHolder.remove(); - callAllDestructionCallbacks(); - destructionCallbacksHolder.remove(); - LOG.debug("END Call-Scope"); - } - - void callAllDestructionCallbacks() { - destructionCallbacksHolder.get().values().forEach(Runnable::run); - } - - @Override - public @NonNull Object get(@NonNull String name, @NonNull ObjectFactory<?> objectFactory) { - if (!scopedObjectsHolder.get().containsKey(name)) { - scopedObjectsHolder.get().put(name, objectFactory.getObject()); - } - - return scopedObjectsHolder.get().get(name); - } - - @Override - public Object remove(@NonNull String name) { - destructionCallbacksHolder.get().remove(name); - return scopedObjectsHolder.get().remove(name); - } - - @Override - public void registerDestructionCallback(@NonNull String name, @NonNull Runnable callback) { - destructionCallbacksHolder.get().put(name, callback); - - } - - @Override - public Object resolveContextualObject(@NonNull String key) { - return scopedObjectsHolder.get().get(key); - } - - @Override - public String getConversationId() { - return Thread.currentThread().getName(); - } -} diff --git a/info-manager-server/src/main/java/de/ozgcloud/info/common/ContextService.java b/info-manager-server/src/main/java/de/ozgcloud/info/common/ContextService.java deleted file mode 100644 index a82d1e4..0000000 --- a/info-manager-server/src/main/java/de/ozgcloud/info/common/ContextService.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2023-2024. - * 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.info.common; - -import java.util.Optional; - -import org.springframework.stereotype.Service; - -import io.grpc.Metadata; -import lombok.Getter; -import lombok.RequiredArgsConstructor; -import lombok.extern.log4j.Log4j2; - -@Getter -@Log4j2 -@Service -@RequiredArgsConstructor -public class ContextService { - public static final String KEY_CLIENT_NAME = "CLIENT_NAME-bin"; - public static final String KEY_REQUEST_ID = "REQUEST_ID-bin"; - public static final String KEY_AUTHENTICATION_ID = "AUTHENTICATION-bin"; - public static final String KEY_JWT_TOKEN = "JWT_TOKEN-bin"; - private RequestAttributes requestAttributes; - - void readMetadata(Metadata headers) { - var requestAttributesBuilder = RequestAttributes.builder(); - - getRequestId(headers).ifPresent(id -> requestAttributesBuilder.requestId(new String(id))); - getClientName(headers).ifPresent(name -> requestAttributesBuilder.clientName(new String(name))); - getJwtToken(headers).ifPresent(token -> requestAttributesBuilder.jwtToken(new String(token))); - getAuthentication(headers).ifPresent(saml -> requestAttributesBuilder.samlToken(new String(saml))); - - requestAttributes = requestAttributesBuilder.build(); - } - - Optional<byte[]> getRequestId(Metadata headers) { - return Optional.ofNullable(headers.get(ContextService.createKeyOf(ContextService.KEY_REQUEST_ID))); - } - - Optional<byte[]> getClientName(Metadata headers) { - return Optional.ofNullable(headers.get(ContextService.createKeyOf(ContextService.KEY_CLIENT_NAME))); - } - - Optional<byte[]> getAuthentication(Metadata headers) { - return Optional.ofNullable(headers.get(ContextService.createKeyOf(ContextService.KEY_AUTHENTICATION_ID))); - } - - Optional<byte[]> getJwtToken(Metadata headers) { - return Optional.ofNullable(headers.get(ContextService.createKeyOf(ContextService.KEY_JWT_TOKEN))); - } - - static Metadata.Key<byte[]> createKeyOf(String key) { - return Metadata.Key.of(key, Metadata.BINARY_BYTE_MARSHALLER); - } -} diff --git a/info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtEvent.java b/info-manager-server/src/main/java/de/ozgcloud/info/common/NachrichtEvent.java similarity index 94% rename from info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtEvent.java rename to info-manager-server/src/main/java/de/ozgcloud/info/common/NachrichtEvent.java index 1db047d..8bcd639 100644 --- a/info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtEvent.java +++ b/info-manager-server/src/main/java/de/ozgcloud/info/common/NachrichtEvent.java @@ -18,12 +18,11 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.ozgcloud.info.nachricht; +package de.ozgcloud.info.common; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Size; -import org.bson.types.ObjectId; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.index.CompoundIndex; import org.springframework.data.mongodb.core.mapping.Document; @@ -39,7 +38,7 @@ import lombok.Setter; @Setter public class NachrichtEvent { @Id - private ObjectId id; + private String id; @NotBlank(message = "Postfach id is missing") @Size(max = 128, message = "Invalid PostfachId") diff --git a/info-manager-server/src/main/java/de/ozgcloud/info/infomanager/InfoManagerProperties.java b/info-manager-server/src/main/java/de/ozgcloud/info/information/InfoManagerProperties.java similarity index 91% rename from info-manager-server/src/main/java/de/ozgcloud/info/infomanager/InfoManagerProperties.java rename to info-manager-server/src/main/java/de/ozgcloud/info/information/InfoManagerProperties.java index 2f4e908..1cd0f36 100644 --- a/info-manager-server/src/main/java/de/ozgcloud/info/infomanager/InfoManagerProperties.java +++ b/info-manager-server/src/main/java/de/ozgcloud/info/information/InfoManagerProperties.java @@ -18,7 +18,7 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.ozgcloud.info.infomanager; +package de.ozgcloud.info.information; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; @@ -30,5 +30,5 @@ import lombok.Getter; @ConfigurationProperties(prefix = InfoManagerProperties.PREFIX) public class InfoManagerProperties { static final String PREFIX = "ozgcloud.infomanager"; - private String postfachIdKeyName = "postkorbhandle"; + private final String postfachIdKeyName = "postkorbhandle"; } diff --git a/info-manager-server/src/main/java/de/ozgcloud/info/infomanager/InformationGrpcService.java b/info-manager-server/src/main/java/de/ozgcloud/info/information/InformationGrpcService.java similarity index 98% rename from info-manager-server/src/main/java/de/ozgcloud/info/infomanager/InformationGrpcService.java rename to info-manager-server/src/main/java/de/ozgcloud/info/information/InformationGrpcService.java index 8062453..4b4e664 100644 --- a/info-manager-server/src/main/java/de/ozgcloud/info/infomanager/InformationGrpcService.java +++ b/info-manager-server/src/main/java/de/ozgcloud/info/information/InformationGrpcService.java @@ -18,7 +18,7 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.ozgcloud.info.infomanager; +package de.ozgcloud.info.information; import java.util.NoSuchElementException; diff --git a/info-manager-server/src/main/java/de/ozgcloud/info/infomanager/InformationMapper.java b/info-manager-server/src/main/java/de/ozgcloud/info/information/InformationMapper.java similarity index 89% rename from info-manager-server/src/main/java/de/ozgcloud/info/infomanager/InformationMapper.java rename to info-manager-server/src/main/java/de/ozgcloud/info/information/InformationMapper.java index 3c3bbac..dd7f3b7 100644 --- a/info-manager-server/src/main/java/de/ozgcloud/info/infomanager/InformationMapper.java +++ b/info-manager-server/src/main/java/de/ozgcloud/info/information/InformationMapper.java @@ -18,10 +18,10 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.ozgcloud.info.infomanager; +package de.ozgcloud.info.information; import de.ozgcloud.info.GrpcInformationNachricht; -import de.ozgcloud.info.nachricht.NachrichtEvent; +import de.ozgcloud.info.common.NachrichtEvent; import lombok.AccessLevel; import lombok.NoArgsConstructor; @@ -29,7 +29,7 @@ import lombok.NoArgsConstructor; class InformationMapper { static GrpcInformationNachricht fromNachrichtEvent(NachrichtEvent nachrichtEvent) { return GrpcInformationNachricht.newBuilder() - .setId(nachrichtEvent.getId().toHexString()) + .setId(nachrichtEvent.getId()) .setPostfachId(nachrichtEvent.getPostfachId()) .setOzgCloudAddress(nachrichtEvent.getNachrichtenListUrl()) .build(); diff --git a/info-manager-server/src/main/java/de/ozgcloud/info/infomanager/InformationRepository.java b/info-manager-server/src/main/java/de/ozgcloud/info/information/InformationRepository.java similarity index 85% rename from info-manager-server/src/main/java/de/ozgcloud/info/infomanager/InformationRepository.java rename to info-manager-server/src/main/java/de/ozgcloud/info/information/InformationRepository.java index cc94d21..a5eb661 100644 --- a/info-manager-server/src/main/java/de/ozgcloud/info/infomanager/InformationRepository.java +++ b/info-manager-server/src/main/java/de/ozgcloud/info/information/InformationRepository.java @@ -18,11 +18,9 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ +package de.ozgcloud.info.information; -package de.ozgcloud.info.infomanager; +import de.ozgcloud.info.common.NachrichtEvent; -import de.ozgcloud.info.nachricht.NachrichtEvent; -import org.bson.types.ObjectId; - -interface InformationRepository extends ReadOnlyRepository<NachrichtEvent, ObjectId> { +interface InformationRepository extends ReadOnlyRepository<NachrichtEvent, String> { } diff --git a/info-manager-server/src/main/java/de/ozgcloud/info/infomanager/InformationService.java b/info-manager-server/src/main/java/de/ozgcloud/info/information/InformationService.java similarity index 86% rename from info-manager-server/src/main/java/de/ozgcloud/info/infomanager/InformationService.java rename to info-manager-server/src/main/java/de/ozgcloud/info/information/InformationService.java index 02596fa..d70e705 100644 --- a/info-manager-server/src/main/java/de/ozgcloud/info/infomanager/InformationService.java +++ b/info-manager-server/src/main/java/de/ozgcloud/info/information/InformationService.java @@ -18,14 +18,13 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.ozgcloud.info.infomanager; +package de.ozgcloud.info.information; import java.util.List; -import org.bson.types.ObjectId; import org.springframework.stereotype.Service; -import de.ozgcloud.info.nachricht.NachrichtEvent; +import de.ozgcloud.info.common.NachrichtEvent; import lombok.RequiredArgsConstructor; @Service @@ -34,7 +33,7 @@ class InformationService { private final InformationRepository repository; NachrichtEvent getInformationById(String id) { - return repository.findById(new ObjectId(id)).orElseThrow(); + return repository.findById(id).orElseThrow(); } List<NachrichtEvent> getInformationOfPostfach(String postfachId) { diff --git a/info-manager-server/src/main/java/de/ozgcloud/info/infomanager/ReadOnlyRepository.java b/info-manager-server/src/main/java/de/ozgcloud/info/information/ReadOnlyRepository.java similarity index 92% rename from info-manager-server/src/main/java/de/ozgcloud/info/infomanager/ReadOnlyRepository.java rename to info-manager-server/src/main/java/de/ozgcloud/info/information/ReadOnlyRepository.java index bae0f76..bccf8e0 100644 --- a/info-manager-server/src/main/java/de/ozgcloud/info/infomanager/ReadOnlyRepository.java +++ b/info-manager-server/src/main/java/de/ozgcloud/info/information/ReadOnlyRepository.java @@ -18,14 +18,14 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ - -package de.ozgcloud.info.infomanager; +package de.ozgcloud.info.information; import java.util.List; + import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.NoRepositoryBean; @NoRepositoryBean interface ReadOnlyRepository<T, ID> extends CrudRepository<T, ID> { - List<T> findByPostfachId(String postfachId); + List<T> findByPostfachId(String postfachId); } diff --git a/info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtenGrpcService.java b/info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtGrpcService.java similarity index 91% rename from info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtenGrpcService.java rename to info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtGrpcService.java index 7c2a410..8b41576 100644 --- a/info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtenGrpcService.java +++ b/info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtGrpcService.java @@ -30,11 +30,11 @@ import net.devh.boot.grpc.server.service.GrpcService; @GrpcService @RequiredArgsConstructor -public class NachrichtenGrpcService extends NachrichtServiceGrpc.NachrichtServiceImplBase { +public class NachrichtGrpcService extends NachrichtServiceGrpc.NachrichtServiceImplBase { static final String STATUS_OK = "ok"; - private final NachrichtenService nachrichtService; - private final NachrichtenMapper nachrichtenMapper; + private final NachrichtService nachrichtService; + private final NachrichtMapper nachrichtenMapper; @Override public void saveNewNachricht(GrpcNewNachrichtRequest request, StreamObserver<GrpcNewNachrichtReply> responseObserver) { diff --git a/info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtenMapper.java b/info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtMapper.java similarity index 96% rename from info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtenMapper.java rename to info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtMapper.java index c70da9a..9c818ed 100644 --- a/info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtenMapper.java +++ b/info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtMapper.java @@ -25,11 +25,12 @@ import org.springframework.core.env.Profiles; import org.springframework.stereotype.Component; import de.ozgcloud.info.common.InvalidNachrichtenListUrlException; +import de.ozgcloud.info.common.NachrichtEvent; import lombok.RequiredArgsConstructor; @Component @RequiredArgsConstructor -class NachrichtenMapper { +class NachrichtMapper { static final String LOCAL_PROFILE = "local"; private static final String NACHRICHTEN_LIST_URL_REGEX = "^[A-Za-z\\d-]+(\\.[A-Za-z\\d-]+){0,512}:\\d{1,5}$"; static final String NACHRICHTEN_LIST_URL_FORMAT = "dns:///%s"; diff --git a/info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtenRepository.java b/info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtRepository.java similarity index 89% rename from info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtenRepository.java rename to info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtRepository.java index 5a12932..2129f23 100644 --- a/info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtenRepository.java +++ b/info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtRepository.java @@ -25,7 +25,9 @@ import java.util.Optional; import org.bson.types.ObjectId; import org.springframework.data.mongodb.repository.MongoRepository; -interface NachrichtenRepository extends MongoRepository<NachrichtEvent, ObjectId> { +import de.ozgcloud.info.common.NachrichtEvent; + +interface NachrichtRepository extends MongoRepository<NachrichtEvent, ObjectId> { Optional<NachrichtEvent> findByPostfachIdAndNachrichtenListUrl(String postfachId, String nachrichtenListUrl); void deleteByPostfachIdAndNachrichtenListUrl(String postfachId, String nachrichtenListUrl); diff --git a/info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtenService.java b/info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtService.java similarity index 92% rename from info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtenService.java rename to info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtService.java index 65c47ae..6fbf72e 100644 --- a/info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtenService.java +++ b/info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtService.java @@ -22,12 +22,13 @@ package de.ozgcloud.info.nachricht; import org.springframework.stereotype.Service; +import de.ozgcloud.info.common.NachrichtEvent; import lombok.RequiredArgsConstructor; @Service @RequiredArgsConstructor -class NachrichtenService { - private final NachrichtenRepository repository; +class NachrichtService { + private final NachrichtRepository repository; void save(NachrichtEvent nachrichtEvent) { if (!nachrichtEventPresent(nachrichtEvent)) { diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/InfoManagerApplicationTest.java b/info-manager-server/src/test/java/de/ozgcloud/info/InfoManagerApplicationTest.java index 89e87d9..bece6d4 100644 --- a/info-manager-server/src/test/java/de/ozgcloud/info/InfoManagerApplicationTest.java +++ b/info-manager-server/src/test/java/de/ozgcloud/info/InfoManagerApplicationTest.java @@ -22,33 +22,11 @@ */ package de.ozgcloud.info; -import static org.assertj.core.api.Assertions.*; - -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.Spy; -import org.mockito.junit.jupiter.MockitoExtension; - -import de.ozgcloud.info.common.CallScope; -@ExtendWith(MockitoExtension.class) class InfoManagerApplicationTest { @Spy @InjectMocks private InfoManagerApplication application; - - @Test - void shouldCreateCallScope() { - var callScope = application.callScope(); - - assertThat(callScope).isNotNull(); - } - - @Test - void shouldCreateBeanFactoryPostProcessor() { - var beanProcessor = InfoManagerApplication.beanFactoryPostProcessor(new CallScope()); - - assertThat(beanProcessor).isNotNull(); - } } \ No newline at end of file diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/NachrichtEventTestFactory.java b/info-manager-server/src/test/java/de/ozgcloud/info/NachrichtEventTestFactory.java index a8d644c..e263d68 100644 --- a/info-manager-server/src/test/java/de/ozgcloud/info/NachrichtEventTestFactory.java +++ b/info-manager-server/src/test/java/de/ozgcloud/info/NachrichtEventTestFactory.java @@ -22,13 +22,14 @@ package de.ozgcloud.info; import org.bson.types.ObjectId; +import de.ozgcloud.info.common.NachrichtEvent; import de.ozgcloud.info.nachricht.GrpcFinishedNachrichtRequest; import de.ozgcloud.info.nachricht.GrpcNachricht; import de.ozgcloud.info.nachricht.GrpcNewNachrichtRequest; -import de.ozgcloud.info.nachricht.NachrichtEvent; public class NachrichtEventTestFactory { public static final ObjectId ID = new ObjectId(); + public static final String ID_STRING = new ObjectId().toHexString(); public static final ObjectId EMPTY_ID = new ObjectId(); public static final String POSTKORB_HANDLE = UserTestFactory.POSTKORB_HANDLE; public static final String EMPTY_POSTFACH_HANDLE = "73228744-a28a-4485-845b-d8cc02422760"; @@ -40,7 +41,7 @@ public class NachrichtEventTestFactory { public static NachrichtEvent.NachrichtEventBuilder createNachrichtEventBuilder() { return NachrichtEvent.builder() - .id(ID) + .id(ID_STRING) .postfachId(POSTKORB_HANDLE) .nachrichtenListUrl(URL); } diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/common/CallBeanFactoryPostProcessorTest.java b/info-manager-server/src/test/java/de/ozgcloud/info/common/CallBeanFactoryPostProcessorTest.java deleted file mode 100644 index 48b4390..0000000 --- a/info-manager-server/src/test/java/de/ozgcloud/info/common/CallBeanFactoryPostProcessorTest.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2023-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.info.common; - -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.Spy; -import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; - -@ExtendWith(MockitoExtension.class) -class CallBeanFactoryPostProcessorTest { - @Spy - private ConfigurableListableBeanFactory configurableListableBeanFactory; - - @Test - void shouldRegisterPostProcessBeanFactory() { - var processor = new CallBeanFactoryPostProcessor(new CallScope()); - - processor.postProcessBeanFactory(configurableListableBeanFactory); - - verify(configurableListableBeanFactory).registerScope(eq(CallScope.SCOPE_NAME), any(CallScope.class)); - } -} \ No newline at end of file diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/common/CallContextAttachingInterceptorTest.java b/info-manager-server/src/test/java/de/ozgcloud/info/common/CallContextAttachingInterceptorTest.java deleted file mode 100644 index 68aac26..0000000 --- a/info-manager-server/src/test/java/de/ozgcloud/info/common/CallContextAttachingInterceptorTest.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2023-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.info.common; - -import static org.mockito.Mockito.*; - -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; - -import io.grpc.Metadata; -import io.grpc.ServerCallHandler; - -@ExtendWith(MockitoExtension.class) -class CallContextAttachingInterceptorTest { - @InjectMocks - private CallContextAttachingInterceptor interceptor; - @Mock - private ContextService contextService; - - @Mock - ServerCallHandler<?, ?> handler; - - @Test - void shouldInterceptCall() { - interceptor.interceptCall(null, MetadataTestFactory.create(), handler); - - verify(handler).startCall(any(), any()); - } - - @Test - void shouldFillContextService() { - interceptor.interceptCall(null, MetadataTestFactory.create(), handler); - - verify(contextService).readMetadata(any(Metadata.class)); - } -} \ No newline at end of file diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/common/CallScopeTest.java b/info-manager-server/src/test/java/de/ozgcloud/info/common/CallScopeTest.java deleted file mode 100644 index 3748b3b..0000000 --- a/info-manager-server/src/test/java/de/ozgcloud/info/common/CallScopeTest.java +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright (c) 2023-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.info.common; - -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.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; -import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.beans.factory.ObjectFactory; - -@ExtendWith(MockitoExtension.class) -class CallScopeTest { - private static final String TEST = "Test"; - private static final String TEST_NEW = "TestNew"; - - @Spy - @InjectMocks - private CallScope callScope; - - @Nested - class TestFreshCallScope { - @Test - void shouldStartScope() { - callScope.startScope(); - - assertThat(CallScope.scopedObjectsHolder).isNotNull(); - assertThat(CallScope.destructionCallbacksHolder).isNotNull(); - } - - @Test - void shouldEndScope() { - callScope.endScope(); - - verify(callScope).callAllDestructionCallbacks(); - } - - @Test - void getConversationId() { - var id = callScope.getConversationId(); - - assertThat(id).isEqualTo(Thread.currentThread().getName()); - } - } - - @Nested - class TestCallScope { - @Mock - private ObjectFactory<Object> objectFactory; - - @BeforeEach - void setupEmptyCallScope() { - callScope.startScope(); - CallScope.scopedObjectsHolder.get().put(TEST, objectFactory); - } - - @Test - void shouldGetAdded() { - var newObjectFactory = mock(ObjectFactory.class); - var object = new Object(); - when(newObjectFactory.getObject()).thenReturn(object); - - var recievedObject = callScope.get(TEST_NEW, newObjectFactory); - - assertThat(recievedObject).isNotNull().isEqualTo(object); - } - - @Test - void shouldGetNullName() { - var newObjectFactory = mock(ObjectFactory.class); - - assertThatExceptionOfType(IllegalArgumentException.class).isThrownBy(() -> callScope.get(null, newObjectFactory)); - } - - @Test - void shouldGetNullFactory() { - assertThatExceptionOfType(IllegalArgumentException.class).isThrownBy(() -> callScope.get(TEST, null)); - } - - @Test - void shouldGetExisting() { - var recievedObject = callScope.get(TEST, mock(ObjectFactory.class)); - - assertThat(recievedObject).isNotNull().isEqualTo(objectFactory); - } - - @Test - void remove() { - var res = callScope.remove(TEST); - - assertThat(res).isNotNull().isEqualTo(objectFactory); - } - - @Test - void removeNull() { - assertThatExceptionOfType(IllegalArgumentException.class).isThrownBy(() -> callScope.remove(null)); - } - - @Test - void registerDestructionCallback() { - var callBack = mock(Runnable.class); - - callScope.registerDestructionCallback(TEST, callBack); - - assertThat(CallScope.destructionCallbacksHolder.get()).containsEntry(TEST, callBack); - } - - @Test - void registerDestructionCallbackNullName() { - var callBack = mock(Runnable.class); - assertThatExceptionOfType(IllegalArgumentException.class).isThrownBy(() -> callScope.registerDestructionCallback(null, callBack)); - } - - @Test - void registerDestructionCallbackNullCallback() { - assertThatExceptionOfType(IllegalArgumentException.class).isThrownBy(() -> callScope.registerDestructionCallback(TEST, null)); - } - - @Test - void resolveContextualObject() { - var contextualObject = callScope.resolveContextualObject(TEST); - - assertThat(contextualObject).isEqualTo(objectFactory); - } - - @Test - void resolveContextualObjectNullName() { - assertThatExceptionOfType(IllegalArgumentException.class).isThrownBy(() -> callScope.resolveContextualObject(null)); - } - } -} \ No newline at end of file diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/common/ContextServiceTest.java b/info-manager-server/src/test/java/de/ozgcloud/info/common/ContextServiceTest.java deleted file mode 100644 index f66260e..0000000 --- a/info-manager-server/src/test/java/de/ozgcloud/info/common/ContextServiceTest.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (c) 2023-2024. - * 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.info.common; - -import static de.ozgcloud.info.common.MetadataTestFactory.*; -import static org.assertj.core.api.Assertions.*; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InjectMocks; -import org.mockito.Spy; -import org.mockito.junit.jupiter.MockitoExtension; - -@ExtendWith(MockitoExtension.class) -class ContextServiceTest { - @Spy - @InjectMocks - private ContextService contextService; - - @Nested - class TestCallContext { - @BeforeEach - void init() { - contextService.readMetadata(MetadataTestFactory.create()); - } - - @Test - void shouldGetRequestId() { - var requestId = contextService.getRequestId(MetadataTestFactory.create()); - - assertThat(requestId).isPresent().hasValue(REQUEST_ID_BYTES); - } - - @Test - void shouldGetClientName() { - var clientName = contextService.getClientName(MetadataTestFactory.create()); - - assertThat(clientName).isPresent().hasValue(CLIENT_NAME_BYTES); - } - - @Test - void shouldGetAuthentication() { - var clientName = contextService.getAuthentication(MetadataTestFactory.create()); - - assertThat(clientName).isPresent().hasValue(SAML_TOKEN_BYTES); - } - - @Test - void shouldReadRequestAttributesRequestId() { - assertThat(contextService.getRequestAttributes().getRequestId()).isEqualTo(new String(REQUEST_ID_BYTES)); - } - - @Test - void shouldReadRequestAttributesClientName() { - assertThat(contextService.getRequestAttributes().getClientName()).isEqualTo(new String(CLIENT_NAME_BYTES)); - } - - @Test - void shouldReadRequestAttributesAuth() { - assertThat(contextService.getRequestAttributes().getSamlToken()).isEqualTo(new String(SAML_TOKEN_BYTES)); - } - } - - @Nested - class TestEmptyCallContext { - @BeforeEach - void init() { - contextService.readMetadata(MetadataTestFactory.createEmpty()); - } - - @Test - void shouldReadRequestAttributesRequestId() { - assertThat(contextService.getRequestAttributes().getRequestId()).isNotEmpty(); - } - - @Test - void shouldReadRequestAttributesClientName() { - assertThat(contextService.getRequestAttributes().getClientName()).isNull(); - } - - @Test - void shouldReadRequestAttributesSamlToken() { - assertThat(contextService.getRequestAttributes().getSamlToken()).isNull(); - } - } -} \ No newline at end of file diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/common/MetadataTestFactory.java b/info-manager-server/src/test/java/de/ozgcloud/info/common/MetadataTestFactory.java deleted file mode 100644 index a4dd887..0000000 --- a/info-manager-server/src/test/java/de/ozgcloud/info/common/MetadataTestFactory.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2023-2024. - * 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.info.common; - -import static de.ozgcloud.info.common.ContextService.*; - -import java.util.UUID; - -import io.grpc.Metadata; - -public class MetadataTestFactory { - public static byte[] CLIENT_NAME_BYTES = "ANTRAGSRAUM".getBytes(); - public static byte[] REQUEST_ID_BYTES = UUID.randomUUID().toString().getBytes(); - public static byte[] SAML_TOKEN_BYTES = UUID.randomUUID().toString().getBytes(); - - public static Metadata create() { - var metadata = new Metadata(); - metadata.put(createKeyOf(KEY_CLIENT_NAME), CLIENT_NAME_BYTES); - metadata.put(createKeyOf(KEY_REQUEST_ID), REQUEST_ID_BYTES); - metadata.put(createKeyOf(KEY_AUTHENTICATION_ID), SAML_TOKEN_BYTES); - - return metadata; - } - - public static Metadata createEmpty() { - return new Metadata(); - } - - public static Metadata.Key<byte[]> createKeyOf(String key) { - return Metadata.Key.of(key, Metadata.BINARY_BYTE_MARSHALLER); - } -} diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/infomanager/UserWithEventsConfiguration.java b/info-manager-server/src/test/java/de/ozgcloud/info/infomanager/UserWithEventsConfiguration.java deleted file mode 100644 index 033e3f7..0000000 --- a/info-manager-server/src/test/java/de/ozgcloud/info/infomanager/UserWithEventsConfiguration.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2023-2024. - * 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.info.infomanager; - -import java.util.UUID; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.test.util.ReflectionTestUtils; - -import de.ozgcloud.info.common.ContextService; -import de.ozgcloud.info.common.RequestAttributes; - -@Configuration -public class UserWithEventsConfiguration { - RequestAttributes requestAttributes() { - return RequestAttributes.builder() - .clientName("Antragsraum") - .requestId(UUID.randomUUID().toString()).build(); - } - - @Bean - ContextService contextService() { - var contextService = new ContextService(); - ReflectionTestUtils.setField(contextService, "requestAttributes", requestAttributes()); - return contextService; - } -} diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/infomanager/UserWithOutEventsConfiguration.java b/info-manager-server/src/test/java/de/ozgcloud/info/infomanager/UserWithOutEventsConfiguration.java deleted file mode 100644 index 421e007..0000000 --- a/info-manager-server/src/test/java/de/ozgcloud/info/infomanager/UserWithOutEventsConfiguration.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2023-2024. - * 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.info.infomanager; - -import java.util.UUID; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.test.util.ReflectionTestUtils; - -import de.ozgcloud.info.common.ContextService; -import de.ozgcloud.info.common.RequestAttributes; - -@Configuration -public class UserWithOutEventsConfiguration { - RequestAttributes requestAttributes() { - return RequestAttributes.builder() - .clientName("Antragsraum") - .requestId(UUID.randomUUID().toString()).build(); - } - - @Bean - ContextService contextService() { - var contextService = new ContextService(); - ReflectionTestUtils.setField(contextService, "requestAttributes", requestAttributes()); - return contextService; - } -} diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/infomanager/InformationGrpcServiceNoEventsITCase.java b/info-manager-server/src/test/java/de/ozgcloud/info/information/InformationGrpcServiceNoEventsITCase.java similarity index 91% rename from info-manager-server/src/test/java/de/ozgcloud/info/infomanager/InformationGrpcServiceNoEventsITCase.java rename to info-manager-server/src/test/java/de/ozgcloud/info/information/InformationGrpcServiceNoEventsITCase.java index 1324f1a..2074a34 100644 --- a/info-manager-server/src/test/java/de/ozgcloud/info/infomanager/InformationGrpcServiceNoEventsITCase.java +++ b/info-manager-server/src/test/java/de/ozgcloud/info/information/InformationGrpcServiceNoEventsITCase.java @@ -18,7 +18,7 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.ozgcloud.info.infomanager; +package de.ozgcloud.info.information; import static org.assertj.core.api.Assertions.*; @@ -32,7 +32,6 @@ import de.ozgcloud.info.GrpcInformationByIdRequest; import de.ozgcloud.info.GrpcInformationRequest; import de.ozgcloud.info.InformationServiceGrpc; import de.ozgcloud.info.NachrichtEventTestFactory; -import de.ozgcloud.info.SecurityConfiguration; import io.grpc.StatusRuntimeException; import net.devh.boot.grpc.client.inject.GrpcClient; @@ -41,8 +40,7 @@ import net.devh.boot.grpc.client.inject.GrpcClient; "grpc.server.port=-1", "grpc.client.inProcess.address=in-process:test" }) -@SpringJUnitConfig(classes = { UserWithOutEventsConfiguration.class, InformationGrpcTestConfiguration.class, - SecurityConfiguration.class }) +@SpringJUnitConfig(classes = { InformationGrpcTestConfiguration.class }) @DirtiesContext class InformationGrpcServiceNoEventsITCase { @GrpcClient("inProcess") diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/infomanager/InformationGrpcServiceTest.java b/info-manager-server/src/test/java/de/ozgcloud/info/information/InformationGrpcServiceTest.java similarity index 97% rename from info-manager-server/src/test/java/de/ozgcloud/info/infomanager/InformationGrpcServiceTest.java rename to info-manager-server/src/test/java/de/ozgcloud/info/information/InformationGrpcServiceTest.java index 3f5ac15..5d14144 100644 --- a/info-manager-server/src/test/java/de/ozgcloud/info/infomanager/InformationGrpcServiceTest.java +++ b/info-manager-server/src/test/java/de/ozgcloud/info/information/InformationGrpcServiceTest.java @@ -18,7 +18,7 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.ozgcloud.info.infomanager; +package de.ozgcloud.info.information; import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; @@ -43,7 +43,7 @@ import de.ozgcloud.info.GrpcInformationNachricht; import de.ozgcloud.info.GrpcInformationRequest; import de.ozgcloud.info.GrpcInformationResponse; import de.ozgcloud.info.NachrichtEventTestFactory; -import de.ozgcloud.info.nachricht.NachrichtEvent; +import de.ozgcloud.info.common.NachrichtEvent; import io.grpc.stub.StreamObserver; @ExtendWith(MockitoExtension.class) @@ -98,7 +98,7 @@ class InformationGrpcServiceTest { assertThat(response.getNachrichtenList()).hasSize(2); - var information = response.getNachrichtenList().get(0); + var information = response.getNachrichtenList().getFirst(); assertThat(information.getPostfachId()).isEqualTo(firstNachrichtEvent.getPostfachId()); assertThat(information.getOzgCloudAddress()).isEqualTo(firstNachrichtEvent.getNachrichtenListUrl()); @@ -171,7 +171,7 @@ class InformationGrpcServiceTest { var nachricht = response.getNachricht(); assertThat(nachricht).isInstanceOf(GrpcInformationNachricht.class); - assertThat(nachricht.getId()).isEqualTo(nachrichtEvent.getId().toHexString()); + assertThat(nachricht.getId()).isEqualTo(nachrichtEvent.getId()); assertThat(nachricht.getPostfachId()).isEqualTo(nachrichtEvent.getPostfachId()); assertThat(nachricht.getOzgCloudAddress()).isEqualTo(nachrichtEvent.getNachrichtenListUrl()); } diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/infomanager/InformationGrpcServiceWithEventsITCase.java b/info-manager-server/src/test/java/de/ozgcloud/info/information/InformationGrpcServiceWithEventsITCase.java similarity index 88% rename from info-manager-server/src/test/java/de/ozgcloud/info/infomanager/InformationGrpcServiceWithEventsITCase.java rename to info-manager-server/src/test/java/de/ozgcloud/info/information/InformationGrpcServiceWithEventsITCase.java index 5ff98ee..5aae56c 100644 --- a/info-manager-server/src/test/java/de/ozgcloud/info/infomanager/InformationGrpcServiceWithEventsITCase.java +++ b/info-manager-server/src/test/java/de/ozgcloud/info/information/InformationGrpcServiceWithEventsITCase.java @@ -18,7 +18,7 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.ozgcloud.info.infomanager; +package de.ozgcloud.info.information; import static org.assertj.core.api.Assertions.*; @@ -33,7 +33,6 @@ import de.ozgcloud.info.GrpcInformationNachricht; import de.ozgcloud.info.GrpcInformationRequest; import de.ozgcloud.info.InformationServiceGrpc; import de.ozgcloud.info.NachrichtEventTestFactory; -import de.ozgcloud.info.SecurityConfiguration; import net.devh.boot.grpc.client.inject.GrpcClient; @SpringBootTest(properties = { @@ -41,8 +40,7 @@ import net.devh.boot.grpc.client.inject.GrpcClient; "grpc.server.port=-1", "grpc.client.inProcess.address=in-process:test" }) -@SpringJUnitConfig(classes = { UserWithEventsConfiguration.class, InformationGrpcTestConfiguration.class, - SecurityConfiguration.class }) +@SpringJUnitConfig(classes = { InformationGrpcTestConfiguration.class }) @DirtiesContext class InformationGrpcServiceWithEventsITCase { @GrpcClient("inProcess") @@ -57,7 +55,7 @@ class InformationGrpcServiceWithEventsITCase { var values = response.getNachrichtenList(); assertThat(values).hasSize(1); - assertThat(values.get(0).getPostfachId()).isEqualTo(NachrichtEventTestFactory.POSTKORB_HANDLE); + assertThat(values.getFirst().getPostfachId()).isEqualTo(NachrichtEventTestFactory.POSTKORB_HANDLE); } } diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/infomanager/InformationGrpcTestConfiguration.java b/info-manager-server/src/test/java/de/ozgcloud/info/information/InformationGrpcTestConfiguration.java similarity index 94% rename from info-manager-server/src/test/java/de/ozgcloud/info/infomanager/InformationGrpcTestConfiguration.java rename to info-manager-server/src/test/java/de/ozgcloud/info/information/InformationGrpcTestConfiguration.java index 8c04d96..269cf96 100644 --- a/info-manager-server/src/test/java/de/ozgcloud/info/infomanager/InformationGrpcTestConfiguration.java +++ b/info-manager-server/src/test/java/de/ozgcloud/info/information/InformationGrpcTestConfiguration.java @@ -18,20 +18,18 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.ozgcloud.info.infomanager; +package de.ozgcloud.info.information; import static org.mockito.Mockito.*; import java.util.List; import java.util.NoSuchElementException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import de.ozgcloud.info.NachrichtEventTestFactory; -import de.ozgcloud.info.common.ContextService; import lombok.extern.log4j.Log4j2; import net.devh.boot.grpc.client.autoconfigure.GrpcClientAutoConfiguration; import net.devh.boot.grpc.client.autoconfigure.GrpcClientTraceAutoConfiguration; @@ -52,8 +50,6 @@ import net.devh.boot.grpc.server.autoconfigure.GrpcServerSecurityAutoConfigurati GrpcClientAutoConfiguration.class, GrpcClientTraceAutoConfiguration.class }) public class InformationGrpcTestConfiguration { - @Autowired - ContextService contextService; @Bean InformationService informationService() { diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/infomanager/InformationMapperTest.java b/info-manager-server/src/test/java/de/ozgcloud/info/information/InformationMapperTest.java similarity index 93% rename from info-manager-server/src/test/java/de/ozgcloud/info/infomanager/InformationMapperTest.java rename to info-manager-server/src/test/java/de/ozgcloud/info/information/InformationMapperTest.java index a7ca16d..a723973 100644 --- a/info-manager-server/src/test/java/de/ozgcloud/info/infomanager/InformationMapperTest.java +++ b/info-manager-server/src/test/java/de/ozgcloud/info/information/InformationMapperTest.java @@ -18,7 +18,7 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.ozgcloud.info.infomanager; +package de.ozgcloud.info.information; import static org.assertj.core.api.Assertions.*; @@ -26,7 +26,7 @@ import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import de.ozgcloud.info.NachrichtEventTestFactory; -import de.ozgcloud.info.nachricht.NachrichtEvent; +import de.ozgcloud.info.common.NachrichtEvent; class InformationMapperTest { @Nested @@ -37,7 +37,7 @@ class InformationMapperTest { void shouldHaveId() { var grpcInformationNachricht = InformationMapper.fromNachrichtEvent(nachrichtEvent); - assertThat(grpcInformationNachricht.getId()).isEqualTo(NachrichtEventTestFactory.ID.toHexString()); + assertThat(grpcInformationNachricht.getId()).isEqualTo(NachrichtEventTestFactory.ID_STRING); } @Test diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/infomanager/InformationRepositoryITCase.java b/info-manager-server/src/test/java/de/ozgcloud/info/information/InformationRepositoryITCase.java similarity index 98% rename from info-manager-server/src/test/java/de/ozgcloud/info/infomanager/InformationRepositoryITCase.java rename to info-manager-server/src/test/java/de/ozgcloud/info/information/InformationRepositoryITCase.java index 5aa7748..dbd3b39 100644 --- a/info-manager-server/src/test/java/de/ozgcloud/info/infomanager/InformationRepositoryITCase.java +++ b/info-manager-server/src/test/java/de/ozgcloud/info/information/InformationRepositoryITCase.java @@ -18,7 +18,7 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.ozgcloud.info.infomanager; +package de.ozgcloud.info.information; import static org.assertj.core.api.Assertions.*; diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/infomanager/InformationServiceTest.java b/info-manager-server/src/test/java/de/ozgcloud/info/information/InformationServiceTest.java similarity index 89% rename from info-manager-server/src/test/java/de/ozgcloud/info/infomanager/InformationServiceTest.java rename to info-manager-server/src/test/java/de/ozgcloud/info/information/InformationServiceTest.java index 7c64510..b3f7205 100644 --- a/info-manager-server/src/test/java/de/ozgcloud/info/infomanager/InformationServiceTest.java +++ b/info-manager-server/src/test/java/de/ozgcloud/info/information/InformationServiceTest.java @@ -21,7 +21,7 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.ozgcloud.info.infomanager; +package de.ozgcloud.info.information; import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; @@ -39,7 +39,7 @@ import org.mockito.Spy; import org.mockito.junit.jupiter.MockitoExtension; import de.ozgcloud.info.NachrichtEventTestFactory; -import de.ozgcloud.info.nachricht.NachrichtEvent; +import de.ozgcloud.info.common.NachrichtEvent; @ExtendWith(MockitoExtension.class) class InformationServiceTest { @@ -56,12 +56,12 @@ class InformationServiceTest { @BeforeEach void init() { - when(repository.findById(NachrichtEventTestFactory.ID)).thenReturn(Optional.of(nachrichtEvent)); + when(repository.findById(NachrichtEventTestFactory.ID_STRING)).thenReturn(Optional.of(nachrichtEvent)); } @Test void shouldReturnInformation() { - var information = service.getInformationById(NachrichtEventTestFactory.ID.toHexString()); + var information = service.getInformationById(NachrichtEventTestFactory.ID_STRING); assertThat(information).isEqualTo(nachrichtEvent); } @@ -81,7 +81,7 @@ class InformationServiceTest { var information = service.getInformationOfPostfach(NachrichtEventTestFactory.POSTKORB_HANDLE); assertThat(information).hasSize(1); - assertThat(information.get(0)).isEqualTo(nachrichtEvent); + assertThat(information.getFirst()).isEqualTo(nachrichtEvent); } } } diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenGrpcServiceITCase.java b/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenGrpcServiceITCase.java index f255947..93025e8 100644 --- a/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenGrpcServiceITCase.java +++ b/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenGrpcServiceITCase.java @@ -20,7 +20,7 @@ package de.ozgcloud.info.nachricht; -import static de.ozgcloud.info.nachricht.NachrichtenGrpcService.*; +import static de.ozgcloud.info.nachricht.NachrichtGrpcService.*; import static org.assertj.core.api.Assertions.*; import org.junit.jupiter.api.Nested; @@ -30,7 +30,6 @@ import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; import de.ozgcloud.info.NachrichtEventTestFactory; -import de.ozgcloud.info.SecurityConfiguration; import net.devh.boot.grpc.client.inject.GrpcClient; @SpringBootTest(properties = { @@ -38,7 +37,7 @@ import net.devh.boot.grpc.client.inject.GrpcClient; "grpc.server.port=-1", "grpc.client.inProcess.address=in-process:test" }) -@SpringJUnitConfig(classes = { NachrichtenGrpcTestConfiguration.class, SecurityConfiguration.class }) +@SpringJUnitConfig(classes = { NachrichtenGrpcTestConfiguration.class }) @DirtiesContext class NachrichtenGrpcServiceITCase { diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenGrpcServiceTest.java b/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenGrpcServiceTest.java index 03ab5bf..28c2b0d 100644 --- a/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenGrpcServiceTest.java +++ b/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenGrpcServiceTest.java @@ -38,19 +38,20 @@ import org.mockito.junit.jupiter.MockitoExtension; import de.ozgcloud.info.NachrichtEventTestFactory; import de.ozgcloud.info.common.InvalidNachrichtenListUrlException; +import de.ozgcloud.info.common.NachrichtEvent; import io.grpc.stub.StreamObserver; @ExtendWith(MockitoExtension.class) class NachrichtenGrpcServiceTest { @Spy @InjectMocks - private NachrichtenGrpcService nachrichtenGrpcService; + private NachrichtGrpcService nachrichtenGrpcService; @Mock - private NachrichtenService nachrichtenService; + private NachrichtService nachrichtenService; @Mock - private NachrichtenMapper nachrichtenMapper; + private NachrichtMapper nachrichtenMapper; @Captor private ArgumentCaptor<NachrichtEvent> nachrichtArgumentCaptor; diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenGrpcTestConfiguration.java b/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenGrpcTestConfiguration.java index 34ec18c..daac2ed 100644 --- a/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenGrpcTestConfiguration.java +++ b/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenGrpcTestConfiguration.java @@ -39,22 +39,22 @@ import net.devh.boot.grpc.server.autoconfigure.GrpcServerFactoryAutoConfiguratio GrpcClientAutoConfiguration.class }) class NachrichtenGrpcTestConfiguration { @Bean - NachrichtenService nachrichtenService() { - return mock(NachrichtenService.class); + NachrichtService nachrichtenService() { + return mock(NachrichtService.class); } @Bean - NachrichtenRepository nachrichtenRepository() { - return mock(NachrichtenRepository.class); + NachrichtRepository nachrichtenRepository() { + return mock(NachrichtRepository.class); } @Bean - NachrichtenMapper nachrichtenMapper() { - return mock(NachrichtenMapper.class); + NachrichtMapper nachrichtenMapper() { + return mock(NachrichtMapper.class); } @Bean - NachrichtenGrpcService nachrichtenGrpcService() { - return new NachrichtenGrpcService(nachrichtenService(), nachrichtenMapper()); + NachrichtGrpcService nachrichtenGrpcService() { + return new NachrichtGrpcService(nachrichtenService(), nachrichtenMapper()); } } diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenMapperTest.java b/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenMapperTest.java index 2ec9d34..958b023 100644 --- a/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenMapperTest.java +++ b/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenMapperTest.java @@ -20,7 +20,7 @@ package de.ozgcloud.info.nachricht; -import static de.ozgcloud.info.nachricht.NachrichtenMapper.*; +import static de.ozgcloud.info.nachricht.NachrichtMapper.*; import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; @@ -44,7 +44,7 @@ import de.ozgcloud.info.common.InvalidNachrichtenListUrlException; class NachrichtenMapperTest { @Spy @InjectMocks - private NachrichtenMapper nachrichtenMapper; + private NachrichtMapper nachrichtenMapper; @Mock private Environment environment; diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenRepositoryITCase.java b/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenRepositoryITCase.java index 9b0ac2b..af036d0 100644 --- a/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenRepositoryITCase.java +++ b/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenRepositoryITCase.java @@ -33,13 +33,14 @@ import org.testcontainers.junit.jupiter.Testcontainers; import de.ozgcloud.info.MongoDBTestContainerConfig; import de.ozgcloud.info.NachrichtEventTestFactory; +import de.ozgcloud.info.common.NachrichtEvent; @DataMongoTest @Testcontainers @ContextConfiguration(classes = MongoDBTestContainerConfig.class) public class NachrichtenRepositoryITCase { @Autowired - private NachrichtenRepository repository; + private NachrichtRepository repository; @Nested class TestNewNachrichtEvent { diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenServiceTest.java b/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenServiceTest.java index ea8c1fd..38d8a14 100644 --- a/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenServiceTest.java +++ b/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenServiceTest.java @@ -38,15 +38,16 @@ import org.mockito.Spy; import org.mockito.junit.jupiter.MockitoExtension; import de.ozgcloud.info.NachrichtEventTestFactory; +import de.ozgcloud.info.common.NachrichtEvent; @ExtendWith(MockitoExtension.class) class NachrichtenServiceTest { @Spy @InjectMocks - private NachrichtenService service; + private NachrichtService service; @Mock - private NachrichtenRepository repository; + private NachrichtRepository repository; @Nested class TestAddingNewNachrichtEvent { diff --git a/info-manager-server/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/info-manager-server/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension new file mode 100644 index 0000000..79b126e --- /dev/null +++ b/info-manager-server/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension @@ -0,0 +1 @@ +org.mockito.junit.jupiter.MockitoExtension \ No newline at end of file diff --git a/info-manager-server/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker b/info-manager-server/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker new file mode 100644 index 0000000..ca6ee9c --- /dev/null +++ b/info-manager-server/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker @@ -0,0 +1 @@ +mock-maker-inline \ No newline at end of file diff --git a/release-erstellen.sh b/release-erstellen.sh index 8fac40d..6275997 100644 --- a/release-erstellen.sh +++ b/release-erstellen.sh @@ -1,4 +1,22 @@ -VERSION=1.2.0 +#!/bin/sh + +if [ "$#" -ne 1 ]; then + echo "Aufruf: release-erstellen.sh JA" + echo "Als Parameter bitte 'JA' eintragen zur Sicherheit" + exit 1 +fi + + +## alle -SNAPSHOT in pom.xmls entfernen +SED_PARAMS="-i" +if [[ "$OSTYPE" =~ ^darwin ]]; then + SED_PARAMS="$SED_PARAMS '' -e" +fi +find . -name pom.xml -exec sed $SED_PARAMS 's/-SNAPSHOT//g' {} + + +## release version auslesen +NEWVERSION=$(xmlstarlet sel -N w="http://maven.apache.org/POM/4.0.0" -t -v '//w:project/w:version' -n pom.xml) + git checkout dev git pull git checkout release @@ -6,12 +24,24 @@ git pull git merge dev # Die Version von `"X.X.X-SNAPSHOT"` auf `"X.X.X"` ändern -find . -name pom.xml | xargs perl -i -p -e"s/${VERSION}-SNAPSHOT/$VERSION/g" +find . -name pom.xml | xargs perl -i -p -e"s/${NEWVERSION}-SNAPSHOT/$NEWVERSION/g" -git commit -am "release version $VERSION" -git push -git tag $VERSION -git push origin $VERSION +echo +echo "NEXT STEPS:" +echo "***********" +echo "Änderungen prüfen" +echo "git commit -a -m 'release version "$NEWVERSION"'" +echo "git push" +echo "git tag "$NEWVERSION +echo "git push --tags" +echo "git checkout dev" +echo "git merge release" -git checkout dev -git merge release +# to do by script +#git commit -am "release version $NEWVERSION" +#git push +#git tag $VERSION +#git push origin $VERSION + +#git checkout dev +#git merge release diff --git a/release-startdev.sh b/release-startdev.sh index be21f74..0a09730 100644 --- a/release-startdev.sh +++ b/release-startdev.sh @@ -1,6 +1,52 @@ -NEXTVERSION=X.X+1.X -# Die Version im dev branch von `"X.X.X"` auf `"X.X+1.X-SNAPSHOT"` ändern -find . -name pom.xml | xargs perl -i -p -e"s/$VERSION/${NEXTVERSION}-SNAPSHOT/g" +#!/bin/bash -git commit -am "start development $NEXTVERSION" -git push +#set -x + +if [ "$#" -ne 1 ]; then + echo "Aufruf: release-startdev.sh NEWVERSION" + exit 1 +fi + +NEWVERSION=$1 + +echo + +# pom.xml:main -> project.version setzen +# projectname/pom.xml:parent -> project.parent.version setzen +# projectname/pom.xml:parent,main -> project.parent.version und project.version setzen +# +PROJECTS="pom.xml:main + server/pom.xml:main + " + +for PROJECT in $PROJECTS; +do + POMFILE=$(echo $PROJECT | cut -d':' -f1) + ACTIONS=$(echo $PROJECT | cut -d':' -f2) + + ## Auf SNAPSHOT Versionen testen + if fgrep -q "SNAPSHOT" $POMFILE; then + RED='\033[0;31m' + NC='\033[0m' + echo "${RED}ERROR: Datei "$POMFILE" enthält noch SNAPSHOT Versionen, das sollte hier nicht passieren.${NC}" + exit 1 + fi +echo $ACTIONS + ## Versionen setzen + if [[ $ACTIONS == "main" ]] ; then + xmlstarlet ed --pf -L -N w="http://maven.apache.org/POM/4.0.0" -u '//w:project/w:version' -v $NEWVERSION $POMFILE + fi + + if [[ $ACTIONS == "parent" ]]; then + xmlstarlet ed --pf -L -N w="http://maven.apache.org/POM/4.0.0" -u '//w:project/w:parent/w:version' -v $NEWVERSION $POMFILE + fi +done + + + +echo +echo "NEXT STEPS:" +echo "***********" +echo "Änderungen prüfen" +echo "git commit -a -m 'start development "$NEWVERSION"'" +echo "git push" -- GitLab