diff --git a/pom.xml b/pom.xml index 158cc555c04aed1935dfabe2a0d0f4d838a3705f..82bd7e541891e7e21bddc42a689e9366efc5c4fb 100644 --- a/pom.xml +++ b/pom.xml @@ -35,7 +35,7 @@ <modelVersion>4.0.0</modelVersion> <groupId>de.ozgcloud.zufi</groupId> <artifactId>zufi-manager</artifactId> - <version>1.4.0-SNAPSHOT</version> + <version>1.5.0-SNAPSHOT</version> <name>OZG-Cloud Zufi Manager</name> <packaging>pom</packaging> diff --git a/src/main/helm/zufi-server/templates/network_policy.yaml b/src/main/helm/zufi-server/templates/network_policy.yaml index 4e3584ed3537141ad45315c0b27bc6a9d345dc02..d3c720bd0036eb1f065cdee63e6bd28785e633de 100644 --- a/src/main/helm/zufi-server/templates/network_policy.yaml +++ b/src/main/helm/zufi-server/templates/network_policy.yaml @@ -40,7 +40,7 @@ spec: - port: 9090 from: - namespaceSelector: {} - - podSelector: + podSelector: matchLabels: component: vorgang-manager - ports: diff --git a/src/test/helm/zufi-server/network_policy_test.yaml b/src/test/helm/zufi-server/network_policy_test.yaml index 6a588b2548567836a3ebe0f556f0050f61fc4a45..3031905ada3f50776e72566358b9c23db726f8ec 100644 --- a/src/test/helm/zufi-server/network_policy_test.yaml +++ b/src/test/helm/zufi-server/network_policy_test.yaml @@ -91,7 +91,7 @@ tests: ingress: - from: - namespaceSelector: {} - - podSelector: + podSelector: matchLabels: component: vorgang-manager ports: diff --git a/zufi-manager-interface/pom.xml b/zufi-manager-interface/pom.xml index 9824dd9ccfd5a1b1b2d1ee764b3743a3a3e166a4..5a4d2988ef19b40223571d61135af5367d2f16f5 100644 --- a/zufi-manager-interface/pom.xml +++ b/zufi-manager-interface/pom.xml @@ -30,7 +30,7 @@ <parent> <groupId>de.ozgcloud.common</groupId> <artifactId>ozgcloud-common-dependencies</artifactId> - <version>4.4.0-PR-25-SNAPSHOT</version> + <version>4.5.0-SNAPSHOT</version> <relativePath/> </parent> diff --git a/zufi-manager-interface/src/main/protobuf/fachstelle.model.proto b/zufi-manager-interface/src/main/protobuf/fachstelle.model.proto index f4b933618dd8fe8063f9cd0bfbaba80560f96384..c4c25647fcd4db5f394e021b6f00860be7feafee 100644 --- a/zufi-manager-interface/src/main/protobuf/fachstelle.model.proto +++ b/zufi-manager-interface/src/main/protobuf/fachstelle.model.proto @@ -2,8 +2,6 @@ syntax = "proto3"; package de.ozgcloud.zufi.grpc.fachstelle; -import "fachstelleregistration.model.proto"; - option java_multiple_files = true; option java_package = "de.ozgcloud.zufi.grpc.fachstelle"; option java_outer_classname = "FachstelleModelProto"; @@ -14,4 +12,24 @@ message GrpcFachstelleSearchRequest { message GrpcFachstelleSearchResponse { repeated GrpcFachstelle fachstellen = 1; +} + +message GrpcFachstelleGetRequest { + string id = 1; +} + +message GrpcFachstelleGetResponse { + GrpcFachstelle fachstelle = 1; +} + +message GrpcFachstelle { + string id = 1; + string mukId = 2; + string firmenName = 3; + string rechtsform = 4; + string rechtsformText = 5; + string registerNummer = 6; + string registerArt = 7; + string emailAdresse = 8; + string anschrift = 9; } \ No newline at end of file diff --git a/zufi-manager-interface/src/main/protobuf/fachstelle.proto b/zufi-manager-interface/src/main/protobuf/fachstelle.proto index 672d2d0ab8db808dfc1459be1000f880d14aa520..21e7990aa5403021c8beebf7944bec29c4269274 100644 --- a/zufi-manager-interface/src/main/protobuf/fachstelle.proto +++ b/zufi-manager-interface/src/main/protobuf/fachstelle.proto @@ -10,4 +10,6 @@ option java_outer_classname = "FachstelleProto"; service FachstelleService { rpc Search(GrpcFachstelleSearchRequest) returns (GrpcFachstelleSearchResponse); + + rpc GetById(GrpcFachstelleGetRequest) returns (GrpcFachstelleGetResponse); } \ No newline at end of file diff --git a/zufi-manager-interface/src/main/protobuf/fachstelleregistration.model.proto b/zufi-manager-interface/src/main/protobuf/fachstelleregistration.model.proto index 935b53fd251bd62fd81076b16e715da27b6dbf57..971166513d388a766b29c946ebf33dbf20f06d83 100644 --- a/zufi-manager-interface/src/main/protobuf/fachstelleregistration.model.proto +++ b/zufi-manager-interface/src/main/protobuf/fachstelleregistration.model.proto @@ -7,14 +7,6 @@ option java_package = "de.ozgcloud.zufi.grpc.fachstelle"; option java_outer_classname = "FachstelleRegistrationModelProto"; message GrpcFachstelleRegistrationRequest { - GrpcFachstelle fachstelle = 1; -} - -message GrpcFachstelleRegistrationResponse { - -} - -message GrpcFachstelle { string mukId = 1; string firmenName = 2; string rechtsform = 3; @@ -23,4 +15,8 @@ message GrpcFachstelle { string registerArt = 6; string emailAdresse = 7; string anschrift = 8; +} + +message GrpcFachstelleRegistrationResponse { + } \ No newline at end of file diff --git a/zufi-manager-interface/src/main/protobuf/organisationseinheit.model.proto b/zufi-manager-interface/src/main/protobuf/organisationseinheit.model.proto index 576888a3c60f61321f7e05dccd71a584a447c22d..01eb49d57010bca80ccd6b855b41eafbc0dd71f6 100644 --- a/zufi-manager-interface/src/main/protobuf/organisationseinheit.model.proto +++ b/zufi-manager-interface/src/main/protobuf/organisationseinheit.model.proto @@ -23,6 +23,14 @@ message GrpcOrganisationsEinheitSearchResponse { repeated GrpcOrganisationsEinheit organisationsEinheiten = 1; } +message GrpcGetByOrganisationsEinheitIdRequest { + string organisationsEinheitId = 1; +} + +message GrpcGetByOrganisationsEinheitIdResponse { + repeated GrpcOrganisationsEinheit organisationsEinheiten = 1; +} + message GrpcOrganisationsEinheit { string id = 1; string name = 2; diff --git a/zufi-manager-interface/src/main/protobuf/organisationseinheit.proto b/zufi-manager-interface/src/main/protobuf/organisationseinheit.proto index 4e3f7d0e2f0ad413d1c37711eb65189f878823a0..37beb2f7e953effd18c3f667d2d74f800802366f 100644 --- a/zufi-manager-interface/src/main/protobuf/organisationseinheit.proto +++ b/zufi-manager-interface/src/main/protobuf/organisationseinheit.proto @@ -12,4 +12,6 @@ service OrganisationsEinheitService { rpc Search(GrpcOrganisationsEinheitSearchRequest) returns (GrpcOrganisationsEinheitSearchResponse); rpc GetById(GrpcOrganisationsEinheitGetRequest) returns (GrpcOrganisationsEinheitGetResponse); + + rpc GetByOrganisationsEinheitId(GrpcGetByOrganisationsEinheitIdRequest) returns (GrpcGetByOrganisationsEinheitIdResponse); } \ No newline at end of file diff --git a/zufi-manager-model/pom.xml b/zufi-manager-model/pom.xml index 32c27491998c05c9813eb70a6b64c562d5ef678b..803549705af7c3a7c70024963a689f489b1f00ef 100644 --- a/zufi-manager-model/pom.xml +++ b/zufi-manager-model/pom.xml @@ -4,7 +4,7 @@ <parent> <groupId>de.ozgcloud.zufi</groupId> <artifactId>zufi-manager</artifactId> - <version>1.4.0-SNAPSHOT</version> + <version>1.5.0-SNAPSHOT</version> </parent> <artifactId>zufi-manager-model</artifactId> <name>OZG-Cloud Zufi Manager Model</name> diff --git a/zufi-manager-model/src/main/java/de/ozgcloud/zufi/fachstelle/Fachstelle.java b/zufi-manager-model/src/main/java/de/ozgcloud/zufi/fachstelle/Fachstelle.java index 5a308861c97e9446ed765ad549cbac35644a2f88..4a4f8a455997ae33de963f4dc72042c2f92b82ba 100644 --- a/zufi-manager-model/src/main/java/de/ozgcloud/zufi/fachstelle/Fachstelle.java +++ b/zufi-manager-model/src/main/java/de/ozgcloud/zufi/fachstelle/Fachstelle.java @@ -3,6 +3,7 @@ package de.ozgcloud.zufi.fachstelle; import jakarta.validation.constraints.NotBlank; import org.springframework.data.annotation.Id; +import org.springframework.data.annotation.TypeAlias; import org.springframework.data.mongodb.core.index.Indexed; import org.springframework.data.mongodb.core.index.TextIndexed; import org.springframework.data.mongodb.core.mapping.Document; @@ -18,6 +19,7 @@ import lombok.extern.jackson.Jacksonized; @Jacksonized @Document(language = "german") @ToString +@TypeAlias("Fachstelle") public class Fachstelle { @Id diff --git a/zufi-manager-model/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheit.java b/zufi-manager-model/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheit.java index 294f23a5925c827097ee3823a5de24a31b651937..2d32cc53a18426f04fe38573e0135e3ecf858265 100644 --- a/zufi-manager-model/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheit.java +++ b/zufi-manager-model/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheit.java @@ -4,6 +4,7 @@ import java.util.HashSet; import java.util.Set; import org.springframework.data.annotation.Id; +import org.springframework.data.annotation.TypeAlias; import org.springframework.data.mongodb.core.index.CompoundIndex; import org.springframework.data.mongodb.core.index.HashIndexed; import org.springframework.data.mongodb.core.index.TextIndexed; @@ -19,6 +20,7 @@ import lombok.extern.jackson.Jacksonized; @Jacksonized @Document(language = "german") @CompoundIndex(name = "organisationseinheit_id", def = "{ 'xzufiId.id': 1 }") +@TypeAlias("OrganisationsEinheit") public class OrganisationsEinheit { @Id diff --git a/zufi-manager-model/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitRepository.java b/zufi-manager-model/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitRepository.java index ffbe6e8ed7e1ab1e65a4cde9ed1efe5977845f13..d955223267a4081db86584a8015db72f599fc6fa 100644 --- a/zufi-manager-model/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitRepository.java +++ b/zufi-manager-model/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitRepository.java @@ -28,6 +28,7 @@ import java.util.Optional; import org.springframework.data.mongodb.core.query.TextCriteria; import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.data.mongodb.repository.Query; import org.springframework.stereotype.Repository; @Repository @@ -54,4 +55,9 @@ interface OrganisationsEinheitRepository extends MongoRepository<OrganisationsEi default TextCriteria buildTextCriteria(String text) { return TextCriteria.forDefaultLanguage().matching(text); } + + @Query("{ 'xzufiId._id': ?0 }") + List<OrganisationsEinheit> findByOrganisationsEinheitId(String organisationsEinheitId); } + + diff --git a/zufi-manager-model/src/test/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitRepositoryITCase.java b/zufi-manager-model/src/test/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitRepositoryITCase.java index 144dbecb9fe0837c883a73860a3baa5898a260ae..911827bd834ef0ce054265dd9766c63d066608c0 100644 --- a/zufi-manager-model/src/test/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitRepositoryITCase.java +++ b/zufi-manager-model/src/test/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitRepositoryITCase.java @@ -4,6 +4,7 @@ import static org.assertj.core.api.Assertions.*; import java.util.Optional; import java.util.Set; +import java.util.UUID; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; @@ -241,4 +242,37 @@ class OrganisationsEinheitRepositoryITCase { .containsExactly(organisationsEinheit1, organisationsEinheit3, organisationsEinheit2); } } + + @Nested + class TestFindByOrganisationsEinheitId { + + public static final String ORGANISATIONS_EINHEIT_ID = OrganisationsEinheitTestFactory.XZUFI_ID.getId(); + + private final OrganisationsEinheit organisationsEinheit1 = OrganisationsEinheitTestFactory.createBuilder() + .id(null) + .xzufiId(XzufiId.builder().id(ORGANISATIONS_EINHEIT_ID).schemeAgencyId(UUID.randomUUID().toString()).build()) + .build(); + private final OrganisationsEinheit organisationsEinheit2 = OrganisationsEinheitTestFactory.createBuilder() + .id(null) + .xzufiId(XzufiId.builder().id(UUID.randomUUID().toString()).schemeAgencyId(UUID.randomUUID().toString()).build()) + .build(); + private final OrganisationsEinheit organisationsEinheit3 = OrganisationsEinheitTestFactory.createBuilder() + .id(null) + .xzufiId(XzufiId.builder().id(ORGANISATIONS_EINHEIT_ID).schemeAgencyId(UUID.randomUUID().toString()).build()) + .build(); + + @BeforeEach + void initDatabase() { + repository.save(organisationsEinheit1); + repository.save(organisationsEinheit2); + repository.save(organisationsEinheit3); + } + + @Test + void shouldFindAllOrganisationsEinheitenWithId() { + var result = repository.findByOrganisationsEinheitId(ORGANISATIONS_EINHEIT_ID); + + assertThat(result).usingRecursiveFieldByFieldElementComparatorIgnoringFields("id").containsExactlyInAnyOrder(organisationsEinheit1, organisationsEinheit3); + } + } } diff --git a/zufi-manager-pvog/pom.xml b/zufi-manager-pvog/pom.xml index 9540b353b5597ae7eac1b3942628e88bb5400092..5d8be8d34fd4d874148c082b64dca0a3a6d193d2 100644 --- a/zufi-manager-pvog/pom.xml +++ b/zufi-manager-pvog/pom.xml @@ -5,7 +5,7 @@ <parent> <groupId>de.ozgcloud.zufi</groupId> <artifactId>zufi-manager</artifactId> - <version>1.4.0-SNAPSHOT</version> + <version>1.5.0-SNAPSHOT</version> </parent> <artifactId>zufi-manager-pvog</artifactId> diff --git a/zufi-manager-pvog/src/main/java/de/ozgcloud/zufi/metadocument/MetaDocument.java b/zufi-manager-pvog/src/main/java/de/ozgcloud/zufi/metadocument/MetaDocument.java index e4a2602e298a61c275508e693ac17ca2b6aba851..a01d07b84b80ad7fcf7b2bd04af6c7c2b58ab37b 100644 --- a/zufi-manager-pvog/src/main/java/de/ozgcloud/zufi/metadocument/MetaDocument.java +++ b/zufi-manager-pvog/src/main/java/de/ozgcloud/zufi/metadocument/MetaDocument.java @@ -24,6 +24,7 @@ package de.ozgcloud.zufi.metadocument; import org.springframework.data.annotation.Id; +import org.springframework.data.annotation.TypeAlias; import org.springframework.data.mongodb.core.mapping.Document; import lombok.Builder; @@ -34,6 +35,7 @@ import lombok.extern.jackson.Jacksonized; @Getter @Jacksonized @Document +@TypeAlias("MetaDocument") public class MetaDocument { @Id private String id; diff --git a/zufi-manager-server/pom.xml b/zufi-manager-server/pom.xml index 8a47e89a5c92e1a32f33ed5e6aad7cb79e1fad31..7b8f935df45300762cc184173ba040a50bc698a0 100644 --- a/zufi-manager-server/pom.xml +++ b/zufi-manager-server/pom.xml @@ -30,7 +30,7 @@ <parent> <groupId>de.ozgcloud.zufi</groupId> <artifactId>zufi-manager</artifactId> - <version>1.4.0-SNAPSHOT</version> + <version>1.5.0-SNAPSHOT</version> </parent> <artifactId>zufi-manager-server</artifactId> diff --git a/zufi-manager-server/src/main/java/de/ozgcloud/zufi/common/errorhandling/GrpcExceptionHandlers.java b/zufi-manager-server/src/main/java/de/ozgcloud/zufi/common/errorhandling/GrpcExceptionHandlers.java index 929bb22881f990000d4d70b711eb5d0af2a728d3..5bc170f4b23b73901ed29dca59a4956cafc0e526 100644 --- a/zufi-manager-server/src/main/java/de/ozgcloud/zufi/common/errorhandling/GrpcExceptionHandlers.java +++ b/zufi-manager-server/src/main/java/de/ozgcloud/zufi/common/errorhandling/GrpcExceptionHandlers.java @@ -43,11 +43,11 @@ public class GrpcExceptionHandlers { static final String KEY_EXCEPTION_ID = "EXCEPTION_ID"; @GrpcExceptionHandler - public StatusException handleOrganisationsEinheitNotFoundException(OrganisationsEinheitNotFoundException e) { + public StatusException handleResourceNotFoundException(ResourceNotFoundException e) { return new StatusException(buildNotFoundStatus(e), buildMetadata(e.getExceptionId())); } - private Status buildNotFoundStatus(OrganisationsEinheitNotFoundException e) { + private Status buildNotFoundStatus(ResourceNotFoundException e) { return Status.NOT_FOUND.withDescription(e.getMessage()).withCause(e.getCause()); } diff --git a/zufi-manager-server/src/main/java/de/ozgcloud/zufi/common/errorhandling/OrganisationsEinheitNotFoundException.java b/zufi-manager-server/src/main/java/de/ozgcloud/zufi/common/errorhandling/OrganisationsEinheitNotFoundException.java deleted file mode 100644 index 35f4c47477a327f359052222ce691a5350dc8f24..0000000000000000000000000000000000000000 --- a/zufi-manager-server/src/main/java/de/ozgcloud/zufi/common/errorhandling/OrganisationsEinheitNotFoundException.java +++ /dev/null @@ -1,19 +0,0 @@ -package de.ozgcloud.zufi.common.errorhandling; - -import de.ozgcloud.common.errorhandling.TechnicalException; - -public class OrganisationsEinheitNotFoundException extends TechnicalException { - private static final String NOT_FOUND_MESSAGE = "OrganisationseinheitID %s could not be found."; - - public OrganisationsEinheitNotFoundException(String organisationsEinheitId) { - super(buildMessage(organisationsEinheitId)); - } - - public OrganisationsEinheitNotFoundException(String organisationsEinheitId, Throwable cause) { - super(buildMessage(organisationsEinheitId), cause); - } - - private static String buildMessage(String organisationsEinheitId) { - return String.format(NOT_FOUND_MESSAGE, organisationsEinheitId); - } -} diff --git a/zufi-manager-server/src/main/java/de/ozgcloud/zufi/common/errorhandling/ResourceNotFoundException.java b/zufi-manager-server/src/main/java/de/ozgcloud/zufi/common/errorhandling/ResourceNotFoundException.java new file mode 100644 index 0000000000000000000000000000000000000000..dddfad1e07ca64eddacd2f557e9cf33f7506fda0 --- /dev/null +++ b/zufi-manager-server/src/main/java/de/ozgcloud/zufi/common/errorhandling/ResourceNotFoundException.java @@ -0,0 +1,19 @@ +package de.ozgcloud.zufi.common.errorhandling; + +import de.ozgcloud.common.errorhandling.TechnicalException; + +public class ResourceNotFoundException extends TechnicalException { + private static final String NOT_FOUND_MESSAGE = "%s with ID %s could not be found"; + + public ResourceNotFoundException(String resourceId, String resourceName) { + super(buildMessage(resourceId, resourceName)); + } + + public ResourceNotFoundException(String resourceId, String resourceName, Throwable cause) { + super(buildMessage(resourceId, resourceName), cause); + } + + private static String buildMessage(String resourceId, String resourceName) { + return String.format(NOT_FOUND_MESSAGE, resourceName, resourceId); + } +} diff --git a/zufi-manager-server/src/main/java/de/ozgcloud/zufi/fachstelle/FachstelleGrpcService.java b/zufi-manager-server/src/main/java/de/ozgcloud/zufi/fachstelle/FachstelleGrpcService.java index e7bfc4701a503c079f46a99c18168f6db826334a..ab7840b597f871e00abdda840141dd830bf39819 100644 --- a/zufi-manager-server/src/main/java/de/ozgcloud/zufi/fachstelle/FachstelleGrpcService.java +++ b/zufi-manager-server/src/main/java/de/ozgcloud/zufi/fachstelle/FachstelleGrpcService.java @@ -3,6 +3,8 @@ package de.ozgcloud.zufi.fachstelle; import java.util.List; import de.ozgcloud.zufi.grpc.fachstelle.FachstelleServiceGrpc.FachstelleServiceImplBase; +import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelleGetRequest; +import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelleGetResponse; import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelleSearchRequest; import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelleSearchResponse; import io.grpc.stub.StreamObserver; @@ -19,13 +21,25 @@ class FachstelleGrpcService extends FachstelleServiceImplBase { @Override public void search(GrpcFachstelleSearchRequest request, StreamObserver<GrpcFachstelleSearchResponse> responseObserver) { var fachstellen = searchService.search(request.getSearchBy()); - responseObserver.onNext(buildResponse(fachstellen)); + responseObserver.onNext(buildFachstelleSearchResponse(fachstellen)); responseObserver.onCompleted(); } - GrpcFachstelleSearchResponse buildResponse(List<Fachstelle> fachstellen) { + GrpcFachstelleSearchResponse buildFachstelleSearchResponse(List<Fachstelle> fachstellen) { var responseBuilder = GrpcFachstelleSearchResponse.newBuilder(); fachstellen.stream().map(mapper::toGrpc).forEach(responseBuilder::addFachstellen); return responseBuilder.build(); } + + public void getById(GrpcFachstelleGetRequest request, StreamObserver<GrpcFachstelleGetResponse> responseObserver) { + var fachstelle = searchService.getById(request.getId()); + responseObserver.onNext(buildFachstelleGetResponse(fachstelle)); + responseObserver.onCompleted(); + } + + GrpcFachstelleGetResponse buildFachstelleGetResponse(Fachstelle fachstelle) { + var responseBuilder = GrpcFachstelleGetResponse.newBuilder(); + responseBuilder.setFachstelle(mapper.toGrpc(fachstelle)); + return responseBuilder.build(); + } } diff --git a/zufi-manager-server/src/main/java/de/ozgcloud/zufi/fachstelle/FachstelleMapper.java b/zufi-manager-server/src/main/java/de/ozgcloud/zufi/fachstelle/FachstelleMapper.java index 8289a6ebf06b044ec126e6f3061efc3850364c18..58a21a53651151fc71013c1724d368b82f21b68c 100644 --- a/zufi-manager-server/src/main/java/de/ozgcloud/zufi/fachstelle/FachstelleMapper.java +++ b/zufi-manager-server/src/main/java/de/ozgcloud/zufi/fachstelle/FachstelleMapper.java @@ -4,11 +4,14 @@ import org.mapstruct.Mapper; import org.mapstruct.NullValueCheckStrategy; import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelle; +import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelleRegistrationRequest; @Mapper(nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS) interface FachstelleMapper { Fachstelle fromGrpc(GrpcFachstelle grpcFachstelle); + Fachstelle fromGrpcRegistrationRequest(GrpcFachstelleRegistrationRequest grpcRegistrationRequest); + GrpcFachstelle toGrpc(Fachstelle fachstelle); } diff --git a/zufi-manager-server/src/main/java/de/ozgcloud/zufi/fachstelle/FachstelleNotFoundException.java b/zufi-manager-server/src/main/java/de/ozgcloud/zufi/fachstelle/FachstelleNotFoundException.java new file mode 100644 index 0000000000000000000000000000000000000000..12d1e3808bdc11fb1d501930f64237d178a897fa --- /dev/null +++ b/zufi-manager-server/src/main/java/de/ozgcloud/zufi/fachstelle/FachstelleNotFoundException.java @@ -0,0 +1,11 @@ +package de.ozgcloud.zufi.fachstelle; + +import de.ozgcloud.zufi.common.errorhandling.ResourceNotFoundException; + +public class FachstelleNotFoundException extends ResourceNotFoundException { + public static final String RESOURCE_NAME = "Fachstelle"; + + public FachstelleNotFoundException(String id) { + super(id, RESOURCE_NAME); + } +} diff --git a/zufi-manager-server/src/main/java/de/ozgcloud/zufi/fachstelle/FachstelleRegistrationGrpcService.java b/zufi-manager-server/src/main/java/de/ozgcloud/zufi/fachstelle/FachstelleRegistrationGrpcService.java index 8984d24eb28f214bfe8e256d78338010586f0fc6..25f5984df2a947121237c3376d1d38faf11562ac 100644 --- a/zufi-manager-server/src/main/java/de/ozgcloud/zufi/fachstelle/FachstelleRegistrationGrpcService.java +++ b/zufi-manager-server/src/main/java/de/ozgcloud/zufi/fachstelle/FachstelleRegistrationGrpcService.java @@ -16,7 +16,7 @@ class FachstelleRegistrationGrpcService extends FachstelleRegistrationServiceImp @Override public void register(GrpcFachstelleRegistrationRequest request, StreamObserver<GrpcFachstelleRegistrationResponse> responseObserver) { - fachstelleRegistrationService.register(fachstelleMapper.fromGrpc(request.getFachstelle())); + fachstelleRegistrationService.register(fachstelleMapper.fromGrpcRegistrationRequest(request)); responseObserver.onNext(GrpcFachstelleRegistrationResponse.getDefaultInstance()); responseObserver.onCompleted(); } diff --git a/zufi-manager-server/src/main/java/de/ozgcloud/zufi/fachstelle/FachstelleSearchService.java b/zufi-manager-server/src/main/java/de/ozgcloud/zufi/fachstelle/FachstelleSearchService.java index 55a26fb78b19c37d16da2d756bfdadeb1786885b..ec68c3eab047ba2965473a1d43b91cd7008ef513 100644 --- a/zufi-manager-server/src/main/java/de/ozgcloud/zufi/fachstelle/FachstelleSearchService.java +++ b/zufi-manager-server/src/main/java/de/ozgcloud/zufi/fachstelle/FachstelleSearchService.java @@ -14,6 +14,10 @@ class FachstelleSearchService { private final FachstelleRepository repository; + public Fachstelle getById(String id) { + return repository.findById(id).orElseThrow(() -> new FachstelleNotFoundException(id)); + } + public List<Fachstelle> search(String text) { if (StringUtils.isBlank(text)) { return Collections.emptyList(); diff --git a/zufi-manager-server/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitGrpcService.java b/zufi-manager-server/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitGrpcService.java index 6d096f3bd1cbef4391c96ae310ec61560639175c..c643f4030ab13d55dddda127dca62a1a6ea93b5d 100644 --- a/zufi-manager-server/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitGrpcService.java +++ b/zufi-manager-server/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitGrpcService.java @@ -2,6 +2,8 @@ package de.ozgcloud.zufi.organisationseinheit; import java.util.List; +import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcGetByOrganisationsEinheitIdRequest; +import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcGetByOrganisationsEinheitIdResponse; import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheitGetRequest; import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheitGetResponse; import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheitSearchRequest; @@ -48,4 +50,19 @@ class OrganisationsEinheitGrpcService extends OrganisationsEinheitServiceImplBas return responseBuilder.build(); } + @Override + public void getByOrganisationsEinheitId(GrpcGetByOrganisationsEinheitIdRequest request, + StreamObserver<GrpcGetByOrganisationsEinheitIdResponse> responseObserver) { + var organisationsEinheiten = searchService.getByOrganisationsEinheitId(request.getOrganisationsEinheitId()); + responseObserver.onNext(buildGetByOrganisationsEinheitIdResponse(organisationsEinheiten)); + responseObserver.onCompleted(); + } + + GrpcGetByOrganisationsEinheitIdResponse buildGetByOrganisationsEinheitIdResponse(List<OrganisationsEinheit> organisationsEinheiten) { + var responseBuilder = GrpcGetByOrganisationsEinheitIdResponse.newBuilder(); + organisationsEinheiten.stream() + .map(mapper::fromOrganisationsEinheit) + .forEach(responseBuilder::addOrganisationsEinheiten);; + return responseBuilder.build(); + } } diff --git a/zufi-manager-server/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitNotFoundException.java b/zufi-manager-server/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitNotFoundException.java new file mode 100644 index 0000000000000000000000000000000000000000..7d1ca8877bb8a2254104917a6680956ec5c21c7f --- /dev/null +++ b/zufi-manager-server/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitNotFoundException.java @@ -0,0 +1,11 @@ +package de.ozgcloud.zufi.organisationseinheit; + +import de.ozgcloud.zufi.common.errorhandling.ResourceNotFoundException; + +public class OrganisationsEinheitNotFoundException extends ResourceNotFoundException { + public static final String RESOURCE_NAME = "Organisationseinheit"; + + public OrganisationsEinheitNotFoundException(String id) { + super(id, RESOURCE_NAME); + } +} diff --git a/zufi-manager-server/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitSearchService.java b/zufi-manager-server/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitSearchService.java index 5508dc09406fcb8651b7bfae5a93bd2883a654a0..8651e615fe388a490d11bdf82627b296c8d88ce1 100644 --- a/zufi-manager-server/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitSearchService.java +++ b/zufi-manager-server/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitSearchService.java @@ -5,7 +5,6 @@ import java.util.List; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; -import de.ozgcloud.zufi.common.errorhandling.OrganisationsEinheitNotFoundException; import lombok.RequiredArgsConstructor; @Service @@ -18,6 +17,10 @@ class OrganisationsEinheitSearchService { return repository.findById(id).orElseThrow(() -> new OrganisationsEinheitNotFoundException(id)); } + public List<OrganisationsEinheit> getByOrganisationsEinheitId(String organisationsEinheitId) { + return repository.findByOrganisationsEinheitId(organisationsEinheitId); + } + public List<OrganisationsEinheit> search(String text, String ars) { if (StringUtils.isEmpty(ars)) { return repository.findAllContaining(text); diff --git a/zufi-manager-server/src/main/java/de/ozgcloud/zufi/organisationseinheit/VorgangManagerRegistrationGrpcService.java b/zufi-manager-server/src/main/java/de/ozgcloud/zufi/organisationseinheit/VorgangManagerRegistrationGrpcService.java index 343fe8593a68bd7149d06cb8059abad561e847a6..b05eb48ce181dd0ef63c4d3a9003c4fabefb24db 100644 --- a/zufi-manager-server/src/main/java/de/ozgcloud/zufi/organisationseinheit/VorgangManagerRegistrationGrpcService.java +++ b/zufi-manager-server/src/main/java/de/ozgcloud/zufi/organisationseinheit/VorgangManagerRegistrationGrpcService.java @@ -26,7 +26,6 @@ package de.ozgcloud.zufi.organisationseinheit; import java.util.List; import de.ozgcloud.zufi.common.errorhandling.MissingRequiredGrpcArgumentException; -import de.ozgcloud.zufi.common.errorhandling.OrganisationsEinheitNotFoundException; import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcVorgangManagerGetAddressRequest; import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcVorgangManagerGetAddressResponse; import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcVorgangManagerRegistrationRequest; diff --git a/zufi-manager-server/src/main/resources/application-local.yml b/zufi-manager-server/src/main/resources/application-local.yml index ac7f02152e32acf95f889ce6e28c91a0d10185ee..d2e6d1f80505144a31eaa4ae312f9ad149736453 100644 --- a/zufi-manager-server/src/main/resources/application-local.yml +++ b/zufi-manager-server/src/main/resources/application-local.yml @@ -2,7 +2,6 @@ logging: level: root: WARN, '[de.ozgcloud]': INFO - '[io.grpc]': DEBUG config: classpath:log4j2-local.xml server: diff --git a/zufi-manager-server/src/main/resources/application.yaml b/zufi-manager-server/src/main/resources/application.yaml index 1fc2694b7718cca62f63ddff570e61e26b57e78f..a2bd45bfb871156f675f8da530fb3ee16bedcd70 100644 --- a/zufi-manager-server/src/main/resources/application.yaml +++ b/zufi-manager-server/src/main/resources/application.yaml @@ -2,7 +2,6 @@ logging: level: ROOT: WARN '[de.ozgcloud]': INFO - '[io.grpc]': DEBUG spring: application: diff --git a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/common/errorhandling/GrpcExceptionHandlersTest.java b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/common/errorhandling/GrpcExceptionHandlersTest.java index b460480edfc712f9ba43a5d395d9fb106babc3b4..2dba9096b9fe0d803330b0331181bacd0571fc84 100644 --- a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/common/errorhandling/GrpcExceptionHandlersTest.java +++ b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/common/errorhandling/GrpcExceptionHandlersTest.java @@ -47,6 +47,7 @@ import jakarta.validation.ConstraintViolationException; class GrpcExceptionHandlersTest { private static final String LOG_MESSAGE = LoremIpsum.getInstance().getWords(10); + @Spy @InjectMocks private GrpcExceptionHandlers handler; @@ -125,9 +126,11 @@ class GrpcExceptionHandlersTest { } @Nested - class TestHandleOrganisationsEinheitNotFoundException { + class TestHandleResourceNotFoundException { + private static final String RESOURCE_ID = UUID.randomUUID().toString(); + private static final String RESOURCE_NAME = LoremIpsum.getInstance().getWords(1); - private final OrganisationsEinheitNotFoundException exception = new OrganisationsEinheitNotFoundException(LOG_MESSAGE, + private final ResourceNotFoundException exception = new ResourceNotFoundException(RESOURCE_ID, RESOURCE_NAME, new RuntimeException()); @Test @@ -141,7 +144,7 @@ class GrpcExceptionHandlersTest { void shouldHaveDescription() { var status = handleException().getStatus(); - assertThat(status.getDescription()).contains(LOG_MESSAGE); + assertThat(status.getDescription()).isEqualTo(exception.getMessage()); } @Test @@ -152,7 +155,7 @@ class GrpcExceptionHandlersTest { } private StatusException handleException() { - return handler.handleOrganisationsEinheitNotFoundException(exception); + return handler.handleResourceNotFoundException(exception); } } diff --git a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/common/errorhandling/ResourceNotFoundExceptionTest.java b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/common/errorhandling/ResourceNotFoundExceptionTest.java new file mode 100644 index 0000000000000000000000000000000000000000..cbad8fca389c44b2f284a4296a3b9ac7ae6effe9 --- /dev/null +++ b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/common/errorhandling/ResourceNotFoundExceptionTest.java @@ -0,0 +1,22 @@ +package de.ozgcloud.zufi.common.errorhandling; + +import static org.assertj.core.api.Assertions.*; + +import java.util.UUID; + +import org.junit.jupiter.api.Test; + +import com.thedeanda.lorem.LoremIpsum; + +class ResourceNotFoundExceptionTest { + + private static final String RESOURCE_ID = UUID.randomUUID().toString(); + private static final String RESOURCE_NAME = LoremIpsum.getInstance().getWords(1); + + @Test + void shouldHaveMessage() { + var exception = new ResourceNotFoundException(RESOURCE_ID, RESOURCE_NAME); + + assertThat(exception.getMessage()).startsWith(RESOURCE_NAME + " with ID " + RESOURCE_ID + " could not be found"); + } +} diff --git a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/FachstelleGrpcServiceTest.java b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/FachstelleGrpcServiceTest.java index 77c2d0fec8ba626df0c038c140a186b7f0438127..e54b1a7f53951c6780e217303858617cd56557c1 100644 --- a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/FachstelleGrpcServiceTest.java +++ b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/FachstelleGrpcServiceTest.java @@ -13,6 +13,7 @@ import org.mockito.Mock; import org.mockito.Spy; import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelle; +import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelleGetResponse; import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelleSearchResponse; import io.grpc.stub.StreamObserver; @@ -26,25 +27,26 @@ class FachstelleGrpcServiceTest { @Mock private FachstelleMapper mapper; - private final Fachstelle fachstelle1 = FachstelleTestFactory.create(); + private final Fachstelle fachstelle = FachstelleTestFactory.create(); private final Fachstelle fachstelle2 = FachstelleTestFactory.create(); - private final List<Fachstelle> fachstellen = List.of(fachstelle1, fachstelle2); + private final List<Fachstelle> fachstellen = List.of(fachstelle, fachstelle2); - private final GrpcFachstelle grpcFachstelle1 = GrpcFachstelleTestFactory.createBuilder().setMukId("id-1").build(); + private final GrpcFachstelle grpcFachstelle = GrpcFachstelleTestFactory.createBuilder().setMukId("id-1").build(); private final GrpcFachstelle grpcFachstelle2 = GrpcFachstelleTestFactory.createBuilder().setMukId("id-2").build(); - private final List<GrpcFachstelle> grpcFachstellen = List.of(grpcFachstelle1, grpcFachstelle2); + private final List<GrpcFachstelle> grpcFachstellen = List.of(grpcFachstelle, grpcFachstelle2); @Nested class TestSearch { @Mock private StreamObserver<GrpcFachstelleSearchResponse> responseObserver; - private final GrpcFachstelleSearchResponse searchResponse = GrpcFachstelleSearchResponseTestFactory.createBuilder().addAllFachstellen(grpcFachstellen).build(); + private final GrpcFachstelleSearchResponse searchResponse = GrpcFachstelleSearchResponseTestFactory.createBuilder() + .addAllFachstellen(grpcFachstellen).build(); @BeforeEach void init() { when(searchService.search(GrpcFachstelleSearchRequestTestFactory.SEARCH_BY)).thenReturn(fachstellen); - doReturn(searchResponse).when(grpcService).buildResponse(fachstellen); + doReturn(searchResponse).when(grpcService).buildFachstelleSearchResponse(fachstellen); } @Test @@ -58,7 +60,7 @@ class FachstelleGrpcServiceTest { void shouldBuildResponse() { callGrpcService(); - verify(grpcService).buildResponse(fachstellen); + verify(grpcService).buildFachstelleSearchResponse(fachstellen); } @Test @@ -81,26 +83,99 @@ class FachstelleGrpcServiceTest { } @Nested - class TestBuildResponse { + class TestBuildFachstelleSearchResponse { @BeforeEach void init() { - when(mapper.toGrpc(fachstelle1)).thenReturn(grpcFachstelle1); + when(mapper.toGrpc(fachstelle)).thenReturn(grpcFachstelle); when(mapper.toGrpc(fachstelle2)).thenReturn(grpcFachstelle2); } @Test void shouldCallMapper() { - grpcService.buildResponse(fachstellen); + grpcService.buildFachstelleSearchResponse(fachstellen); fachstellen.forEach(fachstelle -> verify(mapper).toGrpc(fachstelle)); } @Test void shouldAddFachstellenToResponse() { - var response = grpcService.buildResponse(fachstellen); + var response = grpcService.buildFachstelleSearchResponse(fachstellen); assertThat(response.getFachstellenList()).containsExactlyElementsOf(grpcFachstellen); } } + + @Nested + class TestGetById { + + private final GrpcFachstelleGetResponse response = GrpcFachstelleGetResponseTestFactory.create(); + @Mock + private StreamObserver<GrpcFachstelleGetResponse> responseObserver; + + @BeforeEach + void init() { + when(searchService.getById(FachstelleTestFactory.ID)).thenReturn(fachstelle); + doReturn(response).when(grpcService).buildFachstelleGetResponse(fachstelle); + } + + @Test + void shouldCalSearchService() { + callService(); + + verify(searchService).getById(FachstelleTestFactory.ID); + } + + @Test + void shouldBuildResponse() { + callService(); + + verify(grpcService).buildFachstelleGetResponse(fachstelle); + } + + @Test + void shouldNotifyObserver() { + callService(); + + verify(responseObserver).onNext(response); + } + + @Test + void shouldCompleteResponse() { + callService(); + + verify(responseObserver).onCompleted(); + } + + private void callService() { + grpcService.getById(GrpcFachstelleGetRequestTestFactory.create(), responseObserver); + } + } + + @Nested + class TestBuildFachstelleGetResponse { + + @BeforeEach + void init() { + when(mapper.toGrpc(fachstelle)).thenReturn(grpcFachstelle); + } + + @Test + void shouldMapFachstelle() { + callService(); + + verify(mapper).toGrpc(fachstelle); + } + + @Test + void shouldReturnResponse() { + var result = callService(); + + assertThat(result.getFachstelle()).isEqualTo(grpcFachstelle); + } + + private GrpcFachstelleGetResponse callService() { + return grpcService.buildFachstelleGetResponse(fachstelle); + } + } } diff --git a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/FachstelleMapperTest.java b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/FachstelleMapperTest.java index c04ecfd27dbfe88904e6294539796fd817ab7805..a751f771d8ac574e65d74ccce4c227fe5340be28 100644 --- a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/FachstelleMapperTest.java +++ b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/FachstelleMapperTest.java @@ -17,6 +17,17 @@ class FachstelleMapperTest { void shouldMapAllSourceFields() { var mapped = mapper.fromGrpc(GrpcFachstelleTestFactory.create()); + assertThat(mapped).usingRecursiveComparison().isEqualTo(FachstelleTestFactory.create()); + } + } + + @Nested + class TestFromRegistrationGrpc { + + @Test + void shouldMapAllSourceFields() { + var mapped = mapper.fromGrpcRegistrationRequest(GrpcFachstelleRegistrationRequestTestFactory.create()); + assertThat(mapped).usingRecursiveComparison().isEqualTo(FachstelleTestFactory.createWithoutId()); } } diff --git a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/FachstelleRegistrationGrpcServiceITCase.java b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/FachstelleRegistrationGrpcServiceITCase.java index 699b25bdc9726b63b0291bd0a14c2a918c9ed124..78241c66fa9b4ab9dd98be6d3ddb8aaae6bcbe8b 100644 --- a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/FachstelleRegistrationGrpcServiceITCase.java +++ b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/FachstelleRegistrationGrpcServiceITCase.java @@ -42,11 +42,8 @@ class FachstelleRegistrationGrpcServiceITCase { @Nested class TestRegister { - private final GrpcFachstelleRegistrationRequest validRequest = GrpcFachstelleRegistrationRequest.newBuilder() - .setFachstelle(GrpcFachstelleTestFactory.create()).build(); - private final GrpcFachstelleRegistrationRequest invalidRequestMissingMukId = GrpcFachstelleRegistrationRequest.newBuilder() - .setFachstelle(GrpcFachstelleTestFactory.createWithoutMukId()).build(); - private final GrpcFachstelleRegistrationRequest invalidRequestMissingFachstelle = GrpcFachstelleRegistrationRequest.newBuilder().build(); + private final GrpcFachstelleRegistrationRequest validRequest = GrpcFachstelleRegistrationRequestTestFactory.create(); + private final GrpcFachstelleRegistrationRequest invalidRequestMissingMukId = GrpcFachstelleRegistrationRequestTestFactory.createWithoutMukId(); @Test void shouldPersistFachstelle() { @@ -64,11 +61,5 @@ class FachstelleRegistrationGrpcServiceITCase { assertThatThrownBy(() -> serviceStub.register(invalidRequestMissingMukId)).isInstanceOf(StatusRuntimeException.class).hasMessageContainingAll( Code.forNumber(Code.INVALID_ARGUMENT_VALUE).toString(), "mukId"); } - - @Test - void shouldThrowExceptionOnMissingFachstelle() { - assertThatThrownBy(() -> serviceStub.register(invalidRequestMissingFachstelle)).isInstanceOf(StatusRuntimeException.class).hasMessageContainingAll( - Code.forNumber(Code.INVALID_ARGUMENT_VALUE).toString(), "fachstelle"); - } } } diff --git a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/FachstelleRegistrationGrpcServiceTest.java b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/FachstelleRegistrationGrpcServiceTest.java index c29c45c5f3dfff9a07672bdb71ff3092a99a014e..6832e79cf278e5aef938c2c6d3649f6a361d03bb 100644 --- a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/FachstelleRegistrationGrpcServiceTest.java +++ b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/FachstelleRegistrationGrpcServiceTest.java @@ -1,6 +1,5 @@ package de.ozgcloud.zufi.fachstelle; -import static de.ozgcloud.zufi.fachstelle.GrpcFachstelleRegistrationRequestTestFactory.*; import static org.mockito.Mockito.*; import org.junit.jupiter.api.BeforeEach; @@ -10,6 +9,7 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Spy; +import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelleRegistrationRequest; import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelleRegistrationResponse; import io.grpc.stub.StreamObserver; @@ -26,13 +26,14 @@ class FachstelleRegistrationGrpcServiceTest { @Nested class TestRegister { + private final GrpcFachstelleRegistrationRequest registrationRequest = GrpcFachstelleRegistrationRequestTestFactory.create(); private final Fachstelle fachstelle = FachstelleTestFactory.createWithoutId(); @Mock private StreamObserver<GrpcFachstelleRegistrationResponse> responseObserver; @BeforeEach void init() { - when(mapper.fromGrpc(GRPC_FACHSTELLE)).thenReturn(fachstelle); + when(mapper.fromGrpcRegistrationRequest(registrationRequest)).thenReturn(fachstelle); doNothing().when(service).register(fachstelle); } @@ -40,7 +41,7 @@ class FachstelleRegistrationGrpcServiceTest { void shouldMapFromGrpc() { callService(); - verify(mapper).fromGrpc(GRPC_FACHSTELLE); + verify(mapper).fromGrpcRegistrationRequest(registrationRequest); } @Test @@ -65,7 +66,7 @@ class FachstelleRegistrationGrpcServiceTest { } private void callService() { - grpcService.register(GrpcFachstelleRegistrationRequestTestFactory.create(), responseObserver); + grpcService.register(registrationRequest, responseObserver); } } } diff --git a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/FachstelleSearchServiceTest.java b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/FachstelleSearchServiceTest.java index 37b48d9be47873144677ae146f2cbec3f9fc8b37..6fa17715d69551974d45ab1344025b7c8348f706 100644 --- a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/FachstelleSearchServiceTest.java +++ b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/FachstelleSearchServiceTest.java @@ -4,7 +4,9 @@ import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; import java.util.List; +import java.util.Optional; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; @@ -25,6 +27,53 @@ class FachstelleSearchServiceTest { @Mock private FachstelleRepository repository; + @Nested + class TestGetById { + + @Nested + class OnFachstelleFound { + + private final Fachstelle fachstelle = FachstelleTestFactory.create(); + + @BeforeEach + void init() { + when(repository.findById(FachstelleTestFactory.ID)).thenReturn(Optional.of(fachstelle)); + } + + @Test + void shouldFindById() { + callService(); + + verify(repository).findById(FachstelleTestFactory.ID); + } + + @Test + void shouldReturnFachstelle() { + var foundFachstelle = callService(); + + assertThat(foundFachstelle).isEqualTo(fachstelle); + } + } + + @Nested + class OnFachstelleNotFound { + + @BeforeEach + void init() { + when(repository.findById(FachstelleTestFactory.ID)).thenReturn(Optional.empty()); + } + + @Test + void shouldThrowException() { + assertThatThrownBy(() -> callService()).isInstanceOf(FachstelleNotFoundException.class).hasMessageContaining(FachstelleTestFactory.ID); + } + } + + private Fachstelle callService() { + return service.getById(FachstelleTestFactory.ID); + } + } + @Nested class TestSearch { diff --git a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/GrpcFachstelleGetRequestTestFactory.java b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/GrpcFachstelleGetRequestTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..a43ff0cad8c740a18f1a759c6e0405f49658058e --- /dev/null +++ b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/GrpcFachstelleGetRequestTestFactory.java @@ -0,0 +1,14 @@ +package de.ozgcloud.zufi.fachstelle; + +import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelleGetRequest; + +class GrpcFachstelleGetRequestTestFactory { + + public static GrpcFachstelleGetRequest create() { + return createBuilder().build(); + } + + public static GrpcFachstelleGetRequest.Builder createBuilder() { + return GrpcFachstelleGetRequest.newBuilder().setId(FachstelleTestFactory.ID); + } +} diff --git a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/GrpcFachstelleGetResponseTestFactory.java b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/GrpcFachstelleGetResponseTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..262649beca023c61767ba04697f87cca17561fc0 --- /dev/null +++ b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/GrpcFachstelleGetResponseTestFactory.java @@ -0,0 +1,14 @@ +package de.ozgcloud.zufi.fachstelle; + +import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelleGetResponse; + +class GrpcFachstelleGetResponseTestFactory { + + public static GrpcFachstelleGetResponse create() { + return createBuilder().build(); + } + + public static GrpcFachstelleGetResponse.Builder createBuilder() { + return GrpcFachstelleGetResponse.newBuilder().setFachstelle(GrpcFachstelleTestFactory.create()); + } +} diff --git a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/GrpcFachstelleRegistrationRequestTestFactory.java b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/GrpcFachstelleRegistrationRequestTestFactory.java index 0e4c442361398060f6873259a53c752de5734996..4430a61356ccd050c8cc24b91392cf1445ea2b77 100644 --- a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/GrpcFachstelleRegistrationRequestTestFactory.java +++ b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/GrpcFachstelleRegistrationRequestTestFactory.java @@ -1,16 +1,33 @@ package de.ozgcloud.zufi.fachstelle; -import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelle; import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelleRegistrationRequest; class GrpcFachstelleRegistrationRequestTestFactory { - public static final GrpcFachstelle GRPC_FACHSTELLE = GrpcFachstelleTestFactory.create(); - + public static GrpcFachstelleRegistrationRequest create() { return createBuilder().build(); } + public static GrpcFachstelleRegistrationRequest createWithoutMukId() { + return createBuilder(false).build(); + } + public static GrpcFachstelleRegistrationRequest.Builder createBuilder() { - return GrpcFachstelleRegistrationRequest.newBuilder().setFachstelle(GRPC_FACHSTELLE); + return createBuilder(true); + } + + private static GrpcFachstelleRegistrationRequest.Builder createBuilder(boolean withMukId) { + var builder = GrpcFachstelleRegistrationRequest.newBuilder(); + if (withMukId) { + builder = builder.setMukId(FachstelleTestFactory.MUK_ID); + } + return builder + .setFirmenName(FachstelleTestFactory.FIRMEN_NAME) + .setRechtsform(FachstelleTestFactory.RECHTSFORM) + .setRechtsformText(FachstelleTestFactory.RECHTSFORM_TEXT) + .setRegisterNummer(FachstelleTestFactory.REGISTER_NUMMER) + .setRegisterArt(FachstelleTestFactory.REGISTER_ART) + .setEmailAdresse(FachstelleTestFactory.EMAIL_ADRESSE) + .setAnschrift(FachstelleTestFactory.ANSCHRIFT); } } diff --git a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/GrpcFachstelleTestFactory.java b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/GrpcFachstelleTestFactory.java index b83a53af2bad3ce6ce7d8aa9375ddc891936a185..1a12ab3144d68dc09b08eb65ba15e02c322dd5f7 100644 --- a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/GrpcFachstelleTestFactory.java +++ b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/fachstelle/GrpcFachstelleTestFactory.java @@ -8,20 +8,14 @@ class GrpcFachstelleTestFactory { return createBuilder().build(); } - public static GrpcFachstelle createWithoutMukId() { - return createBuilder(false).build(); - } - public static GrpcFachstelle.Builder createBuilder() { return createBuilder(true); } private static GrpcFachstelle.Builder createBuilder(boolean withMukId) { - var builder = GrpcFachstelle.newBuilder(); - if (withMukId) { - builder = builder.setMukId(FachstelleTestFactory.MUK_ID); - } - return builder + return GrpcFachstelle.newBuilder() + .setId(FachstelleTestFactory.ID) + .setMukId(FachstelleTestFactory.MUK_ID) .setFirmenName(FachstelleTestFactory.FIRMEN_NAME) .setRechtsform(FachstelleTestFactory.RECHTSFORM) .setRechtsformText(FachstelleTestFactory.RECHTSFORM_TEXT) diff --git a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/organisationseinheit/GrpcGetByOrganisationsEinheitIdRequestTestFactory.java b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/organisationseinheit/GrpcGetByOrganisationsEinheitIdRequestTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..d049be7d727033b767de25c862c0afbe3e7ade51 --- /dev/null +++ b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/organisationseinheit/GrpcGetByOrganisationsEinheitIdRequestTestFactory.java @@ -0,0 +1,15 @@ +package de.ozgcloud.zufi.organisationseinheit; + +import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcGetByOrganisationsEinheitIdRequest; + +class GrpcGetByOrganisationsEinheitIdRequestTestFactory { + + public static GrpcGetByOrganisationsEinheitIdRequest create() { + return createBuilder().build(); + } + + public static GrpcGetByOrganisationsEinheitIdRequest.Builder createBuilder() { + return GrpcGetByOrganisationsEinheitIdRequest.newBuilder() + .setOrganisationsEinheitId(OrganisationsEinheitTestFactory.XZUFI_ID.getId()); + } +} diff --git a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/organisationseinheit/GrpcGetByOrganisationsEinheitIdResponseTestFactory.java b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/organisationseinheit/GrpcGetByOrganisationsEinheitIdResponseTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..f47342ab59431f755e574916f23755f1344710d9 --- /dev/null +++ b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/organisationseinheit/GrpcGetByOrganisationsEinheitIdResponseTestFactory.java @@ -0,0 +1,18 @@ +package de.ozgcloud.zufi.organisationseinheit; + +import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcGetByOrganisationsEinheitIdResponse; +import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheit; + +class GrpcGetByOrganisationsEinheitIdResponseTestFactory { + + public static final GrpcOrganisationsEinheit GRPC_ORGANISATIONS_EINHEIT = GrpcOrganisationsEinheitTestFactory.create(); + + public static GrpcGetByOrganisationsEinheitIdResponse create() { + return createBuilder().build(); + } + + public static GrpcGetByOrganisationsEinheitIdResponse.Builder createBuilder() { + return GrpcGetByOrganisationsEinheitIdResponse.newBuilder() + .addOrganisationsEinheiten(GRPC_ORGANISATIONS_EINHEIT); + } +} diff --git a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitGrpcServiceTest.java b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitGrpcServiceTest.java index fe61176d657b985cc322e1d99082e004a5730ca5..8a5b62e561687319d9fe7cadda583ecd428aa39e 100644 --- a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitGrpcServiceTest.java +++ b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitGrpcServiceTest.java @@ -14,6 +14,7 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Spy; +import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcGetByOrganisationsEinheitIdResponse; import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheit; import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheitGetRequest; import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheitGetResponse; @@ -26,7 +27,7 @@ class OrganisationsEinheitGrpcServiceTest { @InjectMocks private OrganisationsEinheitGrpcService service; @Mock - private OrganisationsEinheitSearchService organisationsEinheitSearchService; + private OrganisationsEinheitSearchService searchService; @Mock private GrpcOrganisationsEinheitMapper mapper; @@ -52,7 +53,7 @@ class OrganisationsEinheitGrpcServiceTest { @BeforeEach void setUpMocks() { - when(organisationsEinheitSearchService.search(request.getSearchBy(), request.getArs())).thenReturn(organisationsEinheiten); + when(searchService.search(request.getSearchBy(), request.getArs())).thenReturn(organisationsEinheiten); when(mapper.fromOrganisationsEinheit(organisationsEinheit)).thenReturn(grpcOrganisationsEinheit); when(mapper.fromOrganisationsEinheit(organisationsEinheit2)).thenReturn(grpcOrganisationsEinheit2); } @@ -61,11 +62,11 @@ class OrganisationsEinheitGrpcServiceTest { void shouldCallService() { callService(); - verify(organisationsEinheitSearchService).search(request.getSearchBy(), request.getArs()); + verify(searchService).search(request.getSearchBy(), request.getArs()); } @Test - void shouldCreateResponse() { + void shouldBuildResponse() { callService(); verify(service).buildOrganisationsEinheitSearchResponse(organisationsEinheiten); @@ -93,7 +94,7 @@ class OrganisationsEinheitGrpcServiceTest { @BeforeEach void setUpMocks() { - when(organisationsEinheitSearchService.search(request.getSearchBy(), request.getArs())).thenReturn(organisationsEinheiten); + when(searchService.search(request.getSearchBy(), request.getArs())).thenReturn(organisationsEinheiten); when(mapper.fromOrganisationsEinheit(organisationsEinheit)).thenReturn(grpcOrganisationsEinheit); when(mapper.fromOrganisationsEinheit(organisationsEinheit2)).thenReturn(grpcOrganisationsEinheit2); } @@ -139,7 +140,7 @@ class OrganisationsEinheitGrpcServiceTest { @BeforeEach void setUpMocks() { - when(organisationsEinheitSearchService.getById(organisationsEinheitId)).thenReturn(organisationsEinheit); + when(searchService.getById(organisationsEinheitId)).thenReturn(organisationsEinheit); when(mapper.fromOrganisationsEinheit(organisationsEinheit)).thenReturn(grpcOrganisationsEinheit); } @@ -147,11 +148,11 @@ class OrganisationsEinheitGrpcServiceTest { void shouldCallService() { callService(); - verify(organisationsEinheitSearchService).getById(organisationsEinheitId); + verify(searchService).getById(organisationsEinheitId); } @Test - void shouldCreateResponse() { + void shouldBuildResponse() { callService(); verify(service).buildOrganisationsEinheitGetResponse(organisationsEinheit); @@ -206,4 +207,86 @@ class OrganisationsEinheitGrpcServiceTest { } + @Nested + class TestGetByOrganisationsEinheitId { + + public static final String ORGANISATIONS_EINHEIT_ID = OrganisationsEinheitTestFactory.XZUFI_ID.getId(); + + private final List<OrganisationsEinheit> organisationsEinheiten = List.of(organisationsEinheit); + private final GrpcGetByOrganisationsEinheitIdResponse response = GrpcGetByOrganisationsEinheitIdResponseTestFactory.create(); + + @Mock + private StreamObserver<GrpcGetByOrganisationsEinheitIdResponse> responseObserver; + + @Captor + private ArgumentCaptor<GrpcGetByOrganisationsEinheitIdResponse> responseCaptor; + + @BeforeEach + void init() { + when(searchService.getByOrganisationsEinheitId(ORGANISATIONS_EINHEIT_ID)).thenReturn(organisationsEinheiten); + doReturn(response).when(service).buildGetByOrganisationsEinheitIdResponse(organisationsEinheiten); + } + + @Test + void shouldCallService() { + callService(); + + verify(searchService).getByOrganisationsEinheitId(ORGANISATIONS_EINHEIT_ID); + } + + @Test + void shouldBuildResponse() { + callService(); + + verify(service).buildGetByOrganisationsEinheitIdResponse(organisationsEinheiten); + } + + @Test + void shouldReturnResponse() { + callService(); + + verify(responseObserver).onNext(responseCaptor.capture()); + assertThat(responseCaptor.getValue()).isEqualTo(response); + } + + @Test + void shouldCompleteResponse() { + callService(); + + verify(responseObserver).onCompleted(); + } + + private void callService() { + service.getByOrganisationsEinheitId(GrpcGetByOrganisationsEinheitIdRequestTestFactory.create(), responseObserver); + } + } + + @Nested + class TestBuildGetByOrganisationsEinheitIdResponse { + + private final List<OrganisationsEinheit> organisationsEinheiten = List.of(organisationsEinheit); + + @BeforeEach + void setup() { + when(mapper.fromOrganisationsEinheit(organisationsEinheit)).thenReturn(grpcOrganisationsEinheit); + } + + @Test + void shouldMapOrganisationsEinheit() { + callService(); + + verify(mapper).fromOrganisationsEinheit(organisationsEinheit); + } + + @Test + void shouldReturnResponse() { + var result = callService(); + + assertThat(result.getOrganisationsEinheitenList()).containsExactly(GrpcGetByOrganisationsEinheitIdResponseTestFactory.GRPC_ORGANISATIONS_EINHEIT); + } + + private GrpcGetByOrganisationsEinheitIdResponse callService() { + return service.buildGetByOrganisationsEinheitIdResponse(organisationsEinheiten); + } + } } diff --git a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitSearchServiceTest.java b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitSearchServiceTest.java index cd5b0929f5d4e50b230c47cc7a669bf69f999dcd..5d3561ced2b0d58a566643488ce3bb5f0a6a7030 100644 --- a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitSearchServiceTest.java +++ b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitSearchServiceTest.java @@ -19,8 +19,6 @@ import org.mockito.Spy; import com.thedeanda.lorem.LoremIpsum; -import de.ozgcloud.zufi.common.errorhandling.OrganisationsEinheitNotFoundException; - class OrganisationsEinheitSearchServiceTest { @InjectMocks @Spy @@ -66,6 +64,37 @@ class OrganisationsEinheitSearchServiceTest { } } + @Nested + class TestGetByOrganisationsEinheitId { + + public static final String ORGANISATIONS_EINHEIT_ID = OrganisationsEinheitTestFactory.XZUFI_ID.getId(); + + private final OrganisationsEinheit organisationsEinheit = OrganisationsEinheitTestFactory.create(); + + @BeforeEach + void init() { + when(repository.findByOrganisationsEinheitId(ORGANISATIONS_EINHEIT_ID)).thenReturn(List.of(organisationsEinheit)); + } + + @Test + void shouldFindByOrganisationsEinheitId() { + callService(); + + verify(repository).findByOrganisationsEinheitId(ORGANISATIONS_EINHEIT_ID); + } + + @Test + void shouldReturnOrganisationsEinheiten() { + var result = callService(); + + assertThat(result).containsExactly(organisationsEinheit); + } + + private List<OrganisationsEinheit> callService() { + return service.getByOrganisationsEinheitId(ORGANISATIONS_EINHEIT_ID); + } + } + @Nested class TestSearch { diff --git a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/organisationseinheit/VorgangManagerRegistrationGrpcServiceTest.java b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/organisationseinheit/VorgangManagerRegistrationGrpcServiceTest.java index bf4ba888c0f8b1ab2ff1de33f3b449826f39158b..e040b42a84a96b6d4d18d71d8de0bcb1317db180 100644 --- a/zufi-manager-server/src/test/java/de/ozgcloud/zufi/organisationseinheit/VorgangManagerRegistrationGrpcServiceTest.java +++ b/zufi-manager-server/src/test/java/de/ozgcloud/zufi/organisationseinheit/VorgangManagerRegistrationGrpcServiceTest.java @@ -47,7 +47,6 @@ import org.mockito.Spy; import com.thedeanda.lorem.LoremIpsum; import de.ozgcloud.zufi.common.errorhandling.MissingRequiredGrpcArgumentException; -import de.ozgcloud.zufi.common.errorhandling.OrganisationsEinheitNotFoundException; import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcVorgangManagerGetAddressRequest; import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcVorgangManagerGetAddressResponse; import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcVorgangManagerRegistrationRequest;