Initial commit of VDU plugin implementation
[so.git] / adapters / mso-adapter-utils / src / test / java / org / openecomp / mso / cloudify / utils / MsoCloudifyUtilsTest2.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.cloudify.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.CloudIdentity;\r
46 import org.openecomp.mso.cloud.CloudSite;\r
47 import org.openecomp.mso.cloudify.beans.DeploymentInfo;\r
48 import org.openecomp.mso.cloudify.beans.DeploymentStatus;\r
49 import org.openecomp.mso.cloudify.v3.client.Cloudify;\r
50 import org.openecomp.mso.cloudify.v3.model.AzureConfig;\r
51 import org.openecomp.mso.cloudify.v3.model.OpenstackConfig;\r
52 import org.openecomp.mso.openstack.exceptions.MsoException;\r
53 \r
54 public class MsoCloudifyUtilsTest2 {\r
55 \r
56         @Test\r
57         public void instantiateVduTest() throws MsoException {\r
58                 VduInstance expected = new VduInstance();\r
59                 expected.setVduInstanceId("id");\r
60                 expected.setVduInstanceName("id");\r
61                 VduStatus status = new VduStatus();\r
62                 status.setState(VduStateType.INSTANTIATED);\r
63                 status.setLastAction(new PluginAction(null, null, null));\r
64                 expected.setStatus(status);\r
65 \r
66                 MsoCloudifyUtils cloudify = Mockito.spy(MsoCloudifyUtils.class);\r
67                 CloudSite site = new CloudSite();\r
68                 Optional<CloudSite> opSite = Optional.ofNullable(site);\r
69                 CloudConfig config = Mockito.mock(CloudConfig.class);\r
70                 cloudify.cloudConfig = config;\r
71                 Cloudify cloudifyClient = new Cloudify("cloudSite");\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                 DeploymentInfo deployment = new DeploymentInfo();\r
87                 deployment.setId("id");\r
88                 deployment.setStatus(DeploymentStatus.INSTALLED);\r
89                 Map<String, byte[]> blueprintFiles = new HashMap<>();\r
90                 blueprintFiles.put(artifact.getName(), artifact.getContent());\r
91                 String instanceName = "instanceName";\r
92                 Map<String, Object> inputs = new HashMap<>();\r
93                 boolean rollbackOnFailure = true;\r
94 \r
95                 when(config.getCloudSite(cloudInfo.getCloudSiteId())).thenReturn(opSite);\r
96                 doReturn(false).when(cloudify).isBlueprintLoaded(cloudInfo.getCloudSiteId(),\r
97                                 vduModel.getModelCustomizationUUID());\r
98                 doReturn(cloudifyClient).when(cloudify).getCloudifyClient(site);\r
99                 doReturn(true).when(cloudify).uploadBlueprint(cloudifyClient, vduModel.getModelCustomizationUUID(),\r
100                                 artifact.getName(), blueprintFiles);\r
101                 doReturn(deployment).when(cloudify).createAndInstallDeployment(cloudInfo.getCloudSiteId(),\r
102                                 cloudInfo.getTenantId(), instanceName, vduModel.getModelCustomizationUUID(), inputs, true,\r
103                                 vduModel.getTimeoutMinutes(), rollbackOnFailure);\r
104 \r
105                 VduInstance actual = cloudify.instantiateVdu(cloudInfo, instanceName, inputs, vduModel, rollbackOnFailure);\r
106                 assertThat(actual, sameBeanAs(expected));\r
107         }\r
108 \r
109         @Test\r
110         public void queryVduTest() throws MsoException {\r
111                 VduInstance expected = new VduInstance();\r
112                 expected.setVduInstanceId("id");\r
113                 expected.setVduInstanceName("id");\r
114                 VduStatus status = new VduStatus();\r
115                 status.setState(VduStateType.INSTANTIATED);\r
116                 status.setLastAction(new PluginAction(null, null, null));\r
117                 expected.setStatus(status);\r
118 \r
119                 CloudInfo cloudInfo = new CloudInfo();\r
120                 cloudInfo.setCloudSiteId("cloudSiteId");\r
121                 cloudInfo.setTenantId("tenantId");\r
122                 DeploymentInfo deployment = new DeploymentInfo();\r
123                 deployment.setId("id");\r
124                 deployment.setStatus(DeploymentStatus.INSTALLED);\r
125                 String instanceId = "instanceId";\r
126 \r
127                 MsoCloudifyUtils cloudify = Mockito.spy(MsoCloudifyUtils.class);\r
128 \r
129                 doReturn(deployment).when(cloudify).queryDeployment(cloudInfo.getCloudSiteId(), cloudInfo.getTenantId(),\r
130                                 instanceId);\r
131 \r
132                 VduInstance actual = cloudify.queryVdu(cloudInfo, instanceId);\r
133 \r
134                 assertThat(actual, sameBeanAs(expected));\r
135         }\r
136 \r
137         @Test\r
138         public void deleteVduTest() throws MsoException {\r
139                 VduInstance expected = new VduInstance();\r
140                 expected.setVduInstanceId("id");\r
141                 expected.setVduInstanceName("id");\r
142                 VduStatus status = new VduStatus();\r
143                 status.setState(VduStateType.DELETING);\r
144                 status.setLastAction(new PluginAction("deleting", null, null));\r
145                 expected.setStatus(status);\r
146 \r
147                 CloudInfo cloudInfo = new CloudInfo();\r
148                 cloudInfo.setCloudSiteId("cloudSiteId");\r
149                 cloudInfo.setTenantId("tenantId");\r
150                 String instanceId = "instanceId";\r
151                 int timeoutMinutes = 1;\r
152                 DeploymentInfo deployment = Mockito.mock(DeploymentInfo.class);\r
153                 deployment.setId("id");\r
154                 deployment.setStatus(DeploymentStatus.CREATED);\r
155                 when(deployment.getId()).thenReturn("id");\r
156                 when(deployment.getStatus()).thenReturn(DeploymentStatus.CREATED);\r
157                 when(deployment.getLastAction()).thenReturn("deleting");\r
158                 MsoCloudifyUtils cloudify = Mockito.spy(MsoCloudifyUtils.class);\r
159                 doReturn(deployment).when(cloudify).uninstallAndDeleteDeployment(cloudInfo.getCloudSiteId(),\r
160                                 cloudInfo.getTenantId(), instanceId, timeoutMinutes);\r
161 \r
162                 VduInstance actual = cloudify.deleteVdu(cloudInfo, instanceId, timeoutMinutes);\r
163 \r
164                 assertThat(actual, sameBeanAs(expected));\r
165         }\r
166 \r
167         @Test\r
168         public void deploymentInfoToVduInstanceTest() {\r
169                 VduInstance expected = new VduInstance();\r
170                 expected.setVduInstanceId("id");\r
171                 expected.setVduInstanceName("id");\r
172                 VduStatus status = new VduStatus();\r
173                 status.setState(VduStateType.DELETING);\r
174                 status.setLastAction(new PluginAction("deleting", null, null));\r
175                 expected.setStatus(status);\r
176 \r
177                 DeploymentInfo deployment = Mockito.mock(DeploymentInfo.class);\r
178                 deployment.setId("id");\r
179                 deployment.setStatus(DeploymentStatus.CREATED);\r
180                 when(deployment.getId()).thenReturn("id");\r
181                 when(deployment.getStatus()).thenReturn(DeploymentStatus.CREATED);\r
182                 when(deployment.getLastAction()).thenReturn("deleting");\r
183 \r
184                 MsoCloudifyUtils cloudify = new MsoCloudifyUtils();\r
185 \r
186                 VduInstance actual = cloudify.deploymentInfoToVduInstance(deployment);\r
187 \r
188                 assertThat(actual, sameBeanAs(expected));\r
189         }\r
190 \r
191         @Test\r
192         public void deploymentStatusToVduStatusTest() {\r
193                 VduStatus expected = new VduStatus();\r
194                 expected.setState(VduStateType.DELETING);\r
195                 expected.setLastAction(new PluginAction("deleting", null, null));\r
196 \r
197                 DeploymentInfo deployment = Mockito.mock(DeploymentInfo.class);\r
198                 deployment.setId("id");\r
199                 deployment.setStatus(DeploymentStatus.CREATED);\r
200                 when(deployment.getId()).thenReturn("id");\r
201                 when(deployment.getStatus()).thenReturn(DeploymentStatus.CREATED);\r
202                 when(deployment.getLastAction()).thenReturn("deleting");\r
203 \r
204                 MsoCloudifyUtils cloudify = new MsoCloudifyUtils();\r
205 \r
206                 VduStatus actual = cloudify.deploymentStatusToVduStatus(deployment);\r
207 \r
208                 assertThat(actual, sameBeanAs(expected));\r
209         }\r
210 \r
211         @Test\r
212         public void getOpenstackConfigTest() {\r
213                 OpenstackConfig expected = new OpenstackConfig();\r
214                 expected.setRegion("regionId");\r
215                 expected.setAuthUrl("identityUrl");\r
216                 expected.setUsername("msoId");\r
217                 expected.setPassword("msoPass");\r
218                 expected.setTenantName("tenantId");\r
219 \r
220                 MsoCloudifyUtils cloudify = new MsoCloudifyUtils();\r
221                 CloudSite cloudSite = Mockito.mock(CloudSite.class);\r
222                 CloudIdentity cloudIdentity = Mockito.mock(CloudIdentity.class);\r
223                 when(cloudSite.getIdentityService()).thenReturn(cloudIdentity);\r
224                 when(cloudSite.getRegionId()).thenReturn("regionId");\r
225                 when(cloudIdentity.getIdentityUrl()).thenReturn("identityUrl");\r
226                 when(cloudIdentity.getMsoId()).thenReturn("msoId");\r
227                 when(cloudIdentity.getMsoPass()).thenReturn("msoPass");\r
228                 String tenantId = "tenantId";\r
229                 OpenstackConfig actual = cloudify.getOpenstackConfig(cloudSite, tenantId);\r
230 \r
231                 assertThat(actual, sameBeanAs(expected));\r
232         }\r
233 \r
234         @Test\r
235         public void getAzureConfigTest() {\r
236                 AzureConfig expected = new AzureConfig();\r
237                 expected.setSubscriptionId("subscriptionId");\r
238                 expected.setTenantId("tenantId");\r
239                 expected.setClientId("msoId");\r
240                 expected.setClientSecret("msoPass");\r
241 \r
242                 MsoCloudifyUtils cloudify = new MsoCloudifyUtils();\r
243                 CloudSite cloudSite = Mockito.mock(CloudSite.class);\r
244                 CloudIdentity cloudIdentity = Mockito.mock(CloudIdentity.class);\r
245                 when(cloudSite.getIdentityService()).thenReturn(cloudIdentity);\r
246                 when(cloudIdentity.getAdminTenant()).thenReturn("subscriptionId");\r
247                 when(cloudIdentity.getMsoId()).thenReturn("msoId");\r
248                 when(cloudIdentity.getMsoPass()).thenReturn("msoPass");\r
249                 String tenantId = "tenantId";\r
250                 AzureConfig actual = cloudify.getAzureConfig(cloudSite, tenantId);\r
251 \r
252                 assertThat(actual, sameBeanAs(expected));\r
253         }\r
254 }\r