005586e3ad11e9c52fc541e3326c27090fd01d77
[so.git] / adapters / mso-openstack-adapters / src / test / java / org / onap / so / adapters / vnf / MsoVnfAdapterImplTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.so.adapters.vnf;
22
23
24 import com.github.tomakehurst.wiremock.client.WireMock;
25 import org.apache.http.HttpStatus;
26 import org.junit.Before;
27 import org.junit.Ignore;
28 import org.junit.Rule;
29 import org.junit.Test;
30 import org.junit.rules.ExpectedException;
31 import org.mockito.MockitoAnnotations;
32 import org.onap.so.adapters.vnf.exceptions.VnfAlreadyExists;
33 import org.onap.so.adapters.vnf.exceptions.VnfException;
34 import org.onap.so.adapters.vnf.exceptions.VnfNotFound;
35 import org.onap.so.db.catalog.beans.HeatEnvironment;
36 import org.onap.so.db.catalog.beans.HeatTemplate;
37 import org.onap.so.db.catalog.beans.HeatTemplateParam;
38 import org.onap.so.db.catalog.beans.VfModule;
39 import org.onap.so.db.catalog.beans.VfModuleCustomization;
40 import org.onap.so.db.catalog.beans.VnfResource;
41 import org.onap.so.db.catalog.data.repository.VFModuleCustomizationRepository;
42 import org.onap.so.db.catalog.data.repository.VnfResourceRepository;
43 import org.onap.so.entity.MsoRequest;
44 import org.onap.so.openstack.beans.HeatStatus;
45 import org.onap.so.openstack.beans.StackInfo;
46 import org.onap.so.openstack.beans.VnfRollback;
47 import org.onap.so.openstack.exceptions.MsoException;
48 import org.onap.so.openstack.utils.MsoHeatUtils;
49 import org.springframework.beans.factory.annotation.Autowired;
50 import org.springframework.boot.test.mock.mockito.MockBean;
51
52 import javax.xml.ws.Holder;
53 import java.util.HashMap;
54 import java.util.HashSet;
55 import java.util.Map;
56 import java.util.Set;
57
58 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
59 import static com.github.tomakehurst.wiremock.client.WireMock.get;
60 import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
61 import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
62 import static org.mockito.Mockito.doReturn;
63 import static org.mockito.Mockito.when;
64 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackVfModule_200;
65 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackVfModule_404;
66 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPutStack;
67 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackResponseAccess;
68 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenstackGetWithResponse;
69
70
71 public class MsoVnfAdapterImplTest extends BaseRestTestUtils {
72         @Rule
73         public ExpectedException expectedException = ExpectedException.none();
74
75         @Autowired
76         private MsoHeatUtils heatUtils;
77
78         @Autowired
79         MsoVnfAdapterImpl instance;
80
81         String vnfName = "DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001/stackId";
82
83         @Before
84         public void before() throws Exception {
85                 MockitoAnnotations.initMocks(this);
86                 WireMock.reset();
87                 setUp();
88         }
89
90         @Test
91         @Ignore
92         public void healthCheckVNFTest() {
93                 MsoVnfAdapterImpl instance = new MsoVnfAdapterImpl();
94                 instance.healthCheck();
95         }
96
97         @Test
98         public void createVnfTest() throws Exception {
99                 StackInfo info = new StackInfo();
100                 info.setStatus(HeatStatus.CREATED);
101
102                 mockOpenStackResponseAccess(wireMockPort);
103                 mockOpenStackGetStackVfModule_200();
104
105                 MsoRequest msoRequest = getMsoRequest();
106
107                 Map<String, String> map = new HashMap<>();
108                 map.put("key1", "value1");
109                 instance.createVfModule("MTN13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
110                                 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
111                                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
112                                 new Holder<VnfRollback>());
113         }
114
115         @Test
116         public void createVnfTest_HeatStatusUpdating() throws Exception {
117                 expectedException.expect(VnfAlreadyExists.class);
118                 mockOpenStackResponseAccess(wireMockPort);
119
120                 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001/stackId"))
121                                 .willReturn(aResponse().withHeader("Content-Type", "application/json")
122                                                 .withBodyFile("OpenstackResponse_Stack_Updating_VfModule.json")
123                                                 .withStatus(HttpStatus.SC_OK)));
124
125                 MsoRequest msoRequest = getMsoRequest();
126
127                 Map<String, String> map = new HashMap<>();
128                 map.put("key1", "value1");
129                 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
130                                 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
131                                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
132                                 new Holder<VnfRollback>());
133         }
134
135         @Test
136         public void createVnfTest_HeatStatusUpdated() throws Exception {
137                 expectedException.expect(VnfAlreadyExists.class);
138                 mockOpenStackResponseAccess(wireMockPort);
139
140                 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001/stackId"))
141                                 .willReturn(aResponse().withHeader("Content-Type", "application/json")
142                                                 .withBodyFile("OpenstackResponse_StackId.json")
143                                                 .withStatus(HttpStatus.SC_OK)));
144
145                 MsoRequest msoRequest = getMsoRequest();
146
147                 Map<String, String> map = new HashMap<>();
148                 map.put("key1", "value1");
149                 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
150                                 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
151                                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
152                                 new Holder<VnfRollback>());
153         }
154
155         @Test
156         public void createVnfTest_HeatStatusFailed() throws Exception {
157                 expectedException.expect(VnfAlreadyExists.class);
158                 mockOpenStackResponseAccess(wireMockPort);
159
160                 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001/stackId"))
161                                 .willReturn(aResponse().withHeader("Content-Type", "application/json")
162                                                 .withBodyFile("OpenstackResponse_Stack_Failed_VfModule.json")
163                                                 .withStatus(HttpStatus.SC_OK)));
164
165                 MsoRequest msoRequest = getMsoRequest();
166
167                 Map<String, String> map = new HashMap<>();
168                 map.put("key1", "value1");
169                 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
170                                 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
171                                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
172                                 new Holder<VnfRollback>());
173         }
174
175         @Test
176         public void createVnfTest_HeatStatusCreated() throws Exception {
177                 expectedException.expect(VnfAlreadyExists.class);
178                 mockOpenStackResponseAccess(wireMockPort);
179
180                 mockOpenStackGetStackVfModule_200();
181
182                 MsoRequest msoRequest = getMsoRequest();
183
184                 Map<String, String> map = new HashMap<>();
185                 map.put("key1", "value1");
186                 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
187                                 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
188                                 Boolean.TRUE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
189                                 new Holder<VnfRollback>());
190         }
191
192
193         @Test
194         public void createVnfTest_ExceptionInGettingHeat() throws Exception {
195                 expectedException.expect(VnfException.class);
196                 MsoRequest msoRequest = getMsoRequest();
197
198                 Map<String, String> map = new HashMap<>();
199                 map.put("key1", "value1");
200                 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
201                                 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
202                                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
203                                 new Holder<VnfRollback>());
204         }
205
206         @Test
207         public void createVnfTest_NestedHeatStatusNotFound() throws Exception {
208                 expectedException.expect(VnfException.class);
209                 mockOpenStackResponseAccess(wireMockPort);
210                 mockOpenStackGetStackVfModule_404();
211
212                 MsoRequest msoRequest = getMsoRequest();
213
214                 Map<String, String> map = new HashMap<>();
215                 map.put("key1", "value1");
216                 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
217                                 "volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
218                                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
219                                 new Holder<VnfRollback>());
220         }
221
222         @Test
223         public void createVnfTest_ExceptionInGettingNestedHeat() throws Exception {
224                 expectedException.expect(VnfException.class);
225                 mockOpenStackResponseAccess(wireMockPort);
226                 mockOpenStackGetStackVfModule_404();
227                 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId"))
228                                 .willReturn(aResponse().withHeader("Content-Type", "application/json")
229                                                 .withStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR)));
230
231                 MsoRequest msoRequest = getMsoRequest();
232
233                 Map<String, String> map = new HashMap<>();
234                 map.put("key1", "value1");
235                 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
236                                 "volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
237                                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
238                                 new Holder<VnfRollback>());
239         }
240
241         @Test
242         public void createVnfTest_NestedBaseHeatStatus_NotFound() throws Exception {
243                 expectedException.expect(VnfException.class);
244                 mockOpenStackResponseAccess(wireMockPort);
245                 mockOpenStackGetStackVfModule_404();
246                 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId"))
247                                 .willReturn(aResponse().withHeader("Content-Type", "application/json")
248                                                 .withBodyFile("OpenstackResponse_Stack_Created_VfModule.json")
249                                                 .withStatus(HttpStatus.SC_OK)));
250
251                 MsoRequest msoRequest = getMsoRequest();
252
253                 Map<String, String> map = new HashMap<>();
254                 map.put("key1", "value1");
255                 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
256                                 "volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
257                                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
258                                 new Holder<VnfRollback>());
259         }
260
261         @Test
262         public void createVnfTest_ExceptionInGettingBaseNestedHeat() throws Exception {
263                 expectedException.expect(VnfException.class);
264                 mockOpenStackResponseAccess(wireMockPort);
265                 mockOpenStackGetStackVfModule_404();
266                 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId")).willReturn(aResponse().withBodyFile("OpenstackResponse_Stack_Created_VfModule.json").withStatus(HttpStatus.SC_OK)));
267                 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/baseVfHeatStackId")).willReturn(aResponse().withStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR)));
268
269                 MsoRequest msoRequest = getMsoRequest();
270
271                 Map<String, String> map = new HashMap<>();
272                 map.put("key1", "value1");
273                 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
274                                 "volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
275                                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
276                                 new Holder<VnfRollback>());
277         }
278
279         @Test
280         public void createVnfTest_ExceptionInCreateStack() throws Exception {
281                 expectedException.expect(VnfException.class);
282                 mockOpenStackResponseAccess(wireMockPort);
283                 mockOpenStackGetStackVfModule_404();
284                 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId")).willReturn(aResponse().withBodyFile("OpenstackResponse_Stack_Created_VfModule.json").withStatus(HttpStatus.SC_OK)));
285                 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/baseVfHeatStackId")).willReturn(aResponse().withBodyFile("OpenstackResponse_Stack_Created_VfModule.json").withStatus(HttpStatus.SC_OK)));
286
287                 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
288                 VfModule vfModule = new VfModule();
289                 vfModule.setIsBase(false);
290
291                 HeatTemplate heatTemplate = new HeatTemplate();
292                 heatTemplate.setTemplateBody("");
293                 heatTemplate.setTimeoutMinutes(200);
294                 vfModule.setModuleHeatTemplate(heatTemplate);
295                 vfModuleCustomization.setVfModule(vfModule);
296
297                 HeatEnvironment heatEnvironment = new HeatEnvironment();
298                 heatEnvironment.setEnvironment("ist");
299                 vfModuleCustomization.setHeatEnvironment(heatEnvironment);
300
301                 MsoRequest msoRequest = getMsoRequest();
302
303                 Map<String, String> map = new HashMap<>();
304                 map.put("key1", "value1");
305                 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
306                                 "volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
307                                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
308                                 new Holder<VnfRollback>());
309         }
310
311         @Test
312         public void createVnfTest_ModelCustUuidIsNull() throws Exception {
313                 expectedException.expect(VnfException.class);
314                 mockOpenStackResponseAccess(wireMockPort);
315                 mockOpenStackGetStackVfModule_404();
316                 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId")).willReturn(aResponse().withBodyFile("OpenstackResponse_Stack_Created_VfModule.json").withStatus(HttpStatus.SC_OK)));
317                 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/baseVfHeatStackId")).willReturn(aResponse().withBodyFile("OpenstackResponse_Stack_Created_VfModule.json").withStatus(HttpStatus.SC_OK)));
318
319                 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
320                 VfModule vfModule = new VfModule();
321                 vfModule.setIsBase(false);
322
323                 HeatTemplate heatTemplate = new HeatTemplate();
324                 heatTemplate.setTemplateBody("");
325                 heatTemplate.setTimeoutMinutes(200);
326                 vfModule.setModuleHeatTemplate(heatTemplate);
327                 vfModuleCustomization.setVfModule(vfModule);
328
329                 HeatEnvironment heatEnvironment = new HeatEnvironment();
330                 heatEnvironment.setEnvironment("ist");
331                 vfModuleCustomization.setHeatEnvironment(heatEnvironment);
332
333                 VnfResource vnfResource = new VnfResource();
334                 vnfResource.setAicVersionMin("1");
335                 vnfResource.setAicVersionMin("3");
336
337
338                 MsoRequest msoRequest = getMsoRequest();
339
340                 Map<String, String> map = new HashMap<>();
341                 map.put("key1", "value1");
342                 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "XVFMOD",
343                                 "volumeGroupHeatStackId", "baseVfHeatStackId", null, map,
344                                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
345                                 new Holder<VnfRollback>());
346         }
347
348         @Test
349         public void createVnfTest_HeatEnvironment_ContainsParameters() throws Exception {
350                 expectedException.expect(VnfException.class);
351                 mockOpenStackResponseAccess(wireMockPort);
352                 mockOpenStackGetStackVfModule_404();
353                 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId")).willReturn(aResponse().withBodyFile("OpenstackResponse_Stack_Created_VfModule.json").withStatus(HttpStatus.SC_OK)));
354                 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/baseVfHeatStackId")).willReturn(aResponse().withBodyFile("OpenstackResponse_Stack_Created_VfModule.json").withStatus(HttpStatus.SC_OK)));
355
356                 MsoRequest msoRequest = getMsoRequest();
357
358                 Map<String, String> map = new HashMap<>();
359                 map.put("key1", "value1");
360                 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
361                                 "volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
362                                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
363                                 new Holder<VnfRollback>());
364         }
365
366         private MsoRequest getMsoRequest() {
367                 MsoRequest msoRequest = new MsoRequest();
368                 msoRequest.setRequestId("12345");
369                 msoRequest.setServiceInstanceId("12345");
370                 return msoRequest;
371         }
372
373         @Test
374         public void updateVnfTest_CloudSiteIdNotFound() throws Exception {
375                 expectedException.expect(VnfException.class);
376                 MsoRequest msoRequest = getMsoRequest();
377
378                 Map<String, String> map = new HashMap<>();
379                 map.put("key1", "value1");
380                 instance.updateVfModule("mdt1", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "vSAMP12", "VFMOD",
381                                 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "vfModuleStackId",
382                                 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
383                                 new Holder<VnfRollback>());
384         }
385
386         @Test
387         public void updateVnfTest_HeatStackNotFound() throws Exception {
388                 expectedException.expect(VnfNotFound.class);
389                 MsoRequest msoRequest = getMsoRequest();
390                 mockOpenStackResponseAccess(wireMockPort);
391                 Map<String, String> map = new HashMap<>();
392                 map.put("key1", "value1");
393                 instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
394                                 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
395                                 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
396                                 new Holder<VnfRollback>());
397         }
398
399         @Test
400         public void updateVnfTest_ExceptionInGettingNestedHeatStack() throws Exception {
401                 expectedException.expect(VnfException.class);
402                 MsoRequest msoRequest = getMsoRequest();
403                 mockOpenStackResponseAccess(wireMockPort);
404                 mockOpenStackGetStackVfModule_200();
405                 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId"))
406                                 .willReturn(aResponse().withHeader("Content-Type", "application/json")
407                                                 .withStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR)));
408                 Map<String, String> map = new HashMap<>();
409                 map.put("key1", "value1");
410                 instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
411                                 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
412                                 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
413                                 new Holder<VnfRollback>());
414         }
415
416         @Test
417         public void updateVnfTest_NestedHeatStackNotFound() throws Exception {
418                 expectedException.expect(VnfException.class);
419                 MsoRequest msoRequest = getMsoRequest();
420                 mockOpenStackResponseAccess(wireMockPort);
421                 mockOpenStackGetStackVfModule_200();
422                 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId"))
423                                 .willReturn(aResponse().withHeader("Content-Type", "application/json")
424                                                 .withStatus(HttpStatus.SC_NOT_FOUND)));
425                 Map<String, String> map = new HashMap<>();
426                 map.put("key1", "value1");
427                 instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
428                                 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
429                                 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
430                                 new Holder<VnfRollback>());
431         }
432
433         @Test
434         public void updateVnfTest_ExceptionInGettingNestedBaseHeatStack() throws Exception {
435                 expectedException.expect(VnfException.class);
436                 MsoRequest msoRequest = getMsoRequest();
437                 mockOpenStackResponseAccess(wireMockPort);
438                 mockOpenStackGetStackVfModule_200();
439                 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/volumeGroupHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
440                 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/baseVfHeatStackId",HttpStatus.SC_INTERNAL_SERVER_ERROR,"OpenstackResponse_Stack_Created_VfModule.json");
441                 Map<String, String> map = new HashMap<>();
442                 map.put("key1", "value1");
443                 instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
444                                 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
445                                 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
446                                 new Holder<VnfRollback>());
447         }
448
449         @Test
450         public void updateVnfTest_NestedBaseHeatStackNotFound() throws Exception {
451                 expectedException.expect(VnfException.class);
452                 MsoRequest msoRequest = getMsoRequest();
453                 mockOpenStackResponseAccess(wireMockPort);
454                 mockOpenStackGetStackVfModule_200();
455                 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/volumeGroupHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
456                 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/baseVfHeatStackId",HttpStatus.SC_NOT_FOUND,"OpenstackResponse_Stack_Created_VfModule.json");
457                 Map<String, String> map = new HashMap<>();
458                 map.put("key1", "value1");
459                 instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
460                                 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
461                                 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
462                                 new Holder<VnfRollback>());
463         }
464
465         @Test
466         public void updateVnfTest_MissingParams() throws Exception {
467                 expectedException.expect(VnfException.class);
468                 MsoRequest msoRequest = getMsoRequest();
469                 mockOpenStackResponseAccess(wireMockPort);
470                 mockOpenStackGetStackVfModule_200();
471                 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/volumeGroupHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
472                 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/baseVfHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
473                 Map<String, String> map = new HashMap<>();
474                 map.put("key1", "value1");
475                 instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
476                                 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
477                                 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
478                                 new Holder<VnfRollback>());
479         }
480
481         @Test
482         public void updateVnfTest_UpdateStackException() throws Exception {
483                 expectedException.expect(VnfException.class);
484                 MsoRequest msoRequest = getMsoRequest();
485                 mockOpenStackResponseAccess(wireMockPort);
486                 mockOpenStackGetStackVfModule_200();
487                 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/volumeGroupHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
488                 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/baseVfHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
489
490                 VfModuleCustomization vfModuleCustomization = getVfModuleCustomization();
491                 vfModuleCustomization.getVfModule().getModuleHeatTemplate().setParameters(new HashSet<>());
492                 Map<String, String> map = new HashMap<>();
493                 map.put("key1", "value1");
494                 instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
495                                 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
496                                 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
497                                 new Holder<VnfRollback>());
498         }
499
500         @Test
501         public void updateVnfTest() throws Exception {
502                 MsoRequest msoRequest = getMsoRequest();
503                 mockOpenStackResponseAccess(wireMockPort);
504                 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/"+vnfName,HttpStatus.SC_OK,"OpenstackResponse_Stack_UpdateComplete.json");
505                 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/volumeGroupHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
506                 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/baseVfHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
507                 mockOpenStackPutStack("null/stackId", HttpStatus.SC_OK);
508                 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/null/stackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_UpdateComplete.json");
509
510                 VfModuleCustomization vfModuleCustomization = getVfModuleCustomization();
511                 vfModuleCustomization.getVfModule().getModuleHeatTemplate().setParameters(new HashSet<>());
512                 Map<String, String> map = new HashMap<>();
513                 map.put("key1", "value1");
514                 instance.updateVfModule("MTN13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
515                                 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
516                                 "b4ea86b4-253f-11e7-93ae-92361f002671", map, msoRequest, new Holder<Map<String, String>>(),
517                                 new Holder<VnfRollback>());
518         }
519
520         @Test
521         @Ignore
522         public void deleteVnfTest() throws MsoException {
523
524                 Map<String, Object> outputs = new HashMap<>();
525                 outputs.put("Key1", "value1");
526                 when(heatUtils.queryStackForOutputs("mdt1", "88a6ca3ee0394ade9403f075db23167e", "vSAMP12")).thenReturn(outputs);
527
528                 MsoVnfAdapterImpl instance = new MsoVnfAdapterImpl();
529                 MsoRequest msoRequest = getMsoRequest();
530                 try {
531                         instance.deleteVfModule("mdt1", "88a6ca3ee0394ade9403f075db23167e", "vSAMP12", msoRequest,
532                                         new Holder<Map<String, String>>());
533                 } catch (Exception e) {
534
535                 }
536         }
537
538         private VfModuleCustomization getVfModuleCustomization() {
539                 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
540                 VfModule vfModule = new VfModule();
541                 vfModule.setIsBase(false);
542
543                 HeatTemplate heatTemplate = new HeatTemplate();
544                 heatTemplate.setTemplateBody("");
545                 heatTemplate.setTimeoutMinutes(200);
546                 HeatTemplateParam heatTemplateParam = new HeatTemplateParam();
547                 heatTemplateParam.setParamAlias("ParamAlias");
548                 heatTemplateParam.setRequired(true);
549                 heatTemplateParam.setParamName("test");
550                 Set set = new HashSet();
551                 set.add(heatTemplateParam);
552                 heatTemplate.setParameters(set);
553                 vfModule.setModuleHeatTemplate(heatTemplate);
554                 vfModuleCustomization.setVfModule(vfModule);
555
556                 HeatEnvironment heatEnvironment = new HeatEnvironment();
557                 heatEnvironment.setEnvironment("parameters:ist");
558                 vfModuleCustomization.setHeatEnvironment(heatEnvironment);
559                 return vfModuleCustomization;
560         }
561
562
563 }