Skip to content
Snippets Groups Projects
Select Git revision
  • KOP-3064-Test-Nachrichten-Fuer-Enaio-DMS
  • KOP-3139-ozgcloud-Abhaengigkeit-entfernen
  • OZG-8085-ci-components-poc
  • main default protected
  • KOP-3126-Reproduce-Bug
  • 0.2.2
  • 0.2.1
  • 0.2.0
8 results

XtaDevServerSetupExtension.java

Blame
  • XtaDevServerSetupExtension.java 3.81 KiB
    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 genv3.de.xoev.transport.xta.x211.ParameterIsNotValidException;
    import lombok.Getter;
    import lombok.Setter;
    import lombok.SneakyThrows;
    import lombok.extern.slf4j.Slf4j;
    
    @Getter
    @Setter
    @Slf4j
    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);
    		try {
    			service.sendMessage(XtaMessageTestFactory.createBuilder()
    					.metaData(XtaMessageMetaDataTestFactory.createBuilder()
    							.authorIdentifier(author)
    							.readerIdentifier(reader)
    							.messageId(messageId)
    							.build())
    					.build()
    			);
    		} catch (ParameterIsNotValidException e) {
    			log.error("Failed to send test message to client2: {}", e.getFaultInfo().getErrorCode().getName());
    			throw e;
    		}
    	}
    
    	@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);
    	}
    
    }