Release Version 1.3.3
[holmes/common.git] / holmes-actions / src / test / java / org / onap / holmes / common / utils / HttpsUtilsTest.java
index 21bf0e2..db9423a 100644 (file)
@@ -26,15 +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.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;
@@ -43,6 +44,7 @@ import org.junit.rules.ExpectedException;
 import org.junit.runner.RunWith;
 import org.onap.holmes.common.exception.CorrelationException;
 import org.powermock.api.easymock.PowerMock;
+import org.powermock.core.classloader.annotations.PowerMockIgnore;
 import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.powermock.modules.junit4.PowerMockRunner;
 import org.powermock.reflect.Whitebox;
@@ -50,6 +52,7 @@ import org.powermock.reflect.Whitebox;
 @PrepareForTest({CloseableHttpClient.class, HttpClientBuilder.class, HttpClients.class, CloseableHttpResponse.class,
         StatusLine.class})
 @RunWith(PowerMockRunner.class)
+@PowerMockIgnore("javax.net.ssl.*")
 public class HttpsUtilsTest {
 
     @Rule
@@ -64,28 +67,23 @@ public class HttpsUtilsTest {
 
     @Test
     public void testHttpsUtil_get_excepiton() throws Exception {
+        PowerMock.resetAll();
         thrown.expect(CorrelationException.class);
-        thrown.expectMessage("Failed to query data from server through GET method!");
+        thrown.expectMessage("Failed to connect to server");
         String url = "host";
         Map<String, String> header = new HashMap<>();
         header.put("accept", "application/json");
-        HttpResponse httpResponse = HttpsUtils.get(url, header);
+        CloseableHttpClient httpClient = HttpsUtils.getConditionalHttpsClient(HttpsUtils.DEFUALT_TIMEOUT);
+        HttpGet httpRequestBase = new HttpGet(url);
+        HttpResponse httpResponse = HttpsUtils.get(httpRequestBase, header, httpClient);
         String response = HttpsUtils.extractResponseEntity(httpResponse);
         assertThat(response, equalTo(""));
     }
 
     @Test
     public void testHttpsUtil_get_normal() throws Exception {
-        HttpClientBuilder hcb = PowerMock.createMock(HttpClientBuilder.class);
+        PowerMock.resetAll();
         CloseableHttpClient httpClient = PowerMock.createMock(CloseableHttpClient.class);
-        PowerMock.mockStatic(HttpClients.class);
-        EasyMock.expect(HttpClients.custom()).andReturn(hcb);
-        EasyMock.expect(hcb.setDefaultRequestConfig(EasyMock.anyObject(RequestConfig.class))).andReturn(hcb);
-        EasyMock.expect(hcb.setSSLSocketFactory(EasyMock.anyObject(SSLConnectionSocketFactory.class))).andReturn(hcb);
-        EasyMock.expect(hcb.setConnectionManager(EasyMock.anyObject(PoolingHttpClientConnectionManager.class))).andReturn(hcb);
-        EasyMock.expect(hcb.setConnectionManagerShared(true)).andReturn(hcb);
-        EasyMock.expect(hcb.build()).andReturn(httpClient);
-
         CloseableHttpResponse response = PowerMock.createMock(CloseableHttpResponse.class);
         EasyMock.expect(httpClient.execute(EasyMock.anyObject(HttpRequestBase.class))).andReturn(response);
         StatusLine sl = PowerMock.createMock(StatusLine.class);
@@ -94,9 +92,6 @@ public class HttpsUtilsTest {
         HttpEntity responseEntity = new StringEntity("Test");
         EasyMock.expect(response.getEntity()).andReturn(responseEntity);
 
-        httpClient.close();
-        EasyMock.expectLastCall();
-
         PowerMock.replayAll();
 
 
@@ -104,8 +99,8 @@ public class HttpsUtilsTest {
         Map<String, String> header = new HashMap<>();
         header.put("accept", "application/json");
 
-        HttpEntity entity = new StringEntity("Test");
-        HttpResponse httpResponse = HttpsUtils.get(url, header);
+        HttpGet httpRequestBase = new HttpGet(url);
+        HttpResponse httpResponse = HttpsUtils.get(httpRequestBase, header, httpClient);
         String res = HttpsUtils.extractResponseEntity(httpResponse);
 
         PowerMock.verifyAll();
@@ -115,28 +110,23 @@ public class HttpsUtilsTest {
 
     @Test
     public void testHttpsUtil_delete_excepiton() throws Exception {
+        PowerMock.resetAll();
         thrown.expect(CorrelationException.class);
-        thrown.expectMessage("Failed to query data from server through DELETE method!");
+        thrown.expectMessage("Failed to connect to server");
         String url = "host";
         Map<String, String> header = new HashMap<>();
         header.put("accept", "application/json");
-        HttpResponse httpResponse = HttpsUtils.delete(url, header);
+        HttpDelete httpRequestBase = new HttpDelete(url);
+        CloseableHttpClient httpClient = HttpsUtils.getConditionalHttpsClient(HttpsUtils.DEFUALT_TIMEOUT);
+        HttpResponse httpResponse = HttpsUtils.delete(httpRequestBase, header, httpClient);
         String response = HttpsUtils.extractResponseEntity(httpResponse);
         assertThat(response, equalTo(""));
     }
 
     @Test
     public void testHttpsUtil_delete_normal() throws Exception {
-        HttpClientBuilder hcb = PowerMock.createMock(HttpClientBuilder.class);
+        PowerMock.resetAll();
         CloseableHttpClient httpClient = PowerMock.createMock(CloseableHttpClient.class);
-        PowerMock.mockStatic(HttpClients.class);
-        EasyMock.expect(HttpClients.custom()).andReturn(hcb);
-        EasyMock.expect(hcb.setDefaultRequestConfig(EasyMock.anyObject(RequestConfig.class))).andReturn(hcb);
-        EasyMock.expect(hcb.setSSLSocketFactory(EasyMock.anyObject(SSLConnectionSocketFactory.class))).andReturn(hcb);
-        EasyMock.expect(hcb.setConnectionManager(EasyMock.anyObject(PoolingHttpClientConnectionManager.class))).andReturn(hcb);
-        EasyMock.expect(hcb.setConnectionManagerShared(true)).andReturn(hcb);
-        EasyMock.expect(hcb.build()).andReturn(httpClient);
-
         CloseableHttpResponse response = PowerMock.createMock(CloseableHttpResponse.class);
         EasyMock.expect(httpClient.execute(EasyMock.anyObject(HttpRequestBase.class))).andReturn(response);
         StatusLine sl = PowerMock.createMock(StatusLine.class);
@@ -145,9 +135,6 @@ public class HttpsUtilsTest {
         HttpEntity responseEntity = new StringEntity("Test");
         EasyMock.expect(response.getEntity()).andReturn(responseEntity);
 
-        httpClient.close();
-        EasyMock.expectLastCall();
-
         PowerMock.replayAll();
 
 
@@ -155,8 +142,8 @@ public class HttpsUtilsTest {
         Map<String, String> header = new HashMap<>();
         header.put("accept", "application/json");
 
-        HttpEntity entity = new StringEntity("Test");
-        HttpResponse httpResponse = HttpsUtils.delete(url, header);
+        HttpDelete httpRequestBase = new HttpDelete(url);
+        HttpResponse httpResponse = HttpsUtils.delete(httpRequestBase, header, httpClient);
         String res = HttpsUtils.extractResponseEntity(httpResponse);
 
         PowerMock.verifyAll();
@@ -166,31 +153,25 @@ public class HttpsUtilsTest {
 
     @Test
     public void testHttpsUtil_post_excepiton() throws Exception {
+        PowerMock.resetAll();
         thrown.expect(CorrelationException.class);
-        thrown.expectMessage("Failed to query data from server through POST method!");
+        thrown.expectMessage("Failed to connect to server");
         String url = "host";
         Map<String, String> header = new HashMap<>();
         header.put("accept", "application/json");
         Map<String, String> para = new HashMap<>();
         para.put("tset", "1111");
-
-        HttpResponse httpResponse = HttpsUtils.post(url, header, para, null);
+        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);
         assertThat(response, equalTo(""));
     }
 
     @Test
     public void testHttpsUtil_post_normal() throws Exception {
-        HttpClientBuilder hcb = PowerMock.createMock(HttpClientBuilder.class);
+        PowerMock.resetAll();
         CloseableHttpClient httpClient = PowerMock.createMock(CloseableHttpClient.class);
-        PowerMock.mockStatic(HttpClients.class);
-        EasyMock.expect(HttpClients.custom()).andReturn(hcb);
-        EasyMock.expect(hcb.setDefaultRequestConfig(EasyMock.anyObject(RequestConfig.class))).andReturn(hcb);
-        EasyMock.expect(hcb.setSSLSocketFactory(EasyMock.anyObject(SSLConnectionSocketFactory.class))).andReturn(hcb);
-        EasyMock.expect(hcb.setConnectionManager(EasyMock.anyObject(PoolingHttpClientConnectionManager.class))).andReturn(hcb);
-        EasyMock.expect(hcb.setConnectionManagerShared(true)).andReturn(hcb);
-        EasyMock.expect(hcb.build()).andReturn(httpClient);
-
         CloseableHttpResponse response = PowerMock.createMock(CloseableHttpResponse.class);
         EasyMock.expect(httpClient.execute(EasyMock.anyObject(HttpRequestBase.class))).andReturn(response);
         StatusLine sl = PowerMock.createMock(StatusLine.class);
@@ -199,9 +180,6 @@ public class HttpsUtilsTest {
         HttpEntity responseEntity = new StringEntity("Test");
         EasyMock.expect(response.getEntity()).andReturn(responseEntity);
 
-        httpClient.close();
-        EasyMock.expectLastCall();
-
         PowerMock.replayAll();
 
 
@@ -212,7 +190,8 @@ public class HttpsUtilsTest {
         para.put("tset", "1111");
 
         HttpEntity entity = new StringEntity("Test");
-        HttpResponse httpResponse = HttpsUtils.post(url, header, para, entity);
+        HttpPost httpPost = new HttpPost(url);
+        HttpResponse httpResponse = HttpsUtils.post(httpPost, header, para, entity, httpClient);
         String res = HttpsUtils.extractResponseEntity(httpResponse);
 
         PowerMock.verifyAll();
@@ -223,30 +202,23 @@ public class HttpsUtilsTest {
     @Test
     public void testHttpsUtil_put_excepiton() throws Exception {
         thrown.expect(CorrelationException.class);
-        thrown.expectMessage("Failed to query data from server through PUT method!");
+        thrown.expectMessage("Failed to connect to server");
         String url = "host";
         Map<String, String> header = new HashMap<>();
         header.put("accept", "application/json");
         Map<String, String> para = new HashMap<>();
         para.put("tset", "1111");
-
-        HttpResponse httpResponse = HttpsUtils.put(url, header, para, null);
+        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);
         assertThat(response, equalTo(""));
     }
 
     @Test
     public void testHttpsUtil_put_normal() throws Exception {
-        HttpClientBuilder hcb = PowerMock.createMock(HttpClientBuilder.class);
+        PowerMock.resetAll();
         CloseableHttpClient httpClient = PowerMock.createMock(CloseableHttpClient.class);
-        PowerMock.mockStatic(HttpClients.class);
-        EasyMock.expect(HttpClients.custom()).andReturn(hcb);
-        EasyMock.expect(hcb.setDefaultRequestConfig(EasyMock.anyObject(RequestConfig.class))).andReturn(hcb);
-        EasyMock.expect(hcb.setSSLSocketFactory(EasyMock.anyObject(SSLConnectionSocketFactory.class))).andReturn(hcb);
-        EasyMock.expect(hcb.setConnectionManager(EasyMock.anyObject(PoolingHttpClientConnectionManager.class))).andReturn(hcb);
-        EasyMock.expect(hcb.setConnectionManagerShared(true)).andReturn(hcb);
-        EasyMock.expect(hcb.build()).andReturn(httpClient);
-
         CloseableHttpResponse response = PowerMock.createMock(CloseableHttpResponse.class);
         EasyMock.expect(httpClient.execute(EasyMock.anyObject(HttpRequestBase.class))).andReturn(response);
         StatusLine sl = PowerMock.createMock(StatusLine.class);
@@ -255,9 +227,6 @@ public class HttpsUtilsTest {
         HttpEntity responseEntity = new StringEntity("Test");
         EasyMock.expect(response.getEntity()).andReturn(responseEntity);
 
-        httpClient.close();
-        EasyMock.expectLastCall();
-
         PowerMock.replayAll();
 
 
@@ -268,7 +237,8 @@ public class HttpsUtilsTest {
         para.put("tset", "1111");
 
         HttpEntity entity = new StringEntity("Test");
-        HttpResponse httpResponse = HttpsUtils.put(url, header, para, entity);
+        HttpPut httpPut = new HttpPut(url);
+        HttpResponse httpResponse = HttpsUtils.put(httpPut, header, para, entity, httpClient);
         String res = HttpsUtils.extractResponseEntity(httpResponse);
 
         PowerMock.verifyAll();
@@ -291,7 +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.getConditionalHttpsClient(HttpsUtils.DEFUALT_TIMEOUT);
         PowerMock.verifyAll();
     }