diff --git a/vorgang-manager-interface/src/main/protobuf/vorgang.model.proto b/vorgang-manager-interface/src/main/protobuf/vorgang.model.proto index 479c9ead1e477c2aa7f07588a4df5b2ae02f08ff..ffe4cc45c2feb899ba7cd64424588035cf4f3770 100644 --- a/vorgang-manager-interface/src/main/protobuf/vorgang.model.proto +++ b/vorgang-manager-interface/src/main/protobuf/vorgang.model.proto @@ -214,7 +214,7 @@ message GrpcCreateCollaborationRequestData { string vorgangId = 1; int32 collaborationLevel = 2; reserved 3; - string organisationsEinheitId = 4; + string organisationEinheitId = 4; } message GrpcCreateCollaborationVorgangResponse { diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CreateCollaborationVorgangRequestMapper.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CreateCollaborationVorgangRequestMapper.java index e7d98214f47767f8e504319062e735e1f1542162..413ae397c7278b3351fba46dafb843e2bc1abd32 100644 --- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CreateCollaborationVorgangRequestMapper.java +++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CreateCollaborationVorgangRequestMapper.java @@ -33,5 +33,6 @@ import de.ozgcloud.vorgang.vorgang.GrpcCreateCollaborationRequestData; public interface CreateCollaborationVorgangRequestMapper { @Mapping(target = "vorgang", ignore = true) + @Mapping(target = "organisationsEinheitId", source = "organisationEinheitId") CreateCollaborationVorgangRequest mapFrom(GrpcCreateCollaborationRequestData grpcCollaborationRequest); } diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationITCase.java index c09938f11e6ae55f3552995e760a2b43b0d541bd..dcd94d7fef449ab06e185ca9214ca64d45f72a33 100644 --- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationITCase.java +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationITCase.java @@ -49,11 +49,8 @@ import org.mockito.Captor; import org.mockito.Mock; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.context.TestConfiguration; import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Bean; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; @@ -74,6 +71,7 @@ import de.ozgcloud.collaboration.CollaborationService; import de.ozgcloud.collaboration.CollaborationServiceGrpc.CollaborationServiceBlockingStub; import de.ozgcloud.collaboration.GrpcGetFileContentRequest; import de.ozgcloud.collaboration.fachstelle.Fachstelle.FachstelleType; +import de.ozgcloud.collaboration.fachstelle.FachstelleService; import de.ozgcloud.collaboration.request.CollaborationRequestId; import de.ozgcloud.collaboration.request.CollaborationRequestServiceGrpc.CollaborationRequestServiceBlockingStub; import de.ozgcloud.collaboration.request.GrpcFindRequestsRequest; @@ -103,17 +101,13 @@ import de.ozgcloud.vorgang.vorgang.VorgangTestFactory; import de.ozgcloud.vorgang.vorgang.ZustaendigeStelleTestFactory; import io.grpc.Status; import io.grpc.StatusRuntimeException; -import net.devh.boot.grpc.client.autoconfigure.GrpcClientAutoConfiguration; import net.devh.boot.grpc.client.inject.GrpcClient; -import net.devh.boot.grpc.server.autoconfigure.GrpcServerAutoConfiguration; -import net.devh.boot.grpc.server.autoconfigure.GrpcServerFactoryAutoConfiguration; @SpringBootTest(properties = { "grpc.server.inProcessName=test", "grpc.client.vorgang-manager.address=in-process:test", "grpc.client.ozgcloud-command-manager.address=in-process:test", "grpc.client.file-manager.address=in-process:test", - "grpc.client.zufi-manager.address=in-process:test", "grpc.client.inProcess.address=in-process:test", "grpc.client.pluto.address=in-process:test" }) @@ -125,7 +119,6 @@ class CollaborationITCase { private static final String FIELD_COLLABORATION_VORGANG_ID = "collaborationVorgangId"; private static final String TITEL = "Collaboration Vorgang"; private static final String BESCHREIBUNG = "Beschreibung der Anfrage"; - private static final String ZUFI_ID = UUID.randomUUID().toString(); @Autowired private CommandService commandService; @@ -145,6 +138,8 @@ class CollaborationITCase { private OzgCloudUserProfile ozgCloudUserProfile; @MockBean private OzgCloudClientAttributeMapper clientAttributeMapper; + @MockBean + private FachstelleService fachstelleService; private String vorgangId; @@ -225,24 +220,6 @@ class CollaborationITCase { } } - private CreateCommandRequest buildCreateCollaborationVorgangCommand(String vorgangId, int collaborationLevel) { - return buildCreateCollaborationVorgangCommand(vorgangId, collaborationLevel, ZUFI_ID); - } - - private CreateCommandRequest buildCreateCollaborationVorgangCommand(String vorgangId, int collaborationLevel, String zustaendigeStelleId) { - return CreateCommandRequest.builder() - .callContext(CallContext.builder().client("test").build()) - .vorgangId(vorgangId) - .relationId(vorgangId) - .order("CREATE_COLLABORATION_REQUEST") - .bodyObject(Map.of( - "titel", TITEL, - "beschreibung", BESCHREIBUNG, - "collaborationLevel", collaborationLevel, - "zustaendigeStelle", zustaendigeStelleId)) - .build(); - } - private List<VorgangAttachedItem> loadCollaborationRequest(String vorgangId) { var query = new Query(new Criteria().andOperator( Criteria.where(VorgangAttachedItem.FIELDNAME_VORGANG_ID).is(vorgangId), @@ -258,11 +235,13 @@ class CollaborationITCase { @Nested class TestCreateCollaborationVorgang { + public static final String ORGANISATIONS_EINHEIT_ID = UUID.randomUUID().toString(); @BeforeEach void init() { when(ozgCloudUserProfile.getId()).thenReturn(OzgCloudUserId.from(CommandTestFactory.CREATED_BY)); when(collaborationOzgCloudUserProfileService.getById(any())).thenReturn(ozgCloudUserProfile); + when(fachstelleService.getOrganisationEinheit(FachstelleTestFactory.TECHNICAL_ID)).thenReturn(FachstelleTestFactory.create()); } @Test @@ -286,14 +265,14 @@ class CollaborationITCase { assertThat(collaborationVorgang.getHeader()).extracting(VorgangHead::getCollaborationLevel) .isEqualTo(CreateCollaborationVorgangRequestTestFactory.COLLABORATION_LEVEL); assertThat(collaborationVorgang.getHeader()).extracting(VorgangHead::getOrganisationsEinheitId) - .isEqualTo(OrganisationsEinheitGrpcServiceMock.ORGANISATIONS_EINHEIT_ID); + .isEqualTo(FachstelleTestFactory.SUBJECT_ID); assertThat(collaborationVorgang.getClientAttributes()).isEmpty(); } private Command createCommand() { return commandService.createCommand( buildCreateCollaborationVorgangCommand(vorgangId, - CreateCollaborationVorgangRequestTestFactory.COLLABORATION_LEVEL, OrganisationsEinheitGrpcServiceMock.ID)); + CreateCollaborationVorgangRequestTestFactory.COLLABORATION_LEVEL, FachstelleTestFactory.TECHNICAL_ID)); } private Vorgang loadCollaborationVorgang(String sourceVorgangId) { @@ -317,6 +296,7 @@ class CollaborationITCase { void init() { when(ozgCloudUserProfile.getId()).thenReturn(OzgCloudUserId.from(CommandTestFactory.CREATED_BY)); when(collaborationOzgCloudUserProfileService.getById(any())).thenReturn(ozgCloudUserProfile); + when(fachstelleService.getExterneFachstelle(FachstelleTestFactory.TECHNICAL_ID)).thenReturn(FachstelleTestFactory.create()); } @Test @@ -338,7 +318,7 @@ class CollaborationITCase { verify(postfachRemoteService).sendMessage(postfachNachrichtCaptor.capture()); assertThat(postfachNachrichtCaptor.getValue().getPostfachAddress()).extracting(PostfachAddress::getIdentifier) - .hasToString(FachstelleGrpcServiceMock.MUK_ID); + .hasToString(FachstelleTestFactory.SUBJECT_ID); } @Test @@ -367,10 +347,24 @@ class CollaborationITCase { private Command createCommand() { return commandService - .createCommand(buildCreateCollaborationVorgangCommand(vorgangId, COLLABORATION_LEVEL, FachstelleGrpcServiceMock.ZUFI_ID)); + .createCommand(buildCreateCollaborationVorgangCommand(vorgangId, COLLABORATION_LEVEL, FachstelleTestFactory.TECHNICAL_ID)); } } + private CreateCommandRequest buildCreateCollaborationVorgangCommand(String vorgangId, int collaborationLevel, String zustaendigeStelleId) { + return CreateCommandRequest.builder() + .callContext(CallContext.builder().client("test").build()) + .vorgangId(vorgangId) + .relationId(vorgangId) + .order("CREATE_COLLABORATION_REQUEST") + .bodyObject(Map.of( + "titel", TITEL, + "beschreibung", BESCHREIBUNG, + "collaborationLevel", collaborationLevel, + "zustaendigeStelle", zustaendigeStelleId)) + .build(); + } + @DisplayName("Collaboration requests") @Nested class TestCollaborationRequests { @@ -386,9 +380,9 @@ class CollaborationITCase { public static final String COLLABORATION_VORGANG_ID = UUID.randomUUID().toString(); public static final int COLLABORATION_LEVEL = 1; - private static final String TECHNICAL_ID = OrganisationsEinheitGrpcServiceMock.ID; - private static final String SUBJECT_ID = OrganisationsEinheitGrpcServiceMock.ORGANISATIONS_EINHEIT_ID; - private static final FachstelleType TYPE = FachstelleType.ORGANISATIONS_EINHEIT; + private static final String TECHNICAL_ID = FachstelleTestFactory.TECHNICAL_ID; + private static final String SUBJECT_ID = FachstelleTestFactory.SUBJECT_ID; + private static final FachstelleType TYPE = FachstelleType.ORGANISATION_EINHEIT; private final Vorgang vorgang = VorgangTestFactory.create(); @@ -499,21 +493,4 @@ class CollaborationITCase { } } - @TestConfiguration - @ImportAutoConfiguration({ - GrpcServerAutoConfiguration.class, - GrpcServerFactoryAutoConfiguration.class, - GrpcClientAutoConfiguration.class }) - static class ZufiServerTestConfiguration { - - @Bean - FachstelleGrpcServiceMock fachstelleGrpcServiceMock() { - return new FachstelleGrpcServiceMock(); - } - - @Bean - OrganisationsEinheitGrpcServiceMock organisationsEinheitGrpcServiceMock() { - return new OrganisationsEinheitGrpcServiceMock(); - } - } } \ No newline at end of file diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/FachstelleGrpcServiceMock.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/FachstelleGrpcServiceMock.java deleted file mode 100644 index 48ef451cb7f2c513fe9089f39e5e0d261fa5d260..0000000000000000000000000000000000000000 --- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/FachstelleGrpcServiceMock.java +++ /dev/null @@ -1,51 +0,0 @@ -package de.ozgcloud.vorgang.collaboration; - -import java.util.UUID; - -import com.thedeanda.lorem.LoremIpsum; - -import de.ozgcloud.zufi.grpc.fachstelle.FachstelleServiceGrpc.FachstelleServiceImplBase; -import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelle; -import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelleGetRequest; -import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelleGetResponse; -import io.grpc.stub.StreamObserver; -import net.devh.boot.grpc.server.service.GrpcService; - -@GrpcService -class FachstelleGrpcServiceMock extends FachstelleServiceImplBase { - - static final String ZUFI_ID = UUID.randomUUID().toString(); - static final String MUK_ID = UUID.randomUUID().toString(); - public static final String FIRMEN_NAME = LoremIpsum.getInstance().getWords(2); - public static final String RECHTSFORM = LoremIpsum.getInstance().getWords(1); - public static final String RECHTSFORM_TEXT = LoremIpsum.getInstance().getWords(1); - public static final String REGISTER_NUMMER = UUID.randomUUID().toString(); - public static final String REGISTER_ART = LoremIpsum.getInstance().getWords(1); - public static final String EMAIL_ADRESSE = LoremIpsum.getInstance().getEmail(); - public static final String ANSCHRIFT = LoremIpsum.getInstance().getWords(5); - - @Override - public void getById(GrpcFachstelleGetRequest request, StreamObserver<GrpcFachstelleGetResponse> responseObserver) { - if (request.getId().equals(ZUFI_ID)) { - responseObserver.onNext(buildFachstelleGetResponse()); - responseObserver.onCompleted(); - } else { - throw new AssertionError("Expected zufiId %s. But actual zufiId was %s.".formatted(ZUFI_ID, request.getId())); - } - } - - GrpcFachstelleGetResponse buildFachstelleGetResponse() { - return GrpcFachstelleGetResponse.newBuilder() - .setFachstelle(GrpcFachstelle.newBuilder() - .setId(ZUFI_ID) - .setMukId(MUK_ID) - .setFirmenName(FIRMEN_NAME) - .setRechtsform(RECHTSFORM) - .setRechtsformText(RECHTSFORM_TEXT) - .setRegisterNummer(REGISTER_NUMMER) - .setRegisterArt(REGISTER_ART) - .setEmailAdresse(EMAIL_ADRESSE) - .setAnschrift(ANSCHRIFT)) - .build(); - } -} diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/FachstelleTestFactory.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/FachstelleTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..fb7d82bf3137a889aebf6d7e3e7f4b6aecd6cb17 --- /dev/null +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/FachstelleTestFactory.java @@ -0,0 +1,26 @@ +package de.ozgcloud.vorgang.collaboration; + +import java.util.UUID; + +import de.ozgcloud.collaboration.fachstelle.Fachstelle; +import de.ozgcloud.collaboration.fachstelle.Fachstelle.FachstelleBuilder; +import de.ozgcloud.collaboration.fachstelle.Fachstelle.FachstelleType; + +public class FachstelleTestFactory { + + public static final String SUBJECT_ID = UUID.randomUUID().toString(); + public static final String TECHNICAL_ID = UUID.randomUUID().toString(); + public static final FachstelleType TYPE = FachstelleType.ORGANISATION_EINHEIT; + + public static Fachstelle create() { + return createBuilder().build(); + } + + public static FachstelleBuilder createBuilder() { + return Fachstelle.builder() + .subjectId(SUBJECT_ID) + .technicalId(TECHNICAL_ID) + .type(TYPE); + } + +} diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/GrpcCreateCollaborationRequestDataTestFactory.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/GrpcCreateCollaborationRequestDataTestFactory.java index adbccf0472dd286fd429d352a7afe01d98d70749..74da3279207eee66dabaee50c77e185d7073da78 100644 --- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/GrpcCreateCollaborationRequestDataTestFactory.java +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/GrpcCreateCollaborationRequestDataTestFactory.java @@ -35,7 +35,7 @@ public class GrpcCreateCollaborationRequestDataTestFactory { public static GrpcCreateCollaborationRequestData.Builder createBuilder() { return GrpcCreateCollaborationRequestData.newBuilder() .setVorgangId(VorgangTestFactory.ID) - .setOrganisationsEinheitId(CreateCollaborationVorgangRequestTestFactory.ORGANISATIONSEINHEIT_ID) + .setOrganisationEinheitId(CreateCollaborationVorgangRequestTestFactory.ORGANISATIONSEINHEIT_ID) .setCollaborationLevel(CreateCollaborationVorgangRequestTestFactory.COLLABORATION_LEVEL); } } diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/OrganisationsEinheitGrpcServiceMock.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/OrganisationsEinheitGrpcServiceMock.java deleted file mode 100644 index 113f42dea871147a33ca1ae4902095903e4cba59..0000000000000000000000000000000000000000 --- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/OrganisationsEinheitGrpcServiceMock.java +++ /dev/null @@ -1,59 +0,0 @@ -package de.ozgcloud.vorgang.collaboration; - -import java.util.Random; -import java.util.UUID; - -import com.thedeanda.lorem.LoremIpsum; - -import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcAnschrift; -import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheit; -import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheitGetRequest; -import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheitGetResponse; -import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcXzufiId; -import de.ozgcloud.zufi.grpc.organisationseinheit.OrganisationsEinheitServiceGrpc.OrganisationsEinheitServiceImplBase; -import io.grpc.stub.StreamObserver; -import net.devh.boot.grpc.server.service.GrpcService; - -@GrpcService -public class OrganisationsEinheitGrpcServiceMock extends OrganisationsEinheitServiceImplBase { - public static final String ID = UUID.randomUUID().toString(); - public static final String ORGANISATIONS_EINHEIT_ID = UUID.randomUUID().toString(); - public static final String SCHEME_AGENCY_ID = UUID.randomUUID().toString(); - public static final GrpcXzufiId XZUFI_ID = GrpcXzufiId.newBuilder().setId(ORGANISATIONS_EINHEIT_ID).setSchemeAgencyId(SCHEME_AGENCY_ID).build(); - public static final String NAME = LoremIpsum.getInstance().getName(); - public static final String SYNONYME = LoremIpsum.getInstance().getWords(5); - public static final String PLZ = LoremIpsum.getInstance().getZipCode(); - public static final String ORT = LoremIpsum.getInstance().getCity(); - public static final String STRASSE = LoremIpsum.getInstance().getWords(2); - public static final String HAUSNUMMER = String.valueOf(new Random().nextInt()); - public static final GrpcAnschrift ANSCHRIFT = GrpcAnschrift.newBuilder() - .setStrasse(STRASSE) - .setHausnummer(HAUSNUMMER) - .setPlz(PLZ) - .setOrt(ORT) - .build(); - public static final String VORGANG_MANAGER_ADDRESS = LoremIpsum.getInstance().getUrl(); - - @Override - public void getById(GrpcOrganisationsEinheitGetRequest request, StreamObserver<GrpcOrganisationsEinheitGetResponse> responseObserver) { - - if (request.getId().equals(ID)) { - responseObserver.onNext(buildOrganisationsEinheitGetResponse()); - responseObserver.onCompleted(); - } else { - throw new AssertionError("Expected id %s. But actual id was %s.".formatted(ID, request.getId())); - } - } - - GrpcOrganisationsEinheitGetResponse buildOrganisationsEinheitGetResponse() { - return GrpcOrganisationsEinheitGetResponse.newBuilder().setOrganisationsEinheit( - GrpcOrganisationsEinheit.newBuilder() - .setId(ID) - .setName(NAME) - .setAnschrift(ANSCHRIFT) - .setVorgangManagerAddress(VORGANG_MANAGER_ADDRESS) - .setXzufiId(XZUFI_ID) - .build()) - .build(); - } -}