Skip to content
Snippets Groups Projects
Commit 56f41a0d authored by Jan Zickermann's avatar Jan Zickermann
Browse files

KOP-2139 KOP-2467 XtaClientITCase: Create extension for dev server setup

parent d93293a6
Branches
Tags
No related merge requests found
package de.ozgcloud.xta.client;
import static de.ozgcloud.xta.client.XtaDevServerSetupExtension.*;
import static org.assertj.core.api.Assertions.*;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Objects;
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 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 com.google.common.io.Files;
import de.ozgcloud.xta.client.config.XtaClientConfig;
import lombok.SneakyThrows;
@EnabledIfEnvironmentVariable(
named = "KOP_SH_KIEL_DEV_PATH",
matches = ".+",
disabledReason = "This test requires the path and password of KOP_SH_KIEL_DEV.p12. "
+ "Additionally, DEV-xta-server endpoint at li33-0005.dp.dsecurecloud.de should be reachable."
+ "Additionally, the endpoint of the DEV-xta-server at li33-0005.dp.dsecurecloud.de must be reachable."
)
class XtaClientITCase {
@RegisterExtension
static final XtaDevServerSetupExtension XTA_DEV_SERVER_SETUP_EXTENSION = new XtaDevServerSetupExtension();
private XtaClient client;
private static final String CLIENT_IDENTIFIER = "afmsh:010600000000_Online-Dienste";
@BeforeEach
@SneakyThrows
void setup() {
client = XTA_DEV_SERVER_SETUP_EXTENSION.getClient();
}
@DisplayName("get messages metadata")
@Nested
class TestGetMessagesMetadata {
private static final String BASE_URL = "https://li33-0005.dp.dsecurecloud.de/MB_XTA-WS/XTA210";
@DisplayName("with no messages")
@Nested
class TestWithNoMessages {
private XtaClientFactory clientFactory;
@DisplayName("should return zero pending messages")
@ParameterizedTest
@ValueSource(strings = { CLIENT_IDENTIFIER1, CLIENT_IDENTIFIER2})
@SneakyThrows
void shouldReturnZeroPendingMessages(String clientIdentifiers) {
var result = client.getMessagesMetadata(clientIdentifiers);
private XtaClientConfig config;
assertThat(result.pendingMessageCount()).isZero();
}
}
@DisplayName("with one message")
@Nested
class TestWithOneMessage {
@BeforeEach
@SneakyThrows
void setup() {
var clientCertKeystorePath = getEnvVar("KOP_SH_KIEL_DEV_PATH");
var clientCertKeystorePassword = getEnvVar("KOP_SH_KIEL_DEV_PASSWORD");
var clientCertKeyStore = XtaClientConfig.KeyStore.builder()
.content(readBytesFromFile(clientCertKeystorePath))
.type("PKCS12")
.password(clientCertKeystorePassword.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);
client = clientFactory.create();
XTA_DEV_SERVER_SETUP_EXTENSION.sendTestMessageToClient2();
}
private String getEnvVar(String name) {
return Objects.requireNonNull(System.getenv(name), "Environment variable " + name + " is required!");
}
@DisplayName("should return one pending message for client2")
@Test
@SneakyThrows
void shouldReturnOnePendingMessageClient2() {
var result = client.getMessagesMetadata(CLIENT_IDENTIFIER2);
@DisplayName("get status list")
@Nested
class TestGetStatusList {
assertThat(result.pendingMessageCount()).isOne();
}
@DisplayName("should return with no pending messages")
@DisplayName("should return no pending message for client1")
@Test
@SneakyThrows
void shouldReturnWithNoPendingMessages() {
var result = client.getMessagesMetadata(CLIENT_IDENTIFIER);
void shouldReturnNoPendingMessageForClient1() {
var result = client.getMessagesMetadata(CLIENT_IDENTIFIER1);
assertThat(result.pendingMessageCount()).isZero();
}
}
private static byte[] readBytesFromFile(String path) {
try {
return Files.toByteArray(new File(path));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
package de.ozgcloud.xta.client;
import java.io.File;
import java.util.List;
import java.util.Objects;
import org.junit.jupiter.api.extension.BeforeAllCallback;
import org.junit.jupiter.api.extension.BeforeEachCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
import com.google.common.io.Files;
import de.ozgcloud.xta.client.config.XtaClientConfig;
import de.ozgcloud.xta.client.core.WrappedXtaService;
import de.ozgcloud.xta.client.model.Identifier;
import de.ozgcloud.xta.client.model.XtaMessageMetaData;
import de.ozgcloud.xta.client.model.XtaMessageMetaDataTestFactory;
import de.ozgcloud.xta.client.model.XtaMessageTestFactory;
import lombok.Getter;
import lombok.Setter;
import lombok.SneakyThrows;
@Getter
@Setter
public class XtaDevServerSetupExtension implements BeforeAllCallback, BeforeEachCallback {
private XtaClient client;
private WrappedXtaService service;
private XtaClientConfig config;
private XtaClientFactory clientFactory;
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_IDENTIFIER2 = "dp:012345678910_XtaClientITCase2";
@Override
@SneakyThrows
public void beforeAll(ExtensionContext context) {
client = setupClient();
service = client.getService();
}
@SneakyThrows
XtaClient setupClient() {
var clientCertKeystorePath = getEnvVar("KOP_SH_KIEL_DEV_PATH");
var clientCertKeystorePassword = getEnvVar("KOP_SH_KIEL_DEV_PASSWORD");
var clientCertKeyStore = XtaClientConfig.KeyStore.builder()
.content(readBytesFromFile(clientCertKeystorePath))
.type("PKCS12")
.password(clientCertKeystorePassword.toCharArray())
.build();
config = XtaClientConfig.builder()
.clientIdentifiers(List.of(CLIENT_IDENTIFIER1, CLIENT_IDENTIFIER2))
.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);
return clientFactory.create();
}
private String getEnvVar(String name) {
return Objects.requireNonNull(System.getenv(name), "Environment variable " + name + " is required!");
}
@Override
@SneakyThrows
public void beforeEach(ExtensionContext context) {
closeAllMessages(clientId2());
}
@SneakyThrows
public void sendTestMessageToClient2() {
sendTestMessageToClient2(clientId(), clientId2());
}
@SneakyThrows
void sendTestMessageToClient2(Identifier author, Identifier reader) {
var messageId = service.createMessageId(author);
service.sendMessage(XtaMessageTestFactory.createBuilder()
.metaData(XtaMessageMetaDataTestFactory.createBuilder()
.authorIdentifier(author)
.readerIdentifier(reader)
.messageId(messageId)
.build())
.build()
);
}
@SneakyThrows
private void closeAllMessages(Identifier clientId) {
var result = service.getStatusList(clientId, 100);
var messageIds = result.messages().stream()
.map(XtaMessageMetaData::messageId)
.toList();
for (var messageId : messageIds) {
service.close(messageId, result.requestId(), clientId);
}
}
@SneakyThrows
private static byte[] readBytesFromFile(String path) {
return Files.toByteArray(new File(path));
}
private Identifier clientId() {
return client.deriveIdentifier(CLIENT_IDENTIFIER1);
}
private Identifier clientId2() {
return client.deriveIdentifier(CLIENT_IDENTIFIER2);
}
}
......@@ -4,6 +4,9 @@ import java.util.List;
public class XtaMessageTestFactory {
public static String XTA_MESSAGE_FILE_NAME = "messageFile.txt";
public static String XTA_MESSAGE_FILE_ID = "message-file-id";
public static XtaMessage create() {
return createBuilder().build();
}
......@@ -11,7 +14,10 @@ public class XtaMessageTestFactory {
public static XtaMessage.XtaMessageBuilder createBuilder() {
return XtaMessage.builder()
.metaData(XtaMessageMetaDataTestFactory.create())
.messageFile(XtaFileTestFactory.create())
.messageFile(XtaFileTestFactory.createBuilder()
.name(XTA_MESSAGE_FILE_NAME)
.id(XTA_MESSAGE_FILE_ID)
.build())
.attachmentFiles(List.of(XtaFileTestFactory.create()));
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment