Initial commit of VDU plugin implementation
[so.git] / adapters / mso-adapter-utils / src / test / java / org / openecomp / mso / openstack / utils / MsoHeatUtilsTest2.java
1 /*-\r
2  * ============LICENSE_START=======================================================\r
3  * ONAP - SO\r
4  * ================================================================================\r
5  * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.\r
6  * ================================================================================\r
7  * Licensed under the Apache License, Version 2.0 (the "License");\r
8  * you may not use this file except in compliance with the License.\r
9  * You may obtain a copy of the License at\r
10  *\r
11  *      http://www.apache.org/licenses/LICENSE-2.0\r
12  *\r
13  * Unless required by applicable law or agreed to in writing, software\r
14  * distributed under the License is distributed on an "AS IS" BASIS,\r
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16  * See the License for the specific language governing permissions and\r
17  * limitations under the License.\r
18  * ============LICENSE_END=========================================================\r
19  */\r
20 \r
21 package org.openecomp.mso.openstack.utils;\r
22 \r
23 import static com.shazam.shazamcrest.MatcherAssert.assertThat;\r
24 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;\r
25 import static org.mockito.Mockito.doReturn;\r
26 import static org.mockito.Mockito.when;\r
27 \r
28 import java.util.ArrayList;\r
29 import java.util.HashMap;\r
30 import java.util.List;\r
31 import java.util.Map;\r
32 import java.util.Optional;\r
33 \r
34 import org.junit.Test;\r
35 import org.mockito.Mockito;\r
36 import org.openecomp.mso.adapters.vdu.CloudInfo;\r
37 import org.openecomp.mso.adapters.vdu.PluginAction;\r
38 import org.openecomp.mso.adapters.vdu.VduArtifact;\r
39 import org.openecomp.mso.adapters.vdu.VduArtifact.ArtifactType;\r
40 import org.openecomp.mso.adapters.vdu.VduInstance;\r
41 import org.openecomp.mso.adapters.vdu.VduModelInfo;\r
42 import org.openecomp.mso.adapters.vdu.VduStateType;\r
43 import org.openecomp.mso.adapters.vdu.VduStatus;\r
44 import org.openecomp.mso.cloud.CloudConfig;\r
45 import org.openecomp.mso.cloud.CloudSite;\r
46 import org.openecomp.mso.cloudify.beans.DeploymentInfo;\r
47 import org.openecomp.mso.cloudify.beans.DeploymentStatus;\r
48 import org.openecomp.mso.cloudify.utils.MsoCloudifyUtils;\r
49 import org.openecomp.mso.openstack.beans.HeatStatus;\r
50 import org.openecomp.mso.openstack.beans.StackInfo;\r
51 import org.openecomp.mso.openstack.exceptions.MsoException;\r
52 \r
53 import com.fasterxml.jackson.core.JsonProcessingException;\r
54 \r
55 public class MsoHeatUtilsTest2 {\r
56 \r
57         @Test\r
58         public void instantiateVduTest() throws MsoException, JsonProcessingException {\r
59                 VduInstance expected = new VduInstance();\r
60                 expected.setVduInstanceId("canonicalName");\r
61                 expected.setVduInstanceName("name");\r
62                 VduStatus status = new VduStatus();\r
63                 status.setState(VduStateType.INSTANTIATED);\r
64                 status.setLastAction((new PluginAction("create", "complete", "")));\r
65                 expected.setStatus(status);\r
66 \r
67                 MsoHeatUtils heatUtils = Mockito.spy(MsoHeatUtils.class);\r
68                 CloudSite site = new CloudSite();\r
69                 Optional<CloudSite> opSite = Optional.ofNullable(site);\r
70                 CloudConfig config = Mockito.mock(CloudConfig.class);\r
71                 heatUtils.cloudConfig = config;\r
72                 CloudInfo cloudInfo = new CloudInfo();\r
73                 cloudInfo.setCloudSiteId("cloudSiteId");\r
74                 cloudInfo.setTenantId("tenantId");\r
75                 VduModelInfo vduModel = new VduModelInfo();\r
76                 vduModel.setModelCustomizationUUID("blueprintId");\r
77                 vduModel.setTimeoutMinutes(1);\r
78                 VduArtifact artifact = new VduArtifact();\r
79                 artifact.setName("name");\r
80                 artifact.setType(ArtifactType.MAIN_TEMPLATE);\r
81                 byte[] content = new byte[1];\r
82                 artifact.setContent(content);\r
83                 List<VduArtifact> artifacts = new ArrayList<>();\r
84                 artifacts.add(artifact);\r
85                 vduModel.setArtifacts(artifacts);\r
86                 Map<String, byte[]> blueprintFiles = new HashMap<>();\r
87                 blueprintFiles.put(artifact.getName(), artifact.getContent());\r
88                 String instanceName = "instanceName";\r
89                 Map<String, Object> inputs = new HashMap<>();\r
90                 boolean rollbackOnFailure = true;\r
91                 String heatTemplate = new String(artifact.getContent());\r
92                 when(config.getCloudSite(cloudInfo.getCloudSiteId())).thenReturn(opSite);\r
93                 Map<String, Object> nestedTemplates = new HashMap<String, Object>();\r
94                 Map<String, Object> files = new HashMap<String, Object>();\r
95 \r
96                 StackInfo stackInfo = new StackInfo();\r
97                 stackInfo.setCanonicalName("canonicalName");\r
98                 stackInfo.setName("name");\r
99                 stackInfo.setStatus(HeatStatus.CREATED);\r
100 \r
101                 doReturn(stackInfo).when(heatUtils).createStack(cloudInfo.getCloudSiteId(), cloudInfo.getTenantId(),\r
102                                 instanceName, heatTemplate, inputs, true, vduModel.getTimeoutMinutes(), null, nestedTemplates, files,\r
103                                 rollbackOnFailure);\r
104 \r
105                 VduInstance actual = heatUtils.instantiateVdu(cloudInfo, instanceName, inputs, vduModel, rollbackOnFailure);\r
106                 \r
107                 assertThat(actual, sameBeanAs(expected));\r
108         }\r
109         \r
110         @Test\r
111         public void queryVduTest() throws MsoException, JsonProcessingException {\r
112                 VduInstance expected = new VduInstance();\r
113                 expected.setVduInstanceId("canonicalName");\r
114                 expected.setVduInstanceName("name");\r
115                 VduStatus status = new VduStatus();\r
116                 status.setState(VduStateType.INSTANTIATED);\r
117                 status.setLastAction((new PluginAction("create", "complete", "")));\r
118                 expected.setStatus(status);\r
119 \r
120                 CloudInfo cloudInfo = new CloudInfo();\r
121                 cloudInfo.setCloudSiteId("cloudSiteId");\r
122                 cloudInfo.setTenantId("tenantId");\r
123                 String instanceId = "instanceId";\r
124 \r
125                 StackInfo stackInfo = new StackInfo();\r
126                 stackInfo.setCanonicalName("canonicalName");\r
127                 stackInfo.setName("name");\r
128                 stackInfo.setStatus(HeatStatus.CREATED);\r
129                 \r
130                 MsoHeatUtils heatUtils = Mockito.spy(MsoHeatUtils.class);\r
131 \r
132                 doReturn(stackInfo).when(heatUtils).queryStack(cloudInfo.getCloudSiteId(), cloudInfo.getTenantId(), instanceId);\r
133 \r
134                 VduInstance actual = heatUtils.queryVdu(cloudInfo, instanceId);\r
135                 \r
136                 assertThat(actual, sameBeanAs(expected));\r
137         }\r
138 \r
139         @Test\r
140         public void deleteVduTest() throws MsoException {\r
141                 VduInstance expected = new VduInstance();\r
142                 expected.setVduInstanceId("canonicalName");\r
143                 expected.setVduInstanceName("name");\r
144                 VduStatus status = new VduStatus();\r
145                 status.setState(VduStateType.DELETED);\r
146                 expected.setStatus(status);\r
147 \r
148                 CloudInfo cloudInfo = new CloudInfo();\r
149                 cloudInfo.setCloudSiteId("cloudSiteId");\r
150                 cloudInfo.setTenantId("tenantId");\r
151                 String instanceId = "instanceId";\r
152 \r
153                 StackInfo stackInfo = new StackInfo();\r
154                 stackInfo.setCanonicalName("canonicalName");\r
155                 stackInfo.setName("name");\r
156                 stackInfo.setStatus(HeatStatus.NOTFOUND);\r
157                 \r
158                 int timeoutInMinutes = 1;\r
159                 \r
160                 MsoHeatUtils heatUtils = Mockito.spy(MsoHeatUtils.class);\r
161 \r
162                 doReturn(stackInfo).when(heatUtils).deleteStack( cloudInfo.getTenantId(), cloudInfo.getCloudSiteId(), instanceId, true);\r
163 \r
164                 VduInstance actual = heatUtils.deleteVdu(cloudInfo, instanceId, timeoutInMinutes);\r
165                 \r
166                 assertThat(actual, sameBeanAs(expected));\r
167         }\r
168 \r
169 }\r