From fd4fcb7170fc3634e2fd3abc67740f597c361865 Mon Sep 17 00:00:00 2001 From: Jan Zickermann <jan.zickermann@dataport.de> Date: Wed, 24 Jul 2024 14:17:44 +0200 Subject: [PATCH] KOP-2139 KOP-2461 XtaClientITCase: Try out checkAccountActive --- .../de/ozgcloud/xta/client/XtaClient.java | 6 +- .../ozgcloud/xta/client/XtaClientFactory.java | 1 + .../xta/client/config/XtaClientConfig.java | 17 +++-- .../client/core/WrappedXtaServiceFactory.java | 4 +- .../core/XtaTLSClientParametersFactory.java | 2 +- .../ozgcloud/xta/client/model/XtaMessage.java | 7 +- .../xta/client/model/XtaMessageMetaData.java | 5 +- .../model/XtaMessageMetaDataListing.java | 3 +- .../ozgcloud/xta/client/XtaClientITCase.java | 76 +++++++++++++++++++ .../core/WrappedXtaServiceFactoryTest.java | 2 +- .../client/core/XTAServiceFactoryTest.java | 6 +- 11 files changed, 108 insertions(+), 21 deletions(-) create mode 100644 src/test/java/de/ozgcloud/xta/client/XtaClientITCase.java diff --git a/src/main/java/de/ozgcloud/xta/client/XtaClient.java b/src/main/java/de/ozgcloud/xta/client/XtaClient.java index deb3050..f259383 100644 --- a/src/main/java/de/ozgcloud/xta/client/XtaClient.java +++ b/src/main/java/de/ozgcloud/xta/client/XtaClient.java @@ -14,9 +14,9 @@ import lombok.Builder; import lombok.Getter; import lombok.RequiredArgsConstructor; -@RequiredArgsConstructor(access = AccessLevel.PROTECTED) -@Builder(access = AccessLevel.PROTECTED) -@Getter(AccessLevel.PROTECTED) +@RequiredArgsConstructor(access = AccessLevel.MODULE) +@Builder(access = AccessLevel.MODULE) +@Getter(AccessLevel.MODULE) public class XtaClient { private final WrappedXtaService service; diff --git a/src/main/java/de/ozgcloud/xta/client/XtaClientFactory.java b/src/main/java/de/ozgcloud/xta/client/XtaClientFactory.java index 241815d..8d9c3ec 100644 --- a/src/main/java/de/ozgcloud/xta/client/XtaClientFactory.java +++ b/src/main/java/de/ozgcloud/xta/client/XtaClientFactory.java @@ -17,6 +17,7 @@ public class XtaClientFactory { public static XtaClientFactory from(final XtaClientConfig config) { return XtaClientFactory.builder() + .config(config) .configValidator(XtaConfigValidator.builder().build()) .wrappedXtaServiceFactory(WrappedXtaServiceFactory.from(config)) .build(); diff --git a/src/main/java/de/ozgcloud/xta/client/config/XtaClientConfig.java b/src/main/java/de/ozgcloud/xta/client/config/XtaClientConfig.java index 1918f50..96ee5fd 100644 --- a/src/main/java/de/ozgcloud/xta/client/config/XtaClientConfig.java +++ b/src/main/java/de/ozgcloud/xta/client/config/XtaClientConfig.java @@ -31,7 +31,7 @@ import lombok.ToString; public class XtaClientConfig { @NotEmpty(message = "at least one client identifier is required") - private final List<String> clientIdentifiers; + private final List<@NotBlank String> clientIdentifiers; @NotBlank private final String managementServiceUrl; @@ -41,14 +41,19 @@ public class XtaClientConfig { private final String msgBoxServiceUrl; @Positive - private final int maxListItems; + @Builder.Default + private final int maxListItems = 50; @Valid - private final KeyStore clientCertKeystore; + @Builder.Default + private final KeyStore clientCertKeystore = null; - private final boolean schemaValidation; - private final boolean logSoapRequests; - private final boolean logSoapResponses; + @Builder.Default + private final boolean schemaValidation = true; + @Builder.Default + private final boolean logSoapRequests = false; + @Builder.Default + private final boolean logSoapResponses = false; @RequiredArgsConstructor @Getter diff --git a/src/main/java/de/ozgcloud/xta/client/core/WrappedXtaServiceFactory.java b/src/main/java/de/ozgcloud/xta/client/core/WrappedXtaServiceFactory.java index d9408b4..7aa74b7 100644 --- a/src/main/java/de/ozgcloud/xta/client/core/WrappedXtaServiceFactory.java +++ b/src/main/java/de/ozgcloud/xta/client/core/WrappedXtaServiceFactory.java @@ -11,12 +11,12 @@ import lombok.RequiredArgsConstructor; @Builder public class WrappedXtaServiceFactory { - private final XTAServiceFactory xtaServiceFactory; + private final XTAPortTripleFactory xtaServiceFactory; private final WebServiceTypeMapper typeMapper; public static WrappedXtaServiceFactory from(final XtaClientConfig config) { return WrappedXtaServiceFactory.builder() - .xtaServiceFactory(XTAServiceFactory.from(config)) + .xtaServiceFactory(XTAPortTripleFactory.from(config)) .typeMapper(Mappers.getMapper(WebServiceTypeMapper.class)) .build(); } diff --git a/src/main/java/de/ozgcloud/xta/client/core/XtaTLSClientParametersFactory.java b/src/main/java/de/ozgcloud/xta/client/core/XtaTLSClientParametersFactory.java index b9e9285..b9348e7 100644 --- a/src/main/java/de/ozgcloud/xta/client/core/XtaTLSClientParametersFactory.java +++ b/src/main/java/de/ozgcloud/xta/client/core/XtaTLSClientParametersFactory.java @@ -38,7 +38,7 @@ public class XtaTLSClientParametersFactory { return parameters; } - SSLContext createXtaSslContext() throws ClientInitializationException { + public SSLContext createXtaSslContext() throws ClientInitializationException { try { var sslContextBuilder = createSSLContextBuilder(); var clientCertKeystore = config.getClientCertKeystore(); diff --git a/src/main/java/de/ozgcloud/xta/client/model/XtaMessage.java b/src/main/java/de/ozgcloud/xta/client/model/XtaMessage.java index c25cda1..01b2c68 100644 --- a/src/main/java/de/ozgcloud/xta/client/model/XtaMessage.java +++ b/src/main/java/de/ozgcloud/xta/client/model/XtaMessage.java @@ -3,13 +3,14 @@ package de.ozgcloud.xta.client.model; import java.util.List; import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; import lombok.Builder; @Builder public record XtaMessage( - @Valid XtaMessageMetaData metaData, - @Valid XtaFile messageFile, - @Valid List<XtaFile> attachments + @NotNull @Valid XtaMessageMetaData metaData, + @NotNull @Valid XtaFile messageFile, + @NotNull List<@Valid XtaFile> attachments ) { } diff --git a/src/main/java/de/ozgcloud/xta/client/model/XtaMessageMetaData.java b/src/main/java/de/ozgcloud/xta/client/model/XtaMessageMetaData.java index b60fd63..5f1943e 100644 --- a/src/main/java/de/ozgcloud/xta/client/model/XtaMessageMetaData.java +++ b/src/main/java/de/ozgcloud/xta/client/model/XtaMessageMetaData.java @@ -4,6 +4,7 @@ import java.math.BigInteger; import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.PositiveOrZero; import lombok.Builder; @@ -15,8 +16,8 @@ public record XtaMessageMetaData( @NotBlank String messageTypeCode, @NotBlank String messageTypePayloadSchema, @NotBlank String messageId, - @Valid Identifier authorIdentifier, - @Valid Identifier readerIdentifier, + @NotNull @Valid Identifier authorIdentifier, + @NotNull @Valid Identifier readerIdentifier, @PositiveOrZero BigInteger messageSize ) { } diff --git a/src/main/java/de/ozgcloud/xta/client/model/XtaMessageMetaDataListing.java b/src/main/java/de/ozgcloud/xta/client/model/XtaMessageMetaDataListing.java index cdbc821..b8af0b8 100644 --- a/src/main/java/de/ozgcloud/xta/client/model/XtaMessageMetaDataListing.java +++ b/src/main/java/de/ozgcloud/xta/client/model/XtaMessageMetaDataListing.java @@ -4,6 +4,7 @@ import java.math.BigInteger; import java.util.List; import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.PositiveOrZero; import lombok.Builder; @@ -11,6 +12,6 @@ import lombok.Builder; @Builder public record XtaMessageMetaDataListing( @PositiveOrZero BigInteger pendingMessageCount, - @Valid List<XtaMessageMetaData> messages + @NotNull @Valid List<XtaMessageMetaData> messages ) { } diff --git a/src/test/java/de/ozgcloud/xta/client/XtaClientITCase.java b/src/test/java/de/ozgcloud/xta/client/XtaClientITCase.java new file mode 100644 index 0000000..f1e87d5 --- /dev/null +++ b/src/test/java/de/ozgcloud/xta/client/XtaClientITCase.java @@ -0,0 +1,76 @@ +package de.ozgcloud.xta.client; + +import static org.assertj.core.api.Assertions.*; + +import java.io.File; +import java.io.IOException; +import java.util.List; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import com.google.common.io.Files; + +import de.ozgcloud.xta.client.config.XtaClientConfig; +import lombok.SneakyThrows; + +class XtaClientITCase { + + private XtaClient client; + + private static final String CLIENT_IDENTIFIER = "afmsh:010600000000_Online-Dienste"; + + private static final String BASE_URL = "https://li33-0005.dp.dsecurecloud.de/MB_XTA-WS/XTA210"; + + private static final XtaClientFactory clientFactory; + + private static final XtaClientConfig CONFIG; + + static { + var clientCertKeyStore = XtaClientConfig.KeyStore.builder() + .content(readBytesFromFile("/path/to/KOP_SH_KIEL_DEV.p12")) + .type("PKCS12") + .password("***".toCharArray()) + .build(); + CONFIG = XtaClientConfig.builder() + .clientIdentifiers(List.of(CLIENT_IDENTIFIER)) + .managementServiceUrl(BASE_URL + "managementPort.svc") + .sendServiceUrl(BASE_URL + "sendPort.svc") + .msgBoxServiceUrl(BASE_URL + "msgBoxPort.svc") + .clientCertKeystore(clientCertKeyStore) + .logSoapRequests(true) + .logSoapResponses(true) + .build(); + clientFactory = XtaClientFactory.from(CONFIG); + } + + @BeforeEach + @SneakyThrows + void mock() { + client = clientFactory.create(); + } + + @DisplayName("get status list") + @Nested + class TestGetStatusList { + + @DisplayName("should return with no pending messages") + @Test + @SneakyThrows + void shouldReturnWithNoPendingMessages() { + var result = client.getMessagesMetadata(CLIENT_IDENTIFIER); + + assertThat(result.pendingMessageCount()).isZero(); + } + } + + private static byte[] readBytesFromFile(String path) { + try { + return Files.toByteArray(new File(path)); + } catch (IOException e) { + throw new RuntimeException(e); + } + } +} \ No newline at end of file diff --git a/src/test/java/de/ozgcloud/xta/client/core/WrappedXtaServiceFactoryTest.java b/src/test/java/de/ozgcloud/xta/client/core/WrappedXtaServiceFactoryTest.java index d6eec9b..486ee8e 100644 --- a/src/test/java/de/ozgcloud/xta/client/core/WrappedXtaServiceFactoryTest.java +++ b/src/test/java/de/ozgcloud/xta/client/core/WrappedXtaServiceFactoryTest.java @@ -20,7 +20,7 @@ import lombok.SneakyThrows; class WrappedXtaServiceFactoryTest { @Mock - private XTAServiceFactory xtaServiceFactory; + private XTAPortTripleFactory xtaServiceFactory; @Mock private WebServiceTypeMapper typeMapper; @Mock diff --git a/src/test/java/de/ozgcloud/xta/client/core/XTAServiceFactoryTest.java b/src/test/java/de/ozgcloud/xta/client/core/XTAServiceFactoryTest.java index 6d71e60..ad1a956 100644 --- a/src/test/java/de/ozgcloud/xta/client/core/XTAServiceFactoryTest.java +++ b/src/test/java/de/ozgcloud/xta/client/core/XTAServiceFactoryTest.java @@ -1,6 +1,6 @@ package de.ozgcloud.xta.client.core; -import static de.ozgcloud.xta.client.core.XTAServiceFactory.*; +import static de.ozgcloud.xta.client.core.XTAPortTripleFactory.*; import static org.assertj.core.api.AssertionsForClassTypes.*; import static org.mockito.Mockito.*; @@ -52,7 +52,7 @@ class XTAServiceFactoryTest { @Spy @InjectMocks - private XTAServiceFactory factory; + private XTAPortTripleFactory factory; @DisplayName("create") @Nested @@ -198,6 +198,7 @@ class XTAServiceFactoryTest { @DisplayName("should keep old") @Test + @SneakyThrows void shouldKeepOld() { factory.configureRequestContext(endpointUrl, requestContext); @@ -216,6 +217,7 @@ class XTAServiceFactoryTest { @DisplayName("should add schema validation") @ParameterizedTest @ValueSource(booleans = { true, false }) + @SneakyThrows void shouldAddSchemaValidation(boolean validation) { reset(config); when(config.isSchemaValidation()).thenReturn(validation); -- GitLab