Make HTTP/s Optional 87/83787/1
authortang peng <tang.peng5@zte.com.cn>
Sat, 30 Mar 2019 07:47:12 +0000 (07:47 +0000)
committertangpeng <tang.peng5@zte.com.cn>
Sat, 30 Mar 2019 07:50:39 +0000 (07:50 +0000)
Change-Id: Ia09126b06ad43f05582ae0f3dd8692df223953fe
Issue-ID: HOLMES-207
Signed-off-by: tang peng <tang.peng5@zte.com.cn>
holmes-actions/pom.xml
holmes-actions/src/main/java/org/onap/holmes/common/aai/AaiQuery.java
holmes-actions/src/main/java/org/onap/holmes/common/dmaap/Publisher.java
holmes-actions/src/main/java/org/onap/holmes/common/utils/HttpsUtils.java
holmes-actions/src/test/java/org/onap/holmes/common/aai/AaiQueryTest.java
holmes-actions/src/test/java/org/onap/holmes/common/utils/HttpsUtilsTest.java
pom.xml
version.properties

index 3e0e7a6..22fbe48 100644 (file)
@@ -12,7 +12,7 @@
     <parent>\r
         <groupId>org.onap.holmes.common</groupId>\r
         <artifactId>holmes-common-parent</artifactId>\r
-        <version>1.2.7</version>\r
+        <version>1.2.8</version>\r
     </parent>\r
 \r
     <name>holmes-common-service</name>\r
