From c978c6dfd0fd0aff53895c08a264904818b14873 Mon Sep 17 00:00:00 2001
From: OZG-Cloud Team <noreply@ozg-sh.de>
Date: Wed, 12 Apr 2023 09:19:10 +0200
Subject: [PATCH] OZG-3136 cleanup integration testing

---
 .gitignore                                    |   2 +
 xta-adapter/pom.xml                           |   5 ++
 xta-adapter/readme.md                         |  19 +++++++-
 .../eingang/xta/XtaRemoteService.java         |   4 +-
 .../xta/XtaRemoteServiceConfiguration.java    |  44 +++++++-----------
 .../src/main/resources/application-local.yml  |   5 ++
 .../src/main/resources/application.yml        |   9 ----
 .../eingang/xta/XtaApplicationTest.java       |  20 ++++++++
 .../eingang/xta/XtaRemoteServiceITCase.java   |  23 +++++----
 .../src/test/resources/KOP_SH_KIEL_DEV.p12    | Bin 13210 -> 0 bytes
 .../src/test/resources/KOP_SH_KIEL_DEV.pfx    | Bin 7678 -> 0 bytes
 .../src/test/resources/application-itcase.yml |   5 ++
 .../src/test/resources/xtaTestStore.p12       | Bin 0 -> 2768 bytes
 13 files changed, 86 insertions(+), 50 deletions(-)
 create mode 100644 xta-adapter/src/main/resources/application-local.yml
 create mode 100644 xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaApplicationTest.java
 delete mode 100644 xta-adapter/src/test/resources/KOP_SH_KIEL_DEV.p12
 delete mode 100644 xta-adapter/src/test/resources/KOP_SH_KIEL_DEV.pfx
 create mode 100644 xta-adapter/src/test/resources/application-itcase.yml
 create mode 100644 xta-adapter/src/test/resources/xtaTestStore.p12

diff --git a/.gitignore b/.gitignore
index 863349c7..5224ca6b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -32,3 +32,5 @@ build/
 
 ### VS Code ###
 .vscode/
+
+application-sec.yml
diff --git a/xta-adapter/pom.xml b/xta-adapter/pom.xml
index 6b216bd1..4740b9a1 100644
--- a/xta-adapter/pom.xml
+++ b/xta-adapter/pom.xml
@@ -40,6 +40,11 @@
 			<groupId>org.springframework.ws</groupId>
 			<artifactId>spring-ws-support</artifactId>
 		</dependency>
+		<dependency>
+			<groupId>org.springframework.ws</groupId>
+			<artifactId>spring-ws-test</artifactId>
+			<scope>test</scope>
+		</dependency>
 		<!--own project -->
 		<dependency>
 			<groupId>de.itvsh.kop.eingangsadapter</groupId>
diff --git a/xta-adapter/readme.md b/xta-adapter/readme.md
index 9381635b..e5541a8c 100644
--- a/xta-adapter/readme.md
+++ b/xta-adapter/readme.md
@@ -1,5 +1,22 @@
+# Keystore passwort
+Das Keystore und Passwort müssen extra hinzugefügt werden. Keystore irgendwo im Dateisystem ablegen.
+Dazu eine Datei 'application-sec.yml' anlegen:
+
+ozgcloud:
+  xta:
+    keystore:
+      store: file:<pfad zum keystore>
+      password: <geheim>
+      
+Den Dienst dann mit dem Spring-Profile 'sec' starten.
+
 # Ceritifcade chain
 
 lokal das Root CA in keystore laden:
 
