Merge "add junit for CamundaTaskClient"
authorSeshu Kumar M <seshu.kumar.m@huawei.com>
Fri, 15 Jun 2018 17:09:26 +0000 (17:09 +0000)
committerGerrit Code Review <gerrit@onap.org>
Fri, 15 Jun 2018 17:09:26 +0000 (17:09 +0000)
mso-api-handlers/mso-api-handler-common/pom.xml
mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/CamundaTaskClient.java
mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/RequestClient.java
mso-api-handlers/mso-api-handler-common/src/test/java/org/openecomp/mso/apihandler/common/CamundaTaskClientTest.java [new file with mode: 0644]

index 5b15c5f..6ca1f3d 100644 (file)
                        <artifactId>mso-requests-db</artifactId>
                        <version>${project.version}</version>
                </dependency>
+               <dependency>
+                       <groupId>org.assertj</groupId>
+                       <artifactId>assertj-core</artifactId>
+                       <version>3.10.0</version>
+                       <scope>test</scope>
+               </dependency>
 
        </dependencies>
        <build>
index 845b140..cbbbff3 100644 (file)
@@ -64,19 +64,18 @@ public class CamundaTaskClient extends RequestClient{
        @Override\r
        public HttpResponse post(String camundaReqXML, String requestId,\r
                        String requestTimeout, String schemaVersion, String serviceInstanceId, String action) {\r
-               msoLogger.debug("Method not supported");\r
-               return null;\r
+               throw new UnsupportedOperationException("Method not supported.");\r
        }\r
 \r
        @Override\r
        public HttpResponse post(RequestClientParamater params) {\r
-               return null;\r
+               throw new UnsupportedOperationException("Method not supported.");\r
        }\r
 \r
        @Override\r
-       public HttpResponse get() throws IOException{\r
+       public HttpResponse get() throws IOException {\r
                HttpGet get = new HttpGet(url);\r
-               msoLogger.debug("Camunda Task url is: "+ url);  \r
+               msoLogger.debug("Camunda Task url is: "+ url);\r
                String encryptedCredentials;\r
                if(props!=null){\r
                        encryptedCredentials = props.getProperty(CommonConstants.CAMUNDA_AUTH,null);\r
index ed5d076..66369a8 100644 (file)
@@ -24,7 +24,6 @@ import java.io.IOException;
 import java.security.GeneralSecurityException;
 
 import org.apache.http.HttpResponse;
-import org.apache.http.client.ClientProtocolException;
 import org.apache.http.client.HttpClient;
 import org.openecomp.mso.logger.MsoLogger;
 import org.openecomp.mso.properties.MsoJavaProperties;
@@ -65,7 +64,7 @@ public abstract class RequestClient {
                this.client = client;
        }
 
-       public abstract HttpResponse post(String request, String requestId, String requestTimeout, String schemaVersion, String serviceInstanceId, String action) throws ClientProtocolException, IOException;
+       public abstract HttpResponse post(String request, String requestId, String requestTimeout, String schemaVersion, String serviceInstanceId, String action) throws IOException;
 
        public abstract HttpResponse post(String request) throws IOException;
 
diff --git a/mso-api-handlers/mso-api-handler-common/src/test/java/org/openecomp/mso/apihandler/common/CamundaTaskClientTest.java b/mso-api-handlers/mso-api-handler-common/src/test/java/org/openecomp/mso/apihandler/common/CamundaTaskClientTest.java
new file mode 100644 (file)
index 0000000..f892d13
--- /dev/null
@@ -0,0 +1,132 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.mso.apihandler.common;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.methods.HttpRequestBase;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.ArgumentCaptor;
+import org.openecomp.mso.properties.MsoJavaProperties;
+
+public class CamundaTaskClientTest {
+
+    private CamundaTaskClient testedObject = new CamundaTaskClient();
+    private HttpClient httpClientMock;
+    private static final String JSON_REQUEST = "{\"value1\": \"aaa\",\"value2\": \"bbb\"}";
+    private static final String URL_SCHEMA = "http";
+    private static final String HOST = "testhost";
+    private static final int PORT = 1234;
+    private static final String URL_PATH = "/requestMethodSuccessful";
+    private static final String URL = URL_SCHEMA + "://" + HOST + ":" + PORT + URL_PATH;
+    private static final String AUTHORIZATION_HEADER_NAME = "Authorization";
+
+    @Before
+    public void init() {
+        testedObject = new CamundaTaskClient();
+        httpClientMock = mock(HttpClient.class);
+        testedObject.setClient(httpClientMock);
+        testedObject.setUrl(URL);
+    }
+
+    @Test
+    public void postMethodSuccessful() throws IOException {
+        ArgumentCaptor<HttpPost> httpPostCaptor = ArgumentCaptor.forClass(HttpPost.class);
+        testedObject.post(JSON_REQUEST);
+        verify(httpClientMock).execute(httpPostCaptor.capture());
+        checkUri(httpPostCaptor.getValue());
+        assertThat(httpPostCaptor.getValue().getEntity().getContentType().getValue()).
+                isEqualTo(CommonConstants.CONTENT_TYPE_JSON);
+        assertThat(getJsonFromEntity(httpPostCaptor.getValue().getEntity())).isEqualTo(JSON_REQUEST);
+    }
+
+    @Test
+    public void postMethodSuccessfulWithCredentials() throws IOException {
+        ArgumentCaptor<HttpPost> httpPostCaptor = ArgumentCaptor.forClass(HttpPost.class);
+        testedObject.setProps(createMsoJavaProperties());
+        testedObject.post(JSON_REQUEST);
+        verify(httpClientMock).execute(httpPostCaptor.capture());
+        assertThat(httpPostCaptor.getValue().getHeaders(AUTHORIZATION_HEADER_NAME)).isNotEmpty();
+    }
+
+    @Test
+    public void getMethodSuccessful() throws IOException {
+        ArgumentCaptor<HttpGet> httpGetCaptor = ArgumentCaptor.forClass(HttpGet.class);
+        testedObject.get();
+        verify(httpClientMock).execute(httpGetCaptor.capture());
+        checkUri(httpGetCaptor.getValue());
+    }
+
+    @Test
+    public void getMethodSuccessfulWithCredentials() throws IOException {
+        ArgumentCaptor<HttpGet> httpGetCaptor = ArgumentCaptor.forClass(HttpGet.class);
+        testedObject.setUrl(URL);
+        testedObject.setProps(createMsoJavaProperties());
+        testedObject.get();
+        verify(httpClientMock).execute(httpGetCaptor.capture());
+        assertThat(httpGetCaptor.getValue().getHeaders(AUTHORIZATION_HEADER_NAME)).isNotEmpty();
+    }
+
+    @Test(expected = UnsupportedOperationException.class)
+    public void postMethodUnsupported() {
+        testedObject.post("", "", "", "", "", "");
+    }
+
+    @Test(expected = UnsupportedOperationException.class)
+    public void postMethodUnsupported2() {
+        testedObject.post(new RequestClientParamater.Builder().build());
+    }
+
+    private void checkUri(HttpRequestBase httpRequestBase) {
+        assertThat(httpRequestBase.getURI().getScheme()).isEqualTo(URL_SCHEMA);
+        assertThat(httpRequestBase.getURI().getHost()).isEqualTo(HOST);
+        assertThat(httpRequestBase.getURI().getPort()).isEqualTo(PORT);
+        assertThat(httpRequestBase.getURI().getPath()).isEqualTo(URL_PATH);
+    }
+
+    private MsoJavaProperties createMsoJavaProperties() {
+        MsoJavaProperties msoJavaProperties = new MsoJavaProperties();
+        msoJavaProperties.setProperty(CommonConstants.CAMUNDA_AUTH, "");
+        return msoJavaProperties;
+    }
+
+    private String getJsonFromEntity(HttpEntity httpEntity) throws IOException {
+        BufferedReader rd = new BufferedReader(
+                new InputStreamReader(httpEntity.getContent()));
+        StringBuilder result = new StringBuilder();
+        String line;
+        while ((line = rd.readLine()) != null) {
+            result.append(line);
+        }
+        return result.toString();
+    }
+
+}
\ No newline at end of file