diff --git a/src/main/java/de/ozgcloud/xta/client/XtaClient.java b/src/main/java/de/ozgcloud/xta/client/XtaClient.java index 369597a7ba494599e604e4d116c3ad49541d798e..a0a1893a707753b573ba7527df85e717344fc946 100644 --- a/src/main/java/de/ozgcloud/xta/client/XtaClient.java +++ b/src/main/java/de/ozgcloud/xta/client/XtaClient.java @@ -41,7 +41,10 @@ public class XtaClient { } Identifier deriveIdentifier(String xtaIdentifier) { - return Identifier.builder().value(xtaIdentifier).build(); + return config.getClientIdentifiers().stream() + .filter(id -> id.value().equals(xtaIdentifier)) + .findFirst() + .orElseThrow(() -> new IllegalArgumentException("Unknown identifier: " + xtaIdentifier)); } public XtaMessage getMessage(String messageId) { 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 96ee5fde82dd75cec63e94ddde95eb0c01792d8d..4f7241ed0bcf6f84b03d1e48079fb2a4e84d2925 100644 --- a/src/main/java/de/ozgcloud/xta/client/config/XtaClientConfig.java +++ b/src/main/java/de/ozgcloud/xta/client/config/XtaClientConfig.java @@ -19,6 +19,7 @@ import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Positive; +import de.ozgcloud.xta.client.model.Identifier; import lombok.Builder; import lombok.Getter; import lombok.RequiredArgsConstructor; @@ -31,7 +32,7 @@ import lombok.ToString; public class XtaClientConfig { @NotEmpty(message = "at least one client identifier is required") - private final List<@NotBlank String> clientIdentifiers; + private final List<@Valid Identifier> clientIdentifiers; @NotBlank private final String managementServiceUrl; diff --git a/src/main/java/de/ozgcloud/xta/client/core/ModelMapper.java b/src/main/java/de/ozgcloud/xta/client/core/ModelMapper.java index f368ba2cf8305b55ecda1f91bc51bd447b74f40a..636b3485715f36bc07664b7f3beb231b94358e60 100644 --- a/src/main/java/de/ozgcloud/xta/client/core/ModelMapper.java +++ b/src/main/java/de/ozgcloud/xta/client/core/ModelMapper.java @@ -69,7 +69,7 @@ public interface ModelMapper { @Mapping(target = "originators.author.identifier", source = "authorIdentifier") @Mapping(target = "destinations.reader.identifier", source = "readerIdentifier") @Mapping(target = "msgSize", source = "messageSize") - @Mapping(target = "testMsg", constant = "false") + @Mapping(target = "testMsg", ignore = true) @Mapping(target = "deliveryAttributes", ignore = true) @Mapping(target = "messageProperties", ignore = true) MessageMetaData mapMessageMetaDataFromXtaMessageMetaData(XtaMessageMetaData xtaMessageMetaData); diff --git a/src/test/java/de/ozgcloud/xta/client/XtaClientConfigTestFactory.java b/src/test/java/de/ozgcloud/xta/client/XtaClientConfigTestFactory.java index e63cbc8c5e1dbf5d411fa4b6ccd67a622f8108b4..1fb4ec73b4082b1d430fba8ef101a960b3a88456 100644 --- a/src/test/java/de/ozgcloud/xta/client/XtaClientConfigTestFactory.java +++ b/src/test/java/de/ozgcloud/xta/client/XtaClientConfigTestFactory.java @@ -21,14 +21,18 @@ import lombok.SneakyThrows; public class XtaClientConfigTestFactory { - public static final String SELF_IDENTIFIER_VALUE = "selfIdentifier"; + public static final String SELF_IDENTIFIER_VALUE = "dp:selfIdentifier"; public static final Identifier SELF_IDENTIFIER = Identifier.builder() .value(SELF_IDENTIFIER_VALUE) .category("Generic category") .name("Generic Name") .build(); public static final int MAX_LIST_ITEMS = 10; - static final String SELF_IDENTIFIER2 = "selfIdentifier2"; + static final Identifier SELF_IDENTIFIER2 = Identifier.builder() + .value("dp:selfIdentifier2") + .category("Generic category") + .name("Generic Name") + .build(); public static final String KEYSTORE_ALIAS = "selfSigned"; @@ -51,7 +55,7 @@ public class XtaClientConfigTestFactory { .managementServiceUrl(MANAGEMENT_PORT_SVC) .sendServiceUrl(SEND_PORT_SVC) .msgBoxServiceUrl(MSG_BOX_PORT_SVC) - .clientIdentifiers(List.of(SELF_IDENTIFIER_VALUE, SELF_IDENTIFIER2)) + .clientIdentifiers(List.of(SELF_IDENTIFIER, SELF_IDENTIFIER2)) .maxListItems(MAX_LIST_ITEMS) .logSoapRequests(true) .logSoapResponses(true) diff --git a/src/test/java/de/ozgcloud/xta/client/XtaClientITCase.java b/src/test/java/de/ozgcloud/xta/client/XtaClientITCase.java index 2682f857154c70639645a99193026ef439fefed3..bef49205d8dccad105fee8706950d838986e162b 100644 --- a/src/test/java/de/ozgcloud/xta/client/XtaClientITCase.java +++ b/src/test/java/de/ozgcloud/xta/client/XtaClientITCase.java @@ -9,8 +9,6 @@ import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.junit.jupiter.api.extension.RegisterExtension; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.ValueSource; import lombok.SneakyThrows; @@ -42,11 +40,10 @@ class XtaClientITCase { class TestWithNoMessages { @DisplayName("should return zero pending messages") - @ParameterizedTest - @ValueSource(strings = { CLIENT_IDENTIFIER1, CLIENT_IDENTIFIER2 }) + @Test @SneakyThrows - void shouldReturnZeroPendingMessages(String clientIdentifiers) { - var result = client.getMessagesMetadata(clientIdentifiers); + void shouldReturnZeroPendingMessages() { + var result = client.getMessagesMetadata(CLIENT_IDENTIFIER2.value()); assertThat(result.pendingMessageCount()).isZero(); } @@ -65,7 +62,7 @@ class XtaClientITCase { @Test @SneakyThrows void shouldReturnOnePendingMessageClient2() { - var result = client.getMessagesMetadata(CLIENT_IDENTIFIER2); + var result = client.getMessagesMetadata(CLIENT_IDENTIFIER2.value()); assertThat(result.pendingMessageCount()).isOne(); @@ -75,7 +72,7 @@ class XtaClientITCase { @Test @SneakyThrows void shouldReturnNoPendingMessageForClient1() { - var result = client.getMessagesMetadata(CLIENT_IDENTIFIER1); + var result = client.getMessagesMetadata(CLIENT_IDENTIFIER1.value()); assertThat(result.pendingMessageCount()).isZero(); } diff --git a/src/test/java/de/ozgcloud/xta/client/XtaClientTest.java b/src/test/java/de/ozgcloud/xta/client/XtaClientTest.java index 9ff22db19e463b2e91d2f20cb098bb41dff3a39a..20369560f82684738a89004e73e0c870fe40b157 100644 --- a/src/test/java/de/ozgcloud/xta/client/XtaClientTest.java +++ b/src/test/java/de/ozgcloud/xta/client/XtaClientTest.java @@ -4,6 +4,8 @@ import static de.ozgcloud.xta.client.XtaClientConfigTestFactory.*; import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; +import java.util.List; + import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; @@ -77,7 +79,6 @@ class XtaClientTest { @BeforeEach @SneakyThrows void mock() { - doReturn(SELF_IDENTIFIER).when(client).deriveIdentifier(SELF_IDENTIFIER_VALUE); when(service.getStatusList(SELF_IDENTIFIER, MAX_LIST_ITEMS)).thenReturn(xtaMessageMetaDataListing); when(config.getMaxListItems()).thenReturn(MAX_LIST_ITEMS); } @@ -99,10 +100,22 @@ class XtaClientTest { @DisplayName("should use value") @Test void shouldUseValue() { + when(config.getClientIdentifiers()).thenReturn(List.of(SELF_IDENTIFIER2, SELF_IDENTIFIER)); + var result = client.deriveIdentifier(SELF_IDENTIFIER_VALUE); assertThat(result.value()).isEqualTo(SELF_IDENTIFIER_VALUE); } + + @DisplayName("should throw when unknown") + @Test + void shouldThrowWhenUnknown() { + when(config.getClientIdentifiers()).thenReturn(List.of(SELF_IDENTIFIER2)); + + assertThatThrownBy(() -> client.deriveIdentifier(SELF_IDENTIFIER_VALUE)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Unknown identifier: " + SELF_IDENTIFIER_VALUE); + } } } \ No newline at end of file diff --git a/src/test/java/de/ozgcloud/xta/client/XtaDevServerSetupExtension.java b/src/test/java/de/ozgcloud/xta/client/XtaDevServerSetupExtension.java index a8601578e20be631acfba92ca5ae8789b25764a2..4894964246ac0db3b251714c23e4c0835358b9f8 100644 --- a/src/test/java/de/ozgcloud/xta/client/XtaDevServerSetupExtension.java +++ b/src/test/java/de/ozgcloud/xta/client/XtaDevServerSetupExtension.java @@ -33,8 +33,22 @@ public class XtaDevServerSetupExtension implements BeforeAllCallback, BeforeEach static final String BASE_URL = "https://li33-0005.dp.dsecurecloud.de/MB_XTA-WS/XTA210"; // static final String CLIENT_IDENTIFIER1 = "dp:012345678910_XtaClientITCase1"; - static final String CLIENT_IDENTIFIER1 = "ehp:010100100000"; - static final String CLIENT_IDENTIFIER2 = "vbe:010550120100"; + static final Identifier CLIENT_IDENTIFIER1 = Identifier.builder() + .value("gad:010103000000") + .category("DMS Schleswig-Holstein") + .name("Generischer Antragsdienst") + .build(); + // static final Identifier CLIENT_IDENTIFIER1 = Identifier.builder() + // .value("gae:test-environment@ozg-cloud.de") + // .category("Generischer Antragsempfänger") + // .name("Test-Umgebung") + // .build(); + // static final String CLIENT_IDENTIFIER2 = "vbe:010550120100"; + static final Identifier CLIENT_IDENTIFIER2 = Identifier.builder() + .value("gae:test-environment@ozg-cloud.de") + .category("Generischer Antragsempfänger") + .name("Test-Umgebung") + .build(); @Override @SneakyThrows @@ -73,12 +87,12 @@ public class XtaDevServerSetupExtension implements BeforeAllCallback, BeforeEach @Override @SneakyThrows public void beforeEach(ExtensionContext context) { - closeAllMessages(clientId2()); + closeAllMessages(CLIENT_IDENTIFIER2); } @SneakyThrows public void sendTestMessageToClient2() { - sendTestMessageToClient2(clientId(), clientId2()); + sendTestMessageToClient2(CLIENT_IDENTIFIER1, CLIENT_IDENTIFIER2); } @SneakyThrows @@ -121,12 +135,4 @@ public class XtaDevServerSetupExtension implements BeforeAllCallback, BeforeEach return Files.toByteArray(new File(path)); } - private Identifier clientId() { - return client.deriveIdentifier(CLIENT_IDENTIFIER1); - } - - private Identifier clientId2() { - return client.deriveIdentifier(CLIENT_IDENTIFIER2); - } - }