UT Coverage for MsoHeatUtils 49/40049/1
authorAbhishek Shekhar <abhishek.shekhar1@amdocs.com>
Thu, 29 Mar 2018 06:18:41 +0000 (11:48 +0530)
committerAbhishek Shekhar <abhishek.shekhar1@amdocs.com>
Thu, 29 Mar 2018 06:18:41 +0000 (11:48 +0530)
Change-Id: I3335ae33681e896589d36269c9c639a30a53276d
Issue-ID: SO-369
Signed-off-by: Abhishek Shekhar <abhishek.shekhar1@amdocs.com>
adapters/mso-adapter-utils/src/test/java/org/openecomp/mso/adapter_utils/tests/MsoHeatUtilsTest.java

index c2d4f9b..931f11e 100644 (file)
 
 package org.openecomp.mso.adapter_utils.tests;
 
-import java.util.HashMap;
+import java.io.IOException;
+import java.util.*;
 
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.TextNode;
+import com.woorea.openstack.base.client.HttpMethod;
+import com.woorea.openstack.base.client.OpenStackRequest;
+import com.woorea.openstack.heat.model.Stack;
+import com.woorea.openstack.keystone.model.Access;
+import com.woorea.openstack.keystone.utils.KeystoneUtils;
+import mockit.Deencapsulation;
+import mockit.Invocation;
+import mockit.Mock;
+import mockit.MockUp;
+import mockit.integration.junit4.JMockit;
+import org.json.JSONException;
+import org.json.JSONObject;
 import org.junit.BeforeClass;
 import org.junit.Test;
+import org.junit.runner.RunWith;
 import org.openecomp.mso.cloud.CloudConfigFactory;
 import org.openecomp.mso.cloud.CloudConfigTest;
+import org.openecomp.mso.openstack.beans.StackInfo;
 import org.openecomp.mso.openstack.exceptions.MsoCloudIdentityNotFound;
 import org.openecomp.mso.openstack.exceptions.MsoCloudSiteNotFound;
 import org.openecomp.mso.openstack.exceptions.MsoException;
@@ -34,6 +53,7 @@ import org.openecomp.mso.openstack.exceptions.MsoStackAlreadyExists;
 import org.openecomp.mso.openstack.exceptions.MsoTenantNotFound;
 import org.openecomp.mso.openstack.utils.MsoCommonUtils;
 import org.openecomp.mso.openstack.utils.MsoHeatUtils;
+import org.openecomp.mso.properties.MsoPropertiesException;
 import org.openecomp.mso.properties.MsoPropertiesFactory;
 
 import com.woorea.openstack.heat.model.CreateStackParam;