index 919f329..b11cafc 100644 (file)
@@ -123,7 +123,7 @@ public class AaiQuery {
         CloseableHttpClient httpClient = null;
         HttpGet httpGet = new HttpGet(url);
         try {
-            httpClient = HttpsUtils.getHttpClient(HttpsUtils.DEFUALT_TIMEOUT);
+            httpClient = HttpsUtils.getHttpsClient(HttpsUtils.DEFUALT_TIMEOUT);
             HttpResponse httpResponse = HttpsUtils.get(httpGet, getHeaders(), httpClient);
             response = HttpsUtils.extractResponseEntity(httpResponse);
         } catch (Exception e) {
index 09bb013..d95853d 100644 (file)
@@ -17,12 +17,10 @@ package org.onap.holmes.common.dmaap;
 \r
 import java.io.IOException;\r
 import lombok.extern.slf4j.Slf4j;\r
-import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;\r
 import org.apache.http.client.methods.HttpPost;\r
 import org.apache.http.impl.client.CloseableHttpClient;\r
 import org.onap.holmes.common.dmaap.entity.PolicyMsg;\r
 import org.onap.holmes.common.exception.CorrelationException;\r
-import com.alibaba.fastjson.JSON;\r
 import com.google.gson.Gson;\r
 import java.util.HashMap;\r
 import javax.ws.rs.core.MediaType;\r
@@ -61,7 +59,7 @@ public class Publisher {
         CloseableHttpClient httpClient = null;\r
         HttpPost httpPost = new HttpPost(url);\r
         try {\r
-            httpClient = HttpsUtils.getHttpClient(HttpsUtils.DEFUALT_TIMEOUT);\r
+            httpClient = HttpsUtils.getConditionalHttpsClient(HttpsUtils.DEFUALT_TIMEOUT);\r
             httpResponse = HttpsUtils.post(httpPost, headers, new HashMap<>(), new StringEntity(content, "utf-8"), httpClient);\r
         } catch (Exception e) {\r
             throw new CorrelationException("Failed to connect to DCAE.", e);\r
index 2df4d55..2aa5695 100644 (file)
@@ -1,11 +1,11 @@
 /**
  * Copyright 2017 ZTE Corporation.
- *
+ * <p>
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
  * in compliance with the License. You may obtain a copy of the License at
- *
+ * <p>
  * http://www.apache.org/licenses/LICENSE-2.0
- *
+ * <p>
  * Unless required by applicable law or agreed to in writing, software distributed under the License
  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
  * or implied. See the License for the specific language governing permissions and limitations under
@@ -21,6 +21,7 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+
 import lombok.extern.slf4j.Slf4j;
 import org.apache.http.Consts;
 import org.apache.http.HttpEntity;
@@ -43,12 +44,14 @@ import org.apache.http.conn.ssl.NoopHostnameVerifier;
 import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
 import org.apache.http.conn.ssl.TrustStrategy;
 import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
 import org.apache.http.impl.client.HttpClients;
 import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
 import org.apache.http.message.BasicNameValuePair;
 import org.apache.http.ssl.SSLContextBuilder;
 import org.apache.http.util.EntityUtils;
 import org.jvnet.hk2.annotations.Service;
+import org.onap.holmes.common.config.MicroServiceConfig;
 import org.onap.holmes.common.exception.CorrelationException;
 
 @Slf4j
@@ -61,7 +64,7 @@ public class HttpsUtils {
     private static SSLContextBuilder sslContextBuilder = null;
     public static final int DEFUALT_TIMEOUT = 30000;
 
-    static{
+    static {
         try {
             sslContextBuilder = new SSLContextBuilder();
             sslContextBuilder.loadTrustMaterial(null, new TrustStrategy() {
@@ -89,12 +92,12 @@ public class HttpsUtils {
     }
 
     public static HttpResponse post(HttpPost httpPost, Map<String, String> header, Map<String, String> param,
-            HttpEntity entity, CloseableHttpClient httpClient) throws CorrelationException {
+                                    HttpEntity entity, CloseableHttpClient httpClient) throws CorrelationException {
         return getPostAndPutResponse(httpPost, header, param, entity, httpClient);
     }
 
     public static HttpResponse put(HttpPut httpPut, Map<String, String> header, Map<String, String> param,
-            HttpEntity entity, CloseableHttpClient httpClient) throws CorrelationException {
+                                   HttpEntity entity, CloseableHttpClient httpClient) throws CorrelationException {
         return getPostAndPutResponse(httpPut, header, param, entity, httpClient);
     }
 
@@ -124,8 +127,8 @@ public class HttpsUtils {
     }
 
     private static HttpResponse getPostAndPutResponse(HttpEntityEnclosingRequestBase requestBase,
-            Map<String, String> header, Map<String, String> param, HttpEntity entity,
-            CloseableHttpClient httpClient) throws CorrelationException {
+                                                      Map<String, String> header, Map<String, String> param, HttpEntity entity,
+                                                      CloseableHttpClient httpClient) throws CorrelationException {
         try {
             addHeaders(header, requestBase);
             addParams(param, requestBase);
@@ -139,7 +142,7 @@ public class HttpsUtils {
     }
 
     private static HttpResponse getGetAndDeleteResponse(HttpRequestBase requestBase,
-            Map<String, String> header, CloseableHttpClient httpClient) throws CorrelationException {
+                                                        Map<String, String> header, CloseableHttpClient httpClient) throws CorrelationException {
         try {
             addHeaders(header, requestBase);
             return executeRequest(httpClient, requestBase);
@@ -169,23 +172,39 @@ public class HttpsUtils {
         try {
             httpResponse = httpClient.execute(httpRequest);
         } catch (Exception e) {
-            throw new CorrelationException("Failed to get data from server" ,e);
+            throw new CorrelationException("Failed to get data from server"e);
         }
         return httpResponse;
     }
 
-    public static CloseableHttpClient getHttpClient(int timeout) {
+    public static CloseableHttpClient getConditionalHttpsClient(int timeout) {
+        HttpClientBuilder builder = getHttpClientBuilder(timeout);
+        if (isHttpsEnabled()) {
+            builder.setSSLSocketFactory(sslConnectionSocketFactory);
+        }
+
+        return builder.build();
+    }
+
+    public static CloseableHttpClient getHttpsClient(int timeout) {
+        HttpClientBuilder builder = getHttpClientBuilder(timeout);
+        return builder.setSSLSocketFactory(sslConnectionSocketFactory).build();
+    }
+
+    private static HttpClientBuilder getHttpClientBuilder(int timeout) {
         RequestConfig defaultRequestConfig = RequestConfig.custom()
                 .setSocketTimeout(timeout)
                 .setConnectTimeout(timeout)
                 .setConnectionRequestTimeout(timeout)
                 .build();
-        CloseableHttpClient httpClient = HttpClients.custom()
+
+        return HttpClients.custom()
                 .setDefaultRequestConfig(defaultRequestConfig)
-                .setSSLSocketFactory(sslConnectionSocketFactory)
                 .setConnectionManager(connectionManager)
-                .setConnectionManagerShared(true)
-                .build();
-        return httpClient;
+                .setConnectionManagerShared(true);
+    }
+
+    public static boolean isHttpsEnabled() {
+        return Boolean.valueOf(MicroServiceConfig.getEnv("ENABLE_ENCRYPT"));
     }
 }
index 9f211d9..7ce3fcf 100644 (file)
@@ -16,6 +16,7 @@
 
 package org.onap.holmes.common.aai;
 import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.expect;
 import static org.hamcrest.core.IsEqual.equalTo;
 import static org.junit.Assert.assertThat;
 import static org.powermock.api.mockito.PowerMockito.when;
@@ -26,6 +27,7 @@ import org.apache.http.HttpResponse;
 import org.apache.http.client.methods.HttpGet;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.easymock.EasyMock;
+import org.junit.BeforeClass;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
@@ -55,6 +57,11 @@ public class AaiQueryTest {
     private AaiQuery aaiQuery;
     private AaiResponseUtil aaiResponseUtil;
 
+    @BeforeClass
+    static public void before() {
+        System.setProperty("ENABLE_ENCRYPT", "true");
+    }
+
     @Test
     public void testAaiQuery_getAaiVnfData_ok() throws Exception {
         PowerMock.resetAll();
@@ -93,7 +100,7 @@ public class AaiQueryTest {
         aaiQuery = PowerMock.createPartialMock(AaiQuery.class, "getVmResourceLinks");
         aaiResponseUtil = new AaiResponseUtil();
         Whitebox.setInternalState(aaiQuery, "aaiResponseUtil", aaiResponseUtil);
-        PowerMockito.mockStatic(HttpsUtils.class);
+        PowerMock.mockStatic(HttpsUtils.class);
         Map<String, String> headers = new HashMap<>();
         headers.put("X-TransactionId", AaiConfig.X_TRANSACTION_ID);
         headers.put("X-FromAppId", AaiConfig.X_FROMAPP_ID);
@@ -102,11 +109,12 @@ public class AaiQueryTest {
         String url = "https://aai.onap:8443/aai/v11/cloud-infrastructure";
         HttpResponse httpResponse = PowerMock.createMock(HttpResponse.class);
         CloseableHttpClient httpClient = PowerMock.createMock(CloseableHttpClient.class);
-        when(HttpsUtils.getHttpClient(30000)).thenReturn(httpClient);
+        expect(HttpsUtils.getHttpsClient(30000)).andReturn(httpClient);
         HttpGet httpGet = new HttpGet(url);
         PowerMock.expectNew(HttpGet.class, url).andReturn(httpGet);
-        when(HttpsUtils.get(httpGet, headers, httpClient)).thenReturn(httpResponse);
-        when(HttpsUtils.extractResponseEntity(httpResponse)).thenReturn("{}");
+        expect(HttpsUtils.get(anyObject(HttpGet.class), anyObject(Map.class),
+                anyObject(CloseableHttpClient.class))).andReturn(httpResponse);
+        expect(HttpsUtils.extractResponseEntity(httpResponse)).andReturn("{}");
 
         PowerMock.expectPrivate(aaiQuery, "getVmResourceLinks", "test1", "test2")
                 .andReturn("/aai/v11/cloud-infrastructure");
@@ -120,7 +128,6 @@ public class AaiQueryTest {
     }
 
     @Test
-
     public void testAaiQuery_getAaiVmData_httpsutils_exception() throws Exception {
         PowerMock.resetAll();
         thrown.expect(CorrelationException.class);
@@ -130,7 +137,7 @@ public class AaiQueryTest {
         aaiResponseUtil = new AaiResponseUtil();
         Whitebox.setInternalState(aaiQuery, "aaiResponseUtil", aaiResponseUtil);
 
-        PowerMockito.mockStatic(HttpsUtils.class);
+        PowerMock.mockStatic(HttpsUtils.class);
         Map<String, String> headers = new HashMap<>();
         headers.put("X-TransactionId", AaiConfig.X_TRANSACTION_ID);
         headers.put("X-FromAppId", AaiConfig.X_FROMAPP_ID);
@@ -138,11 +145,12 @@ public class AaiQueryTest {
         headers.put("Accept", "application/json");
         String url = "https://aai.onap:8443/aai/v11/cloud-infrastructure";
         CloseableHttpClient httpClient = PowerMock.createMock(CloseableHttpClient.class);
-        when(HttpsUtils.getHttpClient(30000)).thenReturn(httpClient);
+        EasyMock.expect(HttpsUtils.getHttpsClient(30000)).andReturn(httpClient);
         HttpGet httpGet = new HttpGet(url);
         PowerMock.expectNew(HttpGet.class, url).andReturn(httpGet);
-        when(HttpsUtils.get(httpGet, headers, httpClient)).thenThrow(new CorrelationException(""));
-        PowerMockito.mockStatic(MicroServiceConfig.class);
+        EasyMock.expect(HttpsUtils.get(anyObject(HttpGet.class), anyObject(Map.class),
+                anyObject(CloseableHttpClient.class))).andThrow(new CorrelationException(""));
+        PowerMock.mockStatic(MicroServiceConfig.class);
         PowerMock.expectPrivate(aaiQuery, "getVmResourceLinks", "test1", "test2")
                 .andReturn("/aai/v11/cloud-infrastructure");
         PowerMock.expectPrivate(httpClient,"close");
@@ -214,7 +222,7 @@ public class AaiQueryTest {
     public void testAaiQuery_getResponse_ok() throws Exception {
         PowerMock.resetAll();
         aaiQuery = new AaiQuery();
-        PowerMockito.mockStatic(HttpsUtils.class);
+        PowerMock.mockStatic(HttpsUtils.class);
         Map<String, String> headers = new HashMap<>();
         headers.put("X-TransactionId", AaiConfig.X_TRANSACTION_ID);
         headers.put("X-FromAppId", AaiConfig.X_FROMAPP_ID);
@@ -224,11 +232,12 @@ public class AaiQueryTest {
 
         HttpResponse httpResponse = PowerMock.createMock(HttpResponse.class);
         CloseableHttpClient httpClient = PowerMock.createMock(CloseableHttpClient.class);
-        when(HttpsUtils.getHttpClient(30000)).thenReturn(httpClient);
+        expect(HttpsUtils.getHttpsClient(30000)).andReturn(httpClient);
         HttpGet httpGet = new HttpGet(url);
         PowerMock.expectNew(HttpGet.class, url).andReturn(httpGet);
-        when(HttpsUtils.get(httpGet, headers, httpClient)).thenReturn(httpResponse);
-        when(HttpsUtils.extractResponseEntity(httpResponse)).thenReturn("");
+        expect(HttpsUtils.get(anyObject(HttpGet.class), anyObject(Map.class),
+                anyObject(CloseableHttpClient.class))).andReturn(httpResponse);
+        expect(HttpsUtils.extractResponseEntity(httpResponse)).andReturn("");
         PowerMock.expectPrivate(httpClient, "close");
         EasyMock.expectLastCall();
 
@@ -246,7 +255,7 @@ public class AaiQueryTest {
         thrown.expectMessage("Failed to get data from aai");
         aaiQuery = new AaiQuery();
 
-        PowerMockito.mockStatic(HttpsUtils.class);
+        PowerMock.mockStatic(HttpsUtils.class);
         Map<String, String> headers = new HashMap<>();
         headers.put("X-TransactionId", AaiConfig.X_TRANSACTION_ID);
         headers.put("X-FromAppId", AaiConfig.X_FROMAPP_ID);
@@ -254,10 +263,10 @@ public class AaiQueryTest {
         headers.put("Accept", "application/json");
         String url = "host_url";
         CloseableHttpClient httpClient = PowerMock.createMock(CloseableHttpClient.class);
-        when(HttpsUtils.getHttpClient(30000)).thenReturn(httpClient);
+        expect(HttpsUtils.getHttpsClient(30000)).andReturn(httpClient);
         HttpGet httpGet = new HttpGet(url);
         PowerMock.expectNew(HttpGet.class, url).andReturn(httpGet);
-        when(HttpsUtils.get(httpGet, headers, httpClient)).thenThrow(new CorrelationException(""));
+        expect(HttpsUtils.get(httpGet, headers, httpClient)).andThrow(new CorrelationException(""));
         PowerMock.expectPrivate(httpClient, "close");
         EasyMock.expectLastCall();
         PowerMock.replayAll();
index 3ff5dda..db9423a 100644 (file)
@@ -26,20 +26,16 @@ import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
 import org.apache.http.HttpStatus;
 import org.apache.http.StatusLine;
-import org.apache.http.client.config.RequestConfig;
 import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.client.methods.HttpDelete;
-import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
 import org.apache.http.client.methods.HttpGet;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.client.methods.HttpPut;
 import org.apache.http.client.methods.HttpRequestBase;
-import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
 import org.apache.http.entity.StringEntity;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClientBuilder;
 import org.apache.http.impl.client.HttpClients;
-import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
 import org.easymock.EasyMock;
 import org.junit.Before;
 import org.junit.Rule;
@@ -77,7 +73,7 @@ public class HttpsUtilsTest {
         String url = "host";
         Map<String, String> header = new HashMap<>();
         header.put("accept", "application/json");
-        CloseableHttpClient httpClient = HttpsUtils.getHttpClient(HttpsUtils.DEFUALT_TIMEOUT);
+        CloseableHttpClient httpClient = HttpsUtils.getConditionalHttpsClient(HttpsUtils.DEFUALT_TIMEOUT);
         HttpGet httpRequestBase = new HttpGet(url);
         HttpResponse httpResponse = HttpsUtils.get(httpRequestBase, header, httpClient);
         String response = HttpsUtils.extractResponseEntity(httpResponse);
@@ -121,7 +117,7 @@ public class HttpsUtilsTest {
         Map<String, String> header = new HashMap<>();
         header.put("accept", "application/json");
         HttpDelete httpRequestBase = new HttpDelete(url);
-        CloseableHttpClient httpClient = HttpsUtils.getHttpClient(HttpsUtils.DEFUALT_TIMEOUT);
+        CloseableHttpClient httpClient = HttpsUtils.getConditionalHttpsClient(HttpsUtils.DEFUALT_TIMEOUT);
         HttpResponse httpResponse = HttpsUtils.delete(httpRequestBase, header, httpClient);
         String response = HttpsUtils.extractResponseEntity(httpResponse);
         assertThat(response, equalTo(""));
@@ -165,7 +161,7 @@ public class HttpsUtilsTest {
         header.put("accept", "application/json");
         Map<String, String> para = new HashMap<>();
         para.put("tset", "1111");
-        CloseableHttpClient httpClient = HttpsUtils.getHttpClient(HttpsUtils.DEFUALT_TIMEOUT);
+        CloseableHttpClient httpClient = HttpsUtils.getConditionalHttpsClient(HttpsUtils.DEFUALT_TIMEOUT);
         HttpPost httpPost = new HttpPost(url);
         HttpResponse httpResponse = HttpsUtils.post(httpPost, header, para, null, httpClient);
         String response = HttpsUtils.extractResponseEntity(httpResponse);
@@ -212,7 +208,7 @@ public class HttpsUtilsTest {
         header.put("accept", "application/json");
         Map<String, String> para = new HashMap<>();
         para.put("tset", "1111");
-        CloseableHttpClient httpClient = HttpsUtils.getHttpClient(HttpsUtils.DEFUALT_TIMEOUT);
+        CloseableHttpClient httpClient = HttpsUtils.getConditionalHttpsClient(HttpsUtils.DEFUALT_TIMEOUT);
         HttpPut httpPut = new HttpPut(url);
         HttpResponse httpResponse = HttpsUtils.put(httpPut, header, para, null, httpClient);
         String response = HttpsUtils.extractResponseEntity(httpResponse);
@@ -265,14 +261,14 @@ public class HttpsUtilsTest {
     public void testHttpsUtil_getHttpClient_exception() throws Exception {
         PowerMock.resetAll();
         thrown.expect(Exception.class);
-        Whitebox.invokeMethod(HttpsUtils.class, "getHttpClient");
+        Whitebox.invokeMethod(HttpsUtils.class, "getConditionalHttpsClient");
         PowerMock.verifyAll();
     }
 
     @Test
     public void testHttpsUtil_getHttpClient_ok() throws Exception {
         PowerMock.resetAll();
-        HttpsUtils.getHttpClient(HttpsUtils.DEFUALT_TIMEOUT);
+        HttpsUtils.getConditionalHttpsClient(HttpsUtils.DEFUALT_TIMEOUT);
         PowerMock.verifyAll();
     }
 
diff --git a/pom.xml b/pom.xml
index 8dc1298..9572dfc 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -20,7 +20,7 @@
     <artifactId>holmes-common-parent</artifactId>\r
     <packaging>pom</packaging>\r
 \r
-    <version>1.2.7</version>\r
+    <version>1.2.8</version>\r
     <name>holmes-common</name>\r
     <modules>\r
         <module>holmes-actions</module>\r
index ea29878..c2bb012 100644 (file)
@@ -4,7 +4,7 @@
 \r
 major=1\r
 minor=2\r
-patch=7\r
+patch=8\r
 \r
 base_version=${major}.${minor}.${patch}\r
 \r