Added UT for E2EService. 51/13051/1
authorseshukm <seshu.kumar.m@huawei.com>
Mon, 18 Sep 2017 09:09:13 +0000 (14:39 +0530)
committerseshukm <seshu.kumar.m@huawei.com>
Mon, 18 Sep 2017 09:09:13 +0000 (14:39 +0530)
Issue-Id: SO-134

Change-Id: I046d6a922f07f0a10d124f67285c9277290e8879
Signed-off-by: seshukm <seshu.kumar.m@huawei.com>
mso-api-handlers/mso-api-handler-infra/src/test/java/org/openecomp/mso/apihandlerinfra/E2EServiceInstancesTest.java [new file with mode: 0644]

diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/openecomp/mso/apihandlerinfra/E2EServiceInstancesTest.java b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/openecomp/mso/apihandlerinfra/E2EServiceInstancesTest.java
new file mode 100644 (file)
index 0000000..f656d89
--- /dev/null
@@ -0,0 +1,469 @@
+/*-\r
+ * ============LICENSE_START=======================================================\r
+ * ONAP - SO\r
+ * ================================================================================\r
+ * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *      http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ */\r
+\r
+package org.openecomp.mso.apihandlerinfra;\r
+\r
+import static org.junit.Assert.assertTrue;\r
+\r
+import java.io.ByteArrayInputStream;\r
+import java.io.InputStream;\r
+import java.util.ArrayList;\r
+import java.util.Collections;\r
+import java.util.List;\r
+\r
+import javax.ws.rs.core.Response;\r
+\r
+import org.apache.http.HttpResponse;\r
+import org.apache.http.ProtocolVersion;\r
+import org.apache.http.entity.BasicHttpEntity;\r
+import org.apache.http.message.BasicHttpResponse;\r
+import org.hibernate.criterion.Criterion;\r
+import org.hibernate.criterion.Order;\r
+import org.junit.Test;\r
+import org.openecomp.mso.apihandler.common.CamundaClient;\r
+import org.openecomp.mso.apihandler.common.RequestClient;\r
+import org.openecomp.mso.apihandler.common.RequestClientFactory;\r
+import org.openecomp.mso.db.catalog.CatalogDatabase;\r
+import org.openecomp.mso.db.catalog.beans.Service;\r
+import org.openecomp.mso.db.catalog.beans.ServiceRecipe;\r
+import org.openecomp.mso.properties.MsoJavaProperties;\r
+import org.openecomp.mso.requestsdb.InfraActiveRequests;\r
+import org.openecomp.mso.requestsdb.RequestsDatabase;\r
+\r
+import mockit.Mock;\r
+import mockit.MockUp;\r
+\r
+public class E2EServiceInstancesTest {\r
+\r
+       \r
+       @Test\r
+       public void createE2EServiceInstanceTestSuccess(){\r
+               new MockUp<RequestsDatabase>() {\r
+            @Mock\r
+            private List<InfraActiveRequests> executeInfraQuery (List <Criterion> criteria, Order order) {\r
+               return null;\r
+            }\r
+        };\r
+        new MockUp<RequestsDatabase>() {\r
+            @Mock\r
+            public int updateInfraStatus (String requestId, String requestStatus, long progress, String lastModifiedBy) {\r
+               return 0;\r
+            }\r
+        };\r
+        new MockUp<CatalogDatabase>() {\r
+            @Mock\r
+            public Service getServiceByModelName (String modelName) {\r
+               Service svc = new Service();\r
+               return svc;\r
+            }\r
+        };\r
+        \r
+        new MockUp<CatalogDatabase>() {\r
+            @Mock\r
+            public ServiceRecipe getServiceRecipeByModelUUID(String modelUUID, String action) {\r
+               ServiceRecipe rec = new ServiceRecipe();\r
+               return rec;\r
+            }\r
+        };\r
+        \r
+        new MockUp<RequestClientFactory>() {\r
+            @Mock\r
+            public RequestClient getRequestClient(String orchestrationURI, MsoJavaProperties props) throws IllegalStateException{\r
+               RequestClient client = new CamundaClient();\r
+               client.setUrl("/test/url");\r
+               return client;\r
+            }\r
+        };\r
+        \r
+        new MockUp<CamundaClient>() {\r
+            @Mock\r
+            public HttpResponse post(String requestId, boolean isBaseVfModule,\r
+                               int recipeTimeout, String requestAction, String serviceInstanceId,\r
+                               String vnfId, String vfModuleId, String volumeGroupId, String networkId,\r
+                               String serviceType, String vnfType, String vfModuleType, String networkType,\r
+                               String requestDetails){ \r
+               ProtocolVersion pv = new ProtocolVersion("HTTP",1,1);\r
+               HttpResponse resp = new BasicHttpResponse(pv,202, "test response");\r
+               BasicHttpEntity entity = new BasicHttpEntity();\r
+               String body = "{\"response\":\"success\",\"message\":\"success\"}";\r
+               InputStream instream = new ByteArrayInputStream(body.getBytes());\r
+               entity.setContent(instream);\r
+               resp.setEntity(entity);\r
+               return resp;\r
+            }\r
+        };\r
+        \r
+               E2EServiceInstances instance = new E2EServiceInstances();\r
+               String request = "{\"service\":{\"name\":\"E2EService\",\"serviceDefId\":\"37889593\",\"templateId\":\"2000039\",\"parameters\":{\"domainHost\":\"test\"}}}";\r
+               Response resp = instance.createE2EServiceInstance(request, "v2");\r
+               assertTrue(resp.getStatus() == 202);\r
+       }\r
+       \r
+       @Test\r
+       public void createE2EServiceInstanceTestBpelHTTPException(){\r
+               new MockUp<RequestsDatabase>() {\r
+            @Mock\r
+            private List<InfraActiveRequests> executeInfraQuery (List <Criterion> criteria, Order order) {\r
+               return null;\r
+            }\r
+        };\r
+        new MockUp<RequestsDatabase>() {\r
+            @Mock\r
+            public int updateInfraStatus (String requestId, String requestStatus, long progress, String lastModifiedBy) {\r
+               return 0;\r
+            }\r
+        };\r
+        new MockUp<CatalogDatabase>() {\r
+            @Mock\r
+            public Service getServiceByModelName (String modelName) {\r
+               Service svc = new Service();\r
+               return svc;\r
+            }\r
+        };\r
+        \r
+        new MockUp<CatalogDatabase>() {\r
+            @Mock\r
+            public ServiceRecipe getServiceRecipeByModelUUID(String modelUUID, String action) {\r
+               ServiceRecipe rec = new ServiceRecipe();\r
+               return rec;\r
+            }\r
+        };\r
+        \r
+        new MockUp<RequestClientFactory>() {\r
+            @Mock\r
+            public RequestClient getRequestClient(String orchestrationURI, MsoJavaProperties props) throws IllegalStateException{\r
+               RequestClient client = new CamundaClient();\r
+               client.setUrl("/test/url");\r
+               return client;\r
+            }\r
+        };\r
+        \r
+        new MockUp<CamundaClient>() {\r
+            @Mock\r
+            public HttpResponse post(String requestId, boolean isBaseVfModule,\r
+                               int recipeTimeout, String requestAction, String serviceInstanceId,\r
+                               String vnfId, String vfModuleId, String volumeGroupId, String networkId,\r
+                               String serviceType, String vnfType, String vfModuleType, String networkType,\r
+                               String requestDetails){ \r
+               ProtocolVersion pv = new ProtocolVersion("HTTP",1,1);\r
+               HttpResponse resp = new BasicHttpResponse(pv,500, "test response");\r
+               BasicHttpEntity entity = new BasicHttpEntity();\r
+               String body = "{\"response\":\"success\",\"message\":\"success\"}";\r
+               InputStream instream = new ByteArrayInputStream(body.getBytes());\r
+               entity.setContent(instream);\r
+               resp.setEntity(entity);\r
+               return resp;\r
+            }\r
+        };\r
+        \r
+               E2EServiceInstances instance = new E2EServiceInstances();\r
+               String request = "{\"service\":{\"name\":\"E2EService\",\"serviceDefId\":\"37889593\",\"templateId\":\"2000039\",\"parameters\":{\"domainHost\":\"test\"}}}";\r
+               Response resp = instance.createE2EServiceInstance(request, "v2");\r
+               String respStr = resp.getEntity().toString();\r
+               assertTrue(respStr.indexOf("Request Failed due to BPEL error with HTTP Status") != -1);\r
+       }\r
+       \r
+       @Test\r
+       public void createE2EServiceInstanceTestBpelHTTPExceptionWithNullREsponseBody(){\r
+               new MockUp<RequestsDatabase>() {\r
+            @Mock\r
+            private List<InfraActiveRequests> executeInfraQuery (List <Criterion> criteria, Order order) {\r
+               return null;\r
+            }\r
+        };\r
+        new MockUp<RequestsDatabase>() {\r
+            @Mock\r
+            public int updateInfraStatus (String requestId, String requestStatus, long progress, String lastModifiedBy) {\r
+               return 0;\r
+            }\r
+        };\r
+        new MockUp<CatalogDatabase>() {\r
+            @Mock\r
+            public Service getServiceByModelName (String modelName) {\r
+               Service svc = new Service();\r
+               return svc;\r
+            }\r
+        };\r
+        \r
+        new MockUp<CatalogDatabase>() {\r
+            @Mock\r
+            public ServiceRecipe getServiceRecipeByModelUUID(String modelUUID, String action) {\r
+               ServiceRecipe rec = new ServiceRecipe();\r
+               return rec;\r
+            }\r
+        };\r
+        \r
+        new MockUp<RequestClientFactory>() {\r
+            @Mock\r
+            public RequestClient getRequestClient(String orchestrationURI, MsoJavaProperties props) throws IllegalStateException{\r
+               RequestClient client = new CamundaClient();\r
+               client.setUrl("/test/url");\r
+               return client;\r
+            }\r
+        };\r
+        \r
+        new MockUp<CamundaClient>() {\r
+            @Mock\r
+            public HttpResponse post(String requestId, boolean isBaseVfModule,\r
+                               int recipeTimeout, String requestAction, String serviceInstanceId,\r
+                               String vnfId, String vfModuleId, String volumeGroupId, String networkId,\r
+                               String serviceType, String vnfType, String vfModuleType, String networkType,\r
+                               String requestDetails){ \r
+               ProtocolVersion pv = new ProtocolVersion("HTTP",1,1);\r
+               HttpResponse resp = new BasicHttpResponse(pv,500, "test response");\r
+               BasicHttpEntity entity = new BasicHttpEntity();\r
+               String body = "{\"response\":\"\",\"message\":\"success\"}";\r
+               InputStream instream = new ByteArrayInputStream(body.getBytes());\r
+               entity.setContent(instream);\r
+               resp.setEntity(entity);\r
+               return resp;\r
+            }\r
+        };\r
+        \r
+               E2EServiceInstances instance = new E2EServiceInstances();\r
+               String request = "{\"service\":{\"name\":\"E2EService\",\"serviceDefId\":\"37889593\",\"templateId\":\"2000039\",\"parameters\":{\"domainHost\":\"test\"}}}";\r
+               Response resp = instance.createE2EServiceInstance(request, "v2");\r
+               String respStr = resp.getEntity().toString();\r
+               assertTrue(respStr.indexOf("Request Failed due to BPEL error with HTTP Status") != -1);\r
+       }\r
+       \r
+       @Test\r
+       public void createE2EServiceInstanceTestNullBPELResponse(){\r
+               new MockUp<RequestsDatabase>() {\r
+            @Mock\r
+            private List<InfraActiveRequests> executeInfraQuery (List <Criterion> criteria, Order order) {\r
+               return null;\r
+            }\r
+        };\r
+        new MockUp<CatalogDatabase>() {\r
+            @Mock\r
+            public Service getServiceByModelName (String modelName) {\r
+               Service svc = new Service();\r
+               return svc;\r
+            }\r
+        };\r
+        \r
+        new MockUp<CatalogDatabase>() {\r
+            @Mock\r
+            public ServiceRecipe getServiceRecipeByModelUUID(String modelUUID, String action) {\r
+               ServiceRecipe rec = new ServiceRecipe();\r
+               return rec;\r
+            }\r
+        };\r
+        \r
+        new MockUp<RequestClientFactory>() {\r
+            @Mock\r
+            public RequestClient getRequestClient(String orchestrationURI, MsoJavaProperties props) throws IllegalStateException{\r
+               RequestClient client = new CamundaClient();\r
+               client.setUrl("/test/url");\r
+               return client;\r
+            }\r
+        };\r
+        \r
+        new MockUp<CamundaClient>() {\r
+            @Mock\r
+            public HttpResponse post(String requestId, boolean isBaseVfModule,\r
+                               int recipeTimeout, String requestAction, String serviceInstanceId,\r
+                               String vnfId, String vfModuleId, String volumeGroupId, String networkId,\r
+                               String serviceType, String vnfType, String vfModuleType, String networkType,\r
+                               String requestDetails){ \r
+               HttpResponse resp = null;\r
+               return resp;\r
+            }\r
+        };\r
+        \r
+               E2EServiceInstances instance = new E2EServiceInstances();\r
+               String request = "{\"service\":{\"name\":\"E2EService\",\"serviceDefId\":\"37889593\",\"templateId\":\"2000039\",\"parameters\":{\"domainHost\":\"test\"}}}";\r
+               Response resp = instance.createE2EServiceInstance(request, "v2");\r
+               String respStr = resp.getEntity().toString();\r
+               assertTrue(respStr.indexOf("bpelResponse is null") != -1);\r
+       }\r
+       \r
+       @Test\r
+       public void createE2EServiceInstanceTestBPMNNullREsponse(){\r
+               new MockUp<RequestsDatabase>() {\r
+            @Mock\r
+            private List<InfraActiveRequests> executeInfraQuery (List <Criterion> criteria, Order order) {\r
+               return null;\r
+            }\r
+        };\r
+        new MockUp<CatalogDatabase>() {\r
+            @Mock\r
+            public Service getServiceByModelName (String modelName) {\r
+               Service svc = new Service();\r
+               return svc;\r
+            }\r
+        };\r
+        \r
+        new MockUp<CatalogDatabase>() {\r
+            @Mock\r
+            public ServiceRecipe getServiceRecipeByModelUUID(String modelUUID, String action) {\r
+               ServiceRecipe rec = new ServiceRecipe();\r
+               return rec;\r
+            }\r
+        };\r
+        \r
+        new MockUp<RequestClientFactory>() {\r
+            @Mock\r
+            public RequestClient getRequestClient(String orchestrationURI, MsoJavaProperties props) throws IllegalStateException{\r
+               RequestClient client = new CamundaClient();\r
+               client.setUrl("/test/url");\r
+               return client;\r
+            }\r
+        };\r
+        \r
+        new MockUp<CamundaClient>() {\r
+            @Mock\r
+            public HttpResponse post(String camundaReqXML, String requestId,\r
+                               String requestTimeout, String schemaVersion, String serviceInstanceId, String action){\r
+               HttpResponse resp = null;\r
+               return resp;\r
+            }\r
+        };\r
+        \r
+               E2EServiceInstances instance = new E2EServiceInstances();\r
+               String request = "{\"service\":{\"name\":\"E2EService\",\"serviceDefId\":\"37889593\",\"templateId\":\"2000039\",\"parameters\":{\"domainHost\":\"test\"}}}";\r
+               Response resp = instance.createE2EServiceInstance(request, "v2");\r
+               String respStr = resp.getEntity().toString();\r
+               assertTrue(respStr.indexOf("Failed calling bpmn null") != -1);\r
+       }\r
+       \r
+       @Test\r
+       public void createE2EServiceInstanceTestNullBpmn(){\r
+               new MockUp<RequestsDatabase>() {\r
+            @Mock\r
+            private List<InfraActiveRequests> executeInfraQuery (List <Criterion> criteria, Order order) {\r
+               return null;\r
+            }\r
+        };\r
+        new MockUp<CatalogDatabase>() {\r
+            @Mock\r
+            public Service getServiceByModelName (String modelName) {\r
+               Service svc = new Service();\r
+               return svc;\r
+            }\r
+        };\r
+        \r
+        new MockUp<CatalogDatabase>() {\r
+            @Mock\r
+            public ServiceRecipe getServiceRecipeByModelUUID(String modelUUID, String action) {\r
+               ServiceRecipe rec = new ServiceRecipe();\r
+               return rec;\r
+            }\r
+        };\r
+               E2EServiceInstances instance = new E2EServiceInstances();\r
+               String request = "{\"service\":{\"name\":\"E2EService\",\"serviceDefId\":\"37889593\",\"templateId\":\"2000039\",\"parameters\":{\"domainHost\":\"test\"}}}";\r
+               Response resp = instance.createE2EServiceInstance(request, "v2");\r
+               String respStr = resp.getEntity().toString();\r
+               assertTrue(respStr.indexOf("Failed calling bpmn properties is null") != -1);\r
+       }\r
+       \r
+       @Test\r
+       public void createE2EServiceInstanceTestNullReceipe(){\r
+               new MockUp<RequestsDatabase>() {\r
+            @Mock\r
+            private List<InfraActiveRequests> executeInfraQuery (List <Criterion> criteria, Order order) {\r
+               return null;\r
+            }\r
+        };\r
+               E2EServiceInstances instance = new E2EServiceInstances();\r
+               String request = "{\"service\":{\"name\":\"E2EService\",\"serviceDefId\":\"37889593\",\"templateId\":\"2000039\",\"parameters\":{\"domainHost\":\"test\"}}}";\r
+               Response resp = instance.createE2EServiceInstance(request, "v2");\r
+               String respStr = resp.getEntity().toString();\r
+               assertTrue(respStr.indexOf("Recipe could not be retrieved from catalog DB null") != -1);\r
+       }\r
+       \r
+       @Test\r
+       public void createE2EServiceInstanceTestNullDBResponse(){\r
+               new MockUp<RequestsDatabase>() {\r
+            @Mock\r
+            private List<InfraActiveRequests> executeInfraQuery (List <Criterion> criteria, Order order) {\r
+               return null;\r
+            }\r
+        };\r
+               E2EServiceInstances instance = new E2EServiceInstances();\r
+               String request = "{\"service\":{\"name\":\"e2eservice\",\"serviceDefId\":\"37889593\",\"templateId\":\"2000039\",\"parameters\":{\"domainHost\":\"test\"}}}";\r
+               Response resp = instance.createE2EServiceInstance(request, "v2");\r
+               String respStr = resp.getEntity().toString();\r
+               assertTrue(respStr.indexOf("Recipe does not exist in catalog DB") != -1);\r
+       }\r
+       \r
+       @Test\r
+       public void createE2EServiceInstanceTestInvalidRequest(){\r
+               new MockUp<RequestsDatabase>() {\r
+            @Mock\r
+            private List<InfraActiveRequests> executeInfraQuery (List <Criterion> criteria, Order order) {\r
+               List<InfraActiveRequests> activeReqlist = new ArrayList<>();\r
+               InfraActiveRequests req = new InfraActiveRequests();\r
+               req.setAaiServiceId("39493992");\r
+               \r
+               activeReqlist.add(req);\r
+                return activeReqlist;\r
+            }\r
+        };\r
+               E2EServiceInstances instance = new E2EServiceInstances();\r
+               String request = "{\"service\":{\"name\":\"e2eservice\",\"serviceDefId\":\"37889593\",\"templateId\":\"2000039\",\"parameters\":{\"domainHost\":\"test\"}}}";\r
+               Response resp = instance.createE2EServiceInstance(request, "v2");\r
+               String respStr = resp.getEntity().toString();\r
+               assertTrue(respStr.indexOf("The existing request must finish or be cleaned up before proceeding.") != -1);\r
+       }\r
+       \r
+       @Test\r
+       public void createE2EServiceInstanceTestEmptyDBQuery(){\r
+               new MockUp<RequestsDatabase>() {\r
+            @Mock\r
+            private List<InfraActiveRequests> executeInfraQuery (List <Criterion> criteria, Order order) {\r
+                return Collections.EMPTY_LIST;\r
+            }\r
+        };\r
+               E2EServiceInstances instance = new E2EServiceInstances();\r
+               String request = "{\"service\":{\"name\":\"e2eservice\",\"serviceDefId\":\"37889593\",\"templateId\":\"2000039\",\"parameters\":{\"domainHost\":\"test\"}}}";\r
+               Response resp = instance.createE2EServiceInstance(request, "v2");\r
+               String respStr = resp.getEntity().toString();\r
+               assertTrue(respStr.indexOf("Recipe does not exist in catalog DB") != -1);\r
+       }\r
+       \r
+       @Test\r
+       public void createE2EServiceInstanceTestDBQueryFail(){\r
+               E2EServiceInstances instance = new E2EServiceInstances();\r
+               String request = "{\"service\":{\"name\":\"e2eservice\",\"serviceDefId\":\"37889593\",\"templateId\":\"2000039\",\"parameters\":{\"domainHost\":\"test\"}}}";\r
+               Response resp = instance.createE2EServiceInstance(request, "v2");\r
+               String respStr = resp.getEntity().toString();\r
+               assertTrue(respStr.indexOf("SVC2000") != -1);\r
+       }\r
+       \r
+       @Test\r
+       public void createE2EServiceInstanceTestForEmptyRequest(){\r
+               E2EServiceInstances instance = new E2EServiceInstances();\r
+               String request = "";\r
+               Response resp = instance.createE2EServiceInstance(request, "v2");\r
+               String respStr = resp.getEntity().toString();\r
+               assertTrue(respStr.indexOf("Mapping of request to JSON object failed.  No content to map to Object due to end of input") != -1);\r
+       }\r
+       \r
+       @Test\r
+       public void deleteE2EServiceInstanceTestNormal(){\r
+               E2EServiceInstances instance = new E2EServiceInstances();\r
+               String request = "{\"service\":{\"name\":\"e2eservice\",\"serviceDefId\":\"37889593\",\"templateId\":\"2000039\",\"parameters\":{\"domainHost\":\"test\"}}}";\r
+               Response resp = instance.deleteE2EServiceInstance(request, "v2");\r
+               String respStr = resp.getEntity().toString();\r
+               assertTrue(respStr.indexOf("SVC2000") != -1);\r
+       }\r
+}\r