From 2873fe7de4313e96b593cab63371d050574a4086 Mon Sep 17 00:00:00 2001
From: Alan Braz <alanbraz@br.ibm.com>
Date: Thu, 26 Mar 2020 15:54:59 -0300
Subject: [PATCH] move SSL skip to ibm folder

---
 .../step_definitions/index/record/Steps.java  |  7 +-
 .../opengroup/osdu/util/ElasticUtilsIBM.java  | 97 +++++++++++++++++++
 2 files changed, 101 insertions(+), 3 deletions(-)
 create mode 100644 testing/indexer-test-ibm/src/test/java/org/opengroup/osdu/util/ElasticUtilsIBM.java

diff --git a/testing/indexer-test-ibm/src/test/java/org/opengroup/osdu/step_definitions/index/record/Steps.java b/testing/indexer-test-ibm/src/test/java/org/opengroup/osdu/step_definitions/index/record/Steps.java
index 2d402c72f..126934d41 100644
--- a/testing/indexer-test-ibm/src/test/java/org/opengroup/osdu/step_definitions/index/record/Steps.java
+++ b/testing/indexer-test-ibm/src/test/java/org/opengroup/osdu/step_definitions/index/record/Steps.java
@@ -1,21 +1,22 @@
 package org.opengroup.osdu.step_definitions.index.record;
 
-import lombok.extern.java.Log;
 import org.opengroup.osdu.common.RecordSteps;
+import org.opengroup.osdu.util.ElasticUtilsIBM;
 import org.opengroup.osdu.util.IBMHTTPClient;
 
+import cucumber.api.DataTable;
 import cucumber.api.Scenario;
 import cucumber.api.java.Before;
-import cucumber.api.DataTable;
 import cucumber.api.java.en.Given;
 import cucumber.api.java.en.Then;
 import cucumber.api.java.en.When;
+import lombok.extern.java.Log;
 
 @Log
 public class Steps extends RecordSteps {
 
     public Steps() {
-        super(new IBMHTTPClient());
+        super(new IBMHTTPClient(), new ElasticUtilsIBM());
     }
 
     @Before
diff --git a/testing/indexer-test-ibm/src/test/java/org/opengroup/osdu/util/ElasticUtilsIBM.java b/testing/indexer-test-ibm/src/test/java/org/opengroup/osdu/util/ElasticUtilsIBM.java
new file mode 100644
index 000000000..62055bc74
--- /dev/null
+++ b/testing/indexer-test-ibm/src/test/java/org/opengroup/osdu/util/ElasticUtilsIBM.java
@@ -0,0 +1,97 @@
+package org.opengroup.osdu.util;
+
+import java.security.SecureRandom;
+import java.security.cert.X509Certificate;
+import java.util.Base64;
+
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+
+import org.apache.http.Header;
+import org.apache.http.HttpHost;
+import org.apache.http.conn.ssl.SSLSocketFactory;
+import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
+import org.apache.http.message.BasicHeader;
+import org.elasticsearch.client.RestClient;
+import org.elasticsearch.client.RestClientBuilder;
+import org.elasticsearch.client.RestClientBuilder.HttpClientConfigCallback;
+import org.elasticsearch.client.RestHighLevelClient;
+
+import lombok.extern.java.Log;
+
+
+/**
+ * All util methods to use elastic apis for tests
+ * It should be used only in the Setup or TearDown phase of the test
+ */
+@Log
+public class ElasticUtilsIBM extends ElasticUtils {
+	
+	private static final int REST_CLIENT_CONNECT_TIMEOUT = 5000;
+    private static final int REST_CLIENT_SOCKET_TIMEOUT = 60000;
+    private static final int REST_CLIENT_RETRY_TIMEOUT = 60000;
+
+    public ElasticUtilsIBM() {
+        super();
+    }
+    
+    @Override
+    protected RestHighLevelClient createClient(String username, String password, String host) {
+
+        RestHighLevelClient restHighLevelClient;
+        int port = Config.getPort();
+        try {
+            String rawString = String.format("%s:%s", username, password);
+            RestClientBuilder builder = RestClient.builder(new HttpHost(host, port, "https"));
+            builder.setRequestConfigCallback(requestConfigBuilder -> requestConfigBuilder.setConnectTimeout(REST_CLIENT_CONNECT_TIMEOUT)
+                    .setSocketTimeout(REST_CLIENT_SOCKET_TIMEOUT));
+            builder.setMaxRetryTimeoutMillis(REST_CLIENT_RETRY_TIMEOUT);
+
+            Header[] defaultHeaders = new Header[]{
+                    new BasicHeader("client.transport.nodes_sampler_interval", "30s"),
+                    new BasicHeader("client.transport.ping_timeout", "30s"),
+                    new BasicHeader("client.transport.sniff", "false"),
+                    new BasicHeader("request.headers.X-Found-Cluster", Config.getElasticHost()),
+                    new BasicHeader("cluster.name", Config.getElasticHost()),
+                    new BasicHeader("xpack.security.transport.ssl.enabled", Boolean.toString(true)),
+                    new BasicHeader("Authorization", String.format("Basic %s", Base64.getEncoder().encodeToString(rawString.getBytes()))),
+            };
+            
+            
+            SSLContext sslContext = SSLContext.getInstance("SSL");
+            // set up a TrustManager that trusts everything
+	           sslContext.init(null, new TrustManager[] { new X509TrustManager() {
+	           	public X509Certificate[] getAcceptedIssuers() {
+	           		System.out.println("getAcceptedIssuers =============");
+	           		return null;
+	           	}
+	           	public void checkClientTrusted(X509Certificate[] certs,
+	           			String authType) {
+	           		System.out.println("checkClientTrusted =============");
+	           	}
+	           	public void checkServerTrusted(X509Certificate[] certs,
+	           			String authType) {
+	           		System.out.println("checkServerTrusted =============");
+	           	}
+	           } }, new SecureRandom());
+              
+               builder.setHttpClientConfigCallback(new HttpClientConfigCallback() {
+                   @Override
+                   public HttpAsyncClientBuilder customizeHttpClient(
+                           HttpAsyncClientBuilder httpClientBuilder) {
+                       return httpClientBuilder
+                       		.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER)
+                       		.setSSLContext(sslContext);
+                   }
+               })
+               .setDefaultHeaders(defaultHeaders);
+            restHighLevelClient = new RestHighLevelClient(builder);
+
+        } catch (Exception e) {
+            throw new AssertionError("Setup elastic error");
+        }
+        return restHighLevelClient;
+    }
+    
+}
\ No newline at end of file
-- 
GitLab