@@ -49,10 +69,11 @@ public class MsoHeatUtilsTest extends MsoCommonUtils {
        public static MsoHeatUtils msoHeatUtils;
 
        @BeforeClass
-       public static final void loadClasses() throws MsoCloudIdentityNotFound {
+       public static final void loadClasses() throws MsoCloudIdentityNotFound, MsoPropertiesException {
                ClassLoader classLoader = CloudConfigTest.class.getClassLoader();
                String config = classLoader.getResource("cloud_config.json").toString().substring(5);
                cloudConfigFactory.initializeCloudConfig(config, 1);
+               msoPropertiesFactory.initializeMsoProperties("NO_PROP", classLoader.getResource("mso.properties").getPath());
                msoHeatUtils = new MsoHeatUtils("NO_PROP", msoPropertiesFactory, cloudConfigFactory);
        }
 
@@ -96,34 +117,126 @@ public class MsoHeatUtilsTest extends MsoCommonUtils {
 
        @Test
        public final void createStackSuccessWithEnvironment() throws MsoException {
-               try {
-                       msoHeatUtils.createStack("MT", "test", "stackName", "test", new HashMap<>(), Boolean.TRUE, 10,
-                                       "environment");
-               } catch (MsoIOException e) {
+               final MockUp<OpenStackRequest<Access>> mockRequest = new MockUp<OpenStackRequest<Access>>() {
+                       @Mock
+                       public Object execute(Invocation invocation) {
+                               final OpenStackRequest invokedInstance = invocation.getInvokedInstance();
+                               final Class<?> returnType = Deencapsulation.getField(invokedInstance, "returnType");
 
-               }
+                               try {
+                                       if (returnType == Access.class) {
+                                               ObjectMapper mapper = new ObjectMapper();
+                                               String json = "{\"token\":{\"id\":\"tokenId\",\"tenant\":{\"id\":\"tenantId\",\"name\":\"tenantName\"}},\"serviceCatalog\":[{\"type\":\"orchestration\",\"name\":\"orchestration\",\"endpoints\":[{\"region\":\"region1\",\"publicURL\":\"http://localhost:5000\",\"internalURL\":\"http://localhost:5000\",\"adminURL\":\"http://localhost:5000\"}]}]}";
+                                               return mapper.readValue(json, Access.class);
+                                       } else if (returnType == Stack.class) {
+                                               final Stack stack = new Stack();
+                                               stack.setId("stackId");
+                                               stack.setStackName("stackName");
+                                               stack.setStackStatus("CREATE_COMPLETE");
+                                               return stack;
+                                       }
+                                       return null;
+                               } catch (Exception e) {
+                                       throw new RuntimeException(e);
+                               }
+                       }
+               };
+
+               final MockUp<KeystoneUtils> mockKeystone = new MockUp<KeystoneUtils>() {
+                       @Mock
+                       String findEndpointURL(List<Access.Service> serviceCatalog, String type, String region, String facing) {
+                               return "http://localhost:5000";
+                       }
+               };
+
+               msoHeatUtils.createStack("MT", "test", "stackName", "test", new HashMap<>(), Boolean.TRUE, 10,
+                               "environment");
 
+               mockRequest.tearDown();
+               mockKeystone.tearDown();
        }
 
        @Test
        public final void createStackSuccessWithFiles() throws MsoException {
-               try {
-                       msoHeatUtils.createStack("MT", "test", "stackName", "test", new HashMap<>(), Boolean.TRUE, 10,
-                                       "environment", new HashMap<>());
-               } catch (MsoIOException e) {
+               final MockUp<OpenStackRequest<Access>> mockRequest = new MockUp<OpenStackRequest<Access>>() {
+                       @Mock
+                       public Object execute(Invocation invocation) {
+                               final OpenStackRequest invokedInstance = invocation.getInvokedInstance();
+                               final Class<?> returnType = Deencapsulation.getField(invokedInstance, "returnType");
 
-               }
+                               try {
+                                       if (returnType == Access.class) {
+                                               ObjectMapper mapper = new ObjectMapper();
+                                               String json = "{\"token\":{\"id\":\"tokenId\",\"tenant\":{\"id\":\"tenantId\",\"name\":\"tenantName\"}},\"serviceCatalog\":[{\"type\":\"orchestration\",\"name\":\"orchestration\",\"endpoints\":[{\"region\":\"region1\",\"publicURL\":\"http://localhost:5000\",\"internalURL\":\"http://localhost:5000\",\"adminURL\":\"http://localhost:5000\"}]}]}";
+                                               return mapper.readValue(json, Access.class);
+                                       } else if (returnType == Stack.class) {
+                                               final Stack stack = new Stack();
+                                               stack.setId("stackId");
+                                               stack.setStackName("stackName");
+                                               stack.setStackStatus("CREATE_COMPLETE");
+                                               return stack;
+                                       }
+                                       return null;
+                               } catch (Exception e) {
+                                       throw new RuntimeException(e);
+                               }
+                       }
+               };
+
+               final MockUp<KeystoneUtils> mockKeystone = new MockUp<KeystoneUtils>() {
+                       @Mock
+                       String findEndpointURL(List<Access.Service> serviceCatalog, String type, String region, String facing) {
+                               return "http://localhost:5000";
+                       }
+               };
 
+               msoHeatUtils.createStack("MT", "test", "stackName", "test", new HashMap<>(), Boolean.TRUE, 10,
+                               "environment", new HashMap<>());
+
+               mockRequest.tearDown();
+               mockKeystone.tearDown();
        }
 
        @Test
        public final void createStackSuccessWithHeatFiles() throws MsoException {
-               try {
-                       msoHeatUtils.createStack("MT", "test", "stackName", "test", new HashMap<>(), Boolean.TRUE, 10,
-                                       "environment", new HashMap<>(), new HashMap<>());
-               } catch (MsoIOException e) {
 
-               }
+               final MockUp<OpenStackRequest<Access>> mockRequest = new MockUp<OpenStackRequest<Access>>() {
+                       @Mock
+                       public Object execute(Invocation invocation) {
+                               final OpenStackRequest invokedInstance = invocation.getInvokedInstance();
+                               final Class<?> returnType = Deencapsulation.getField(invokedInstance, "returnType");
+
+                               try {
+                                       if (returnType == Access.class) {
+                                               ObjectMapper mapper = new ObjectMapper();
+                                               String json = "{\"token\":{\"id\":\"tokenId\",\"tenant\":{\"id\":\"tenantId\",\"name\":\"tenantName\"}},\"serviceCatalog\":[{\"type\":\"orchestration\",\"name\":\"orchestration\",\"endpoints\":[{\"region\":\"region1\",\"publicURL\":\"http://localhost:5000\",\"internalURL\":\"http://localhost:5000\",\"adminURL\":\"http://localhost:5000\"}]}]}";
+                                               return mapper.readValue(json, Access.class);
+                                       } else if (returnType == Stack.class) {
+                                               final Stack stack = new Stack();
+                                               stack.setId("stackId");
+                                               stack.setStackName("stackName");
+                                               stack.setStackStatus("CREATE_COMPLETE");
+                                               return stack;
+                                       }
+                                       return null;
+                               } catch (Exception e) {
+                                       throw new RuntimeException(e);
+                               }
+                       }
+               };
+
+               final MockUp<KeystoneUtils> mockKeystone = new MockUp<KeystoneUtils>() {
+                       @Mock
+                       String findEndpointURL(List<Access.Service> serviceCatalog, String type, String region, String facing) {
+                               return "http://localhost:5000";
+                       }
+               };
+
+               msoHeatUtils.createStack("MT", "test", "stackName", "test", new HashMap<>(), Boolean.TRUE, 10,
+                               "environment", new HashMap<>(), new HashMap<>());
+
+               mockRequest.tearDown();
+               mockKeystone.tearDown();
        }
 
        @Test
@@ -155,4 +268,98 @@ public class MsoHeatUtilsTest extends MsoCommonUtils {
        public final void heatCacheCleanupTest() {
                msoHeatUtils.heatCacheCleanup();
        }
+
+       @Test
+       public void queryStackTest() throws MsoException {
+               final MockUp<OpenStackRequest<Access>> mockRequest = new MockUp<OpenStackRequest<Access>>() {
+                       @Mock
+                       public Object execute(Invocation invocation) {
+                               final OpenStackRequest invokedInstance = invocation.getInvokedInstance();
+                               final Class<?> returnType = Deencapsulation.getField(invokedInstance, "returnType");
+
+                               try {
+                                       if (returnType == Access.class) {
+                                               ObjectMapper mapper = new ObjectMapper();
+                                               String json = "{\"token\":{\"id\":\"tokenId\",\"tenant\":{\"id\":\"tenantId\",\"name\":\"tenantName\"}},\"serviceCatalog\":[{\"type\":\"orchestration\",\"name\":\"orchestration\",\"endpoints\":[{\"region\":\"region1\",\"publicURL\":\"http://localhost:5000\",\"internalURL\":\"http://localhost:5000\",\"adminURL\":\"http://localhost:5000\"}]}]}";
+                                               return mapper.readValue(json, Access.class);
+                                       } else if (returnType == Stack.class) {
+                                               final Stack stack = new Stack();
+                                               stack.setId("stackId");
+                                               stack.setStackName("stackName");
+                                               stack.setStackStatus("CREATE_COMPLETE");
+                                               return stack;
+                                       }
+                                       return null;
+                               } catch (Exception e) {
+                                       throw new RuntimeException(e);
+                               }
+                       }
+               };
+
+               final MockUp<KeystoneUtils> mockKeystone = new MockUp<KeystoneUtils>() {
+                       @Mock
+                       String findEndpointURL(List<Access.Service> serviceCatalog, String type, String region, String facing) {
+                               return "http://localhost:5000";
+                       }
+               };
+
+               final StackInfo stackInfo = msoHeatUtils.queryStack("MT", "test", "stackName");
+
+               mockRequest.tearDown();
+               mockKeystone.tearDown();
+       }
+
+       @Test
+       public void deleteStack() throws MsoException {
+               final MockUp<OpenStackRequest<Access>> mockRequest = new MockUp<OpenStackRequest<Access>>() {
+                       @Mock
+                       public Object execute(Invocation invocation) {
+                               final OpenStackRequest invokedInstance = invocation.getInvokedInstance();
+                               final Class<?> returnType = Deencapsulation.getField(invokedInstance, "returnType");
+                               final String path = Deencapsulation.getField(invokedInstance, "endpoint");
+//                             final String stackName = path.substring(path.lastIndexOf("/"));
+
+                               try {
+                                       if (returnType == Access.class) {
+                                               ObjectMapper mapper = new ObjectMapper();
+                                               String json = "{\"token\":{\"id\":\"tokenId\",\"tenant\":{\"id\":\"tenantId\",\"name\":\"tenantName\"}},\"serviceCatalog\":[{\"type\":\"orchestration\",\"name\":\"orchestration\",\"endpoints\":[{\"region\":\"region1\",\"publicURL\":\"http://localhost:5000\",\"internalURL\":\"http://localhost:5000\",\"adminURL\":\"http://localhost:5000\"}]}]}";
+                                               return mapper.readValue(json, Access.class);
+                                       } else if (returnType == Stack.class) {
+                                               final Stack stack = new Stack();
+                                               stack.setId("stackId");
+                                               stack.setStackName("stackName");
+                                               final String status = "DELETE_COMPLETE";
+                                               stack.setStackStatus(status);
+                                               return stack;
+                                       }
+                                       return null;
+                               } catch (Exception e) {
+                                       throw new RuntimeException(e);
+                               }
+                       }
+               };
+
+               final MockUp<KeystoneUtils> mockKeystone = new MockUp<KeystoneUtils>() {
+                       @Mock
+                       String findEndpointURL(List<Access.Service> serviceCatalog, String type, String region, String facing) {
+                               return "http://localhost:5000";
+                       }
+               };
+
+               final StackInfo stackInfo = msoHeatUtils.deleteStack("test", "MT", "stackName", true);
+
+               mockRequest.tearDown();
+               mockKeystone.tearDown();
+       }
+
+       @Test
+       public void copyStringOutputsToInputsTest() {
+               Map<String, String> inputs = new HashMap<String, String>(){{put("key41", "value41");}};
+               Map<String, Object> outputs = new HashMap<String, Object>(){{
+                       put("key2", "val2");
+                       put("key3", new TextNode("val3"));
+                       put("key4", new LinkedHashMap<String, String>(){{put("key41", "value41");}});
+               }};
+               msoHeatUtils.copyStringOutputsToInputs(inputs, outputs, true);
+       }
 }