diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidRemoteService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidRemoteService.java index 5050e20b409dda18c055d461917ddc4c1732f7a0..52a882303b0466a417fa37894702a4a49bf655e8 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidRemoteService.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidRemoteService.java @@ -8,6 +8,7 @@ import org.springframework.stereotype.Service; import de.ozgcloud.alfa.common.GrpcUtil; import de.ozgcloud.bescheid.BescheidServiceGrpc.BescheidServiceBlockingStub; import de.ozgcloud.bescheid.GrpcBescheid; +import de.ozgcloud.bescheid.GrpcBescheidManagerConfigRequest; import de.ozgcloud.bescheid.GrpcGetBescheidDraftRequest; import de.ozgcloud.bescheid.GrpcGetBescheidDraftResponse; import net.devh.boot.grpc.client.inject.GrpcClient; @@ -37,7 +38,7 @@ class BescheidRemoteService { } public boolean canCreateBescheidDocument() { - // TODO: waiting for OZG-5585 - return true; + var response = bescheidServiceStub.getConfig(GrpcBescheidManagerConfigRequest.newBuilder().build()); + return response.hasFeatures() && response.getFeatures().getCanCreateBescheidDocument(); } } \ No newline at end of file diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidRemoteServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidRemoteServiceTest.java index 07da3f1e48dd94766d0b22a0bc0916168276ab4f..d08fe3d9179f48128c6bed34019e8ae187b1b72d 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidRemoteServiceTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidRemoteServiceTest.java @@ -14,6 +14,8 @@ import org.mockito.Spy; import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory; import de.ozgcloud.bescheid.BescheidServiceGrpc.BescheidServiceBlockingStub; +import de.ozgcloud.bescheid.GrpcBescheidManagerConfigRequest; +import de.ozgcloud.bescheid.GrpcBescheidManagerConfigResponse; import de.ozgcloud.bescheid.GrpcGetBescheidDraftRequest; import de.ozgcloud.bescheid.GrpcGetBescheidDraftResponse; @@ -122,12 +124,50 @@ class BescheidRemoteServiceTest { @Nested class TestCanCreateBescheidDocument { + private final GrpcBescheidManagerConfigRequest request = GrpcBescheidManagerConfigRequestTestFactory.create(); + private final GrpcBescheidManagerConfigResponse respone = GrpcBescheidManagerConfigResponseTestFactory.create(); + + @BeforeEach + void setUp() { + when(bescheidServiceStub.getConfig(request)).thenReturn(respone); + } + + @Test + void shouldCallRemoteService() { + service.canCreateBescheidDocument(); + + verify(bescheidServiceStub).getConfig(request); + } + @Test void shouldReturnTrue() { var canCreate = service.canCreateBescheidDocument(); assertThat(canCreate).isTrue(); } + + @Test + void shouldReturnFalseIfNoFeaturesAvailable() { + when(bescheidServiceStub.getConfig(request)).thenReturn(GrpcBescheidManagerConfigResponseTestFactory.empty()); + + var canCreate = service.canCreateBescheidDocument(); + + assertThat(canCreate).isFalse(); + } + + @Test + void shouldReturnFalseIfFeatureDisabled() { + var respones = GrpcBescheidManagerConfigResponseTestFactory.createBuilder() + .setFeatures(GrpcBescheidManagerFeaturesTestFactory.createBuilder() + .setCanCreateBescheidDocument(false) + .build()) + .build(); + when(bescheidServiceStub.getConfig(request)).thenReturn(respones); + + var canCreate = service.canCreateBescheidDocument(); + + assertThat(canCreate).isFalse(); + } } } \ No newline at end of file diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcBescheidManagerConfigRequestTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcBescheidManagerConfigRequestTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..b3b7518632401a74dadba71ea91a0da1b09bfd61 --- /dev/null +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcBescheidManagerConfigRequestTestFactory.java @@ -0,0 +1,14 @@ +package de.ozgcloud.alfa.bescheid; + +import de.ozgcloud.bescheid.GrpcBescheidManagerConfigRequest; + +public class GrpcBescheidManagerConfigRequestTestFactory { + + public static GrpcBescheidManagerConfigRequest create() { + return createBuilder().build(); + } + + public static GrpcBescheidManagerConfigRequest.Builder createBuilder() { + return GrpcBescheidManagerConfigRequest.newBuilder(); + } +} diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcBescheidManagerConfigResponseTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcBescheidManagerConfigResponseTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..d15b8aea1d49f706cf068ecb357970ed2e15a991 --- /dev/null +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcBescheidManagerConfigResponseTestFactory.java @@ -0,0 +1,18 @@ +package de.ozgcloud.alfa.bescheid; + +import de.ozgcloud.bescheid.GrpcBescheidManagerConfigResponse; + +public class GrpcBescheidManagerConfigResponseTestFactory { + + public static GrpcBescheidManagerConfigResponse empty() { + return GrpcBescheidManagerConfigResponse.newBuilder().build(); + } + + public static GrpcBescheidManagerConfigResponse create() { + return createBuilder().build(); + } + + public static GrpcBescheidManagerConfigResponse.Builder createBuilder() { + return GrpcBescheidManagerConfigResponse.newBuilder().setFeatures(GrpcBescheidManagerFeaturesTestFactory.create()); + } +} diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcBescheidManagerFeaturesTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcBescheidManagerFeaturesTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..fc745ca20b8507af338b860735958df1e828640a --- /dev/null +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcBescheidManagerFeaturesTestFactory.java @@ -0,0 +1,16 @@ +package de.ozgcloud.alfa.bescheid; + +import de.ozgcloud.bescheid.GrpcBescheidManagerFeatures; + +public class GrpcBescheidManagerFeaturesTestFactory { + + public static final boolean CAN_CREATE_BESCHEID = true; + + public static GrpcBescheidManagerFeatures create() { + return createBuilder().build(); + } + + public static GrpcBescheidManagerFeatures.Builder createBuilder() { + return GrpcBescheidManagerFeatures.newBuilder().setCanCreateBescheidDocument(CAN_CREATE_BESCHEID); + } +} diff --git a/pom.xml b/pom.xml index b061f02e10eb46999380c84b53b3fcc1aedeb8ba..7986fc9ca35ec07cbd7a20e207f108f2cec4274e 100644 --- a/pom.xml +++ b/pom.xml @@ -50,7 +50,7 @@ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> - <vorgang-manager.version>2.6.0</vorgang-manager.version> + <vorgang-manager.version>2.7.0-SNAPSHOT</vorgang-manager.version> <ozgcloud-common-pdf.version>3.0.1</ozgcloud-common-pdf.version> <user-manager.version>2.2.0</user-manager.version>