-    sudo keytool -trustcacerts -keystore /lib/jvm/java-1.17.0-openjdk-amd64/lib/security/cacerts -storepass changeit -importcert -alias dataportRoot -file DataportRootCA02.crt
\ No newline at end of file
+    sudo keytool -trustcacerts -keystore /lib/jvm/java-1.17.0-openjdk-amd64/lib/security/cacerts -storepass changeit -importcert -alias dataportRoot -file DataportRootCA02.crt
+    
+# Port forwarding
+Um eine Verbindung zum Nachrichtenbroker aufbauen zu können, muss diese über den Hetzner-Server geroutet werden:
+
+ssh -L 3000:[Hetzner-Server-IP]:443 ozg-sh.de
\ No newline at end of file
diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteService.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteService.java
index 40d588c0..931703ba 100644
--- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteService.java
+++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteService.java
@@ -22,8 +22,6 @@ import eu.osci.ws._2008._05.transport.ObjectFactory;
 @Service
 class XtaRemoteService {
 
-	private static final String URI_TEMPLATE = "https://%s/MB_XTA-WS/XTA210msgBoxPort.svc";
-
 	@Autowired
 	@Valid
 	private XtaProperties properties;
@@ -55,7 +53,7 @@ class XtaRemoteService {
 
 	private URI getTargetUri() {
 		try {
-			return new URI(URI_TEMPLATE.formatted(properties.getServer().getName()));
+			return new URI(XtaRemoteServiceConfiguration.URI_TEMPLATE.formatted(properties.getServer().getName()));
 		} catch (URISyntaxException e) {
 			throw new TechnicalException("Error building target url: " + e);
 		}
diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteServiceConfiguration.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteServiceConfiguration.java
index d4032da2..f57da92e 100644
--- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteServiceConfiguration.java
+++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteServiceConfiguration.java
@@ -10,9 +10,7 @@ import java.security.NoSuchAlgorithmException;
 import java.security.cert.CertificateException;
 import java.security.cert.X509Certificate;
 
-import javax.net.ssl.HostnameVerifier;
 import javax.net.ssl.KeyManagerFactory;
-import javax.net.ssl.SSLSession;
 import javax.net.ssl.TrustManager;
 import javax.net.ssl.X509TrustManager;
 
@@ -20,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.webservices.client.WebServiceTemplateCustomizer;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Profile;
 import org.springframework.oxm.jaxb.Jaxb2Marshaller;
 import org.springframework.ws.client.support.destination.DestinationProvider;
 import org.springframework.ws.client.support.interceptor.ClientInterceptor;
@@ -33,7 +32,7 @@ import de.itvsh.kop.eingangsadapter.common.errorhandling.TechnicalException;
 @Configuration
 public class XtaRemoteServiceConfiguration {
 
-	private static final String KEYSTORE_TYPE = "PKCS12";
+	static final String URI_TEMPLATE = "https://%s/MB_XTA-WS/XTA210msgBoxPort.svc";
 
 	@Autowired
 	private XtaProperties properties;
@@ -47,9 +46,9 @@ public class XtaRemoteServiceConfiguration {
 	}
 
 	@Bean
+	@Profile("local")
 	WebServiceTemplateCustomizer webServiceTemplateCustomizer() {
-		return template -> template
-				.setMessageSender(messageSender());
+		return template -> template.setMessageSender(messageSender());
 	}
 
 	@Bean
@@ -79,7 +78,7 @@ public class XtaRemoteServiceConfiguration {
 	DestinationProvider destinationProvider() {
 		return () -> {
 			try {
-				return new URI("https://localhost:3000/MB_XTA-WS/XTA210msgBoxPort.svc");
+				return new URI(URI_TEMPLATE.formatted(properties.getServer().getAddress()));
 			} catch (URISyntaxException e) {
 				throw new TechnicalException("Error building URI", e);
 			}
@@ -94,26 +93,18 @@ public class XtaRemoteServiceConfiguration {
 	}
 
 	@Bean
+	@Profile("local")
 	WebServiceMessageSender messageSender() {
-		return initMessageSender();
-	}
-
-	HttpsUrlConnectionMessageSender initMessageSender() {
 		try {
 			var keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
 			keyManagerFactory.init(xtaKeyStore(), properties.getKeyStore().getPassword());
 
-			var messageSender = new HttpsUrlConnectionMessageSender();
-			messageSender.setKeyManagers(keyManagerFactory.getKeyManagers());
-			messageSender.setTrustManagers(new TrustManager[] { new UnTrustworthyTrustManager() });
-			messageSender.setHostnameVerifier(new HostnameVerifier() {
-
-				@Override
-				public boolean verify(String hostname, SSLSession session) {
-					return true;
-				}
-			});
-			return messageSender;
+			var messageSender1 = new HttpsUrlConnectionMessageSender();
+			messageSender1.setKeyManagers(keyManagerFactory.getKeyManagers());
+			messageSender1.setTrustManagers(new TrustManager[] { new UnTrustworthyTrustManager() });
+			messageSender1.setHostnameVerifier((hostname, session) -> true); // NOSONAR only for test/local
+
+			return messageSender1;
 		} catch (Exception e) {
 			throw new TechnicalException("Error initializating message sender.", e);
 		}
@@ -122,11 +113,8 @@ public class XtaRemoteServiceConfiguration {
 	@Bean
 	KeyStore xtaKeyStore() throws KeyStoreException, CertificateException, NoSuchAlgorithmException, IOException {
 		var keyStoreResource = properties.getKeyStore().getFile();
-//		var keysres = XtaRemoteServiceConfiguration.class.getResourceAsStream("/KOP_SH_KIEL_DEV.p12");
-//		assert (keysres != null);
-		var keyStore = KeyStore.getInstance(KEYSTORE_TYPE);
+		var keyStore = KeyStore.getInstance(properties.getKeyStore().getType());
 		try (InputStream keyStoreStream = keyStoreResource.getInputStream()) {
-//		try (InputStream keyStoreStream = keysres) {
 			keyStore.load(keyStoreStream, properties.getKeyStore().getPassword());
 		}
 
@@ -135,16 +123,16 @@ public class XtaRemoteServiceConfiguration {
 
 	static class UnTrustworthyTrustManager implements X509TrustManager {
 		@Override
-		public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
+		public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException { // NOSONAR only for test/local
 		}
 
 		@Override
-		public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
+		public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException { // NOSONAR only for test/local
 		}
 
 		@Override
 		public X509Certificate[] getAcceptedIssuers() {
-			return null;
+			return new X509Certificate[0];
 		}
 	}
 }
diff --git a/xta-adapter/src/main/resources/application-local.yml b/xta-adapter/src/main/resources/application-local.yml
new file mode 100644
index 00000000..b6142ac1
--- /dev/null
+++ b/xta-adapter/src/main/resources/application-local.yml
@@ -0,0 +1,5 @@
+ozgcloud:
+  xta:
+    server:
+      address: localhost:3000
+      name: LI33-0005
\ No newline at end of file
diff --git a/xta-adapter/src/main/resources/application.yml b/xta-adapter/src/main/resources/application.yml
index 980bf841..710c65c6 100644
--- a/xta-adapter/src/main/resources/application.yml
+++ b/xta-adapter/src/main/resources/application.yml
@@ -1,8 +1,3 @@
-spring:
-  profiles:
-    active:
-    - sec
-
 logging:
   level:
     ROOT: WARN
@@ -13,11 +8,7 @@ logging:
 ozgcloud:
   xta:
     max-list-elements: 10
-    server:
-       name: LI33-0005
-       address: localhost:3000
     keystore:
-      file: classpath:KOP_SH_KIEL_DEV.p12
       type: PKCS12
     actions:
       status-list: "http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxStatusListRequest"
\ No newline at end of file
diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaApplicationTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaApplicationTest.java
new file mode 100644
index 00000000..8a57fa74
--- /dev/null
+++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaApplicationTest.java
@@ -0,0 +1,20 @@
+package de.ozgcloud.eingang.xta;
+
+import static org.junit.Assert.*;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.ActiveProfiles;
+
+import de.itvsh.kop.eingangsadapter.Application;
+
+@ActiveProfiles({ "local", "itcase" })
+@SpringBootTest(classes = Application.class)
+class XtaApplicationTest {
+
+	@Test
+	void startup() {
+		// should start without exception;
+		assertTrue(true);
+	}
+}
diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceITCase.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceITCase.java
index d7a52c3a..ed30f74a 100644
--- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceITCase.java
+++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceITCase.java
@@ -2,10 +2,9 @@ package de.ozgcloud.eingang.xta;
 
 import static org.assertj.core.api.Assertions.*;
 
-import java.net.URISyntaxException;
-
 import jakarta.validation.Valid;
 
+import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -13,14 +12,15 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.ActiveProfiles;
 
 import de.itvsh.kop.eingangsadapter.Application;
-import eu.osci.ws._2008._05.transport.MsgStatusListType;
+import lombok.SneakyThrows;
 
-@ActiveProfiles({ "itcase", "local", "sec" })
+@Disabled("real live test - do only activate for manual testing")
+@ActiveProfiles({ "itcase", "local" })
 @SpringBootTest(classes = Application.class)
 class XtaRemoteServiceITCase {
 
 	@Autowired
-	private XtaRemoteService xtaRemoteService;
+	private XtaRemoteService remoteService;
 	@Autowired
 	@Valid
 	private XtaProperties xtaProperties;
@@ -33,11 +33,16 @@ class XtaRemoteServiceITCase {
 		}
 	}
 
-	@Test
-	void test() throws URISyntaxException {
-		MsgStatusListType rsp = xtaRemoteService.getStatusList();
+	@Nested
+	class TestGetStatusList {
+
+		@SneakyThrows
+		@Test
+		void shouldSendRequestWithIdentifier() {
+
+			remoteService.getStatusList();
 
-		assertThat(rsp.getMessageMetaData()).isNotEmpty();
+		}
 	}
 
 }
diff --git a/xta-adapter/src/test/resources/KOP_SH_KIEL_DEV.p12 b/xta-adapter/src/test/resources/KOP_SH_KIEL_DEV.p12
deleted file mode 100644
index 2fba6f4b2e751d74d1ce155b2f6415d83d256410..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 13210
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
Q`OUDo@0Tz!Gqx=N0HmM>L;wH)

diff --git a/xta-adapter/src/test/resources/KOP_SH_KIEL_DEV.pfx b/xta-adapter/src/test/resources/KOP_SH_KIEL_DEV.pfx
deleted file mode 100644
index e3cfb904cfa693ffa5e61e55c6bea59195d4a9c3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7678
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
WY5DRfy{-hul?USwJl+JFiv<9j1?fuw

diff --git a/xta-adapter/src/test/resources/application-itcase.yml b/xta-adapter/src/test/resources/application-itcase.yml
new file mode 100644
index 00000000..3507852f
--- /dev/null
+++ b/xta-adapter/src/test/resources/application-itcase.yml
@@ -0,0 +1,5 @@
+ozgcloud:
+  xta:
+    keystore:
+      file: classpath:xtaTestStore.p12
+      password: <geheim>
\ No newline at end of file
diff --git a/xta-adapter/src/test/resources/xtaTestStore.p12 b/xta-adapter/src/test/resources/xtaTestStore.p12
new file mode 100644
index 0000000000000000000000000000000000000000..a0cc212c49745a428186d0d4f2f73dd6ac7f24ff
GIT binary patch
literal 2768
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
P6^{eYHd-+;sS5xAda~bQ

literal 0
HcmV?d00001

-- 
GitLab