From cec8dd97d82c3984dd03997d2e6f0aee252a121b Mon Sep 17 00:00:00 2001 From: Abhishek Shekhar Date: Thu, 29 Mar 2018 11:48:41 +0530 Subject: UT Coverage for MsoHeatUtils Change-Id: I3335ae33681e896589d36269c9c639a30a53276d Issue-ID: SO-369 Signed-off-by: Abhishek Shekhar --- .../mso/adapter_utils/tests/MsoHeatUtilsTest.java | 241 +++++++++++++++++++-- 1 file changed, 224 insertions(+), 17 deletions(-) diff --git a/adapters/mso-adapter-utils/src/test/java/org/openecomp/mso/adapter_utils/tests/MsoHeatUtilsTest.java b/adapters/mso-adapter-utils/src/test/java/org/openecomp/mso/adapter_utils/tests/MsoHeatUtilsTest.java index c2d4f9ba60..931f11efad 100644 --- a/adapters/mso-adapter-utils/src/test/java/org/openecomp/mso/adapter_utils/tests/MsoHeatUtilsTest.java +++ b/adapters/mso-adapter-utils/src/test/java/org/openecomp/mso/adapter_utils/tests/MsoHeatUtilsTest.java @@ -20,12 +20,31 @@ 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> mockRequest = new MockUp>() { + @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 mockKeystone = new MockUp() { + @Mock + String findEndpointURL(List 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> mockRequest = new MockUp>() { + @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 mockKeystone = new MockUp() { + @Mock + String findEndpointURL(List 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> mockRequest = new MockUp>() { + @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 mockKeystone = new MockUp() { + @Mock + String findEndpointURL(List 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> mockRequest = new MockUp>() { + @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 mockKeystone = new MockUp() { + @Mock + String findEndpointURL(List 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> mockRequest = new MockUp>() { + @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 mockKeystone = new MockUp() { + @Mock + String findEndpointURL(List 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 inputs = new HashMap(){{put("key41", "value41");}}; + Map outputs = new HashMap(){{ + put("key2", "val2"); + put("key3", new TextNode("val3")); + put("key4", new LinkedHashMap(){{put("key41", "value41");}}); + }}; + msoHeatUtils.copyStringOutputsToInputs(inputs, outputs, true); + } } -- cgit 1.2.3-korg