Containerization feature of SO
[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() {
85                 MockitoAnnotations.initMocks(this);
86                 WireMock.reset();
87         }
88
89         @Test
90         @Ignore
91         public void healthCheckVNFTest() {
92                 MsoVnfAdapterImpl instance = new MsoVnfAdapterImpl();
93                 instance.healthCheck();
94         }
95
96         @Test
97         public void createVnfTest() throws Exception {
98                 StackInfo info = new StackInfo();
99                 info.setStatus(HeatStatus.CREATED);
100
101                 mockOpenStackResponseAccess(wireMockPort);
102                 mockOpenStackGetStackVfModule_200();
103
104                 MsoRequest msoRequest = getMsoRequest();
105
106                 Map<String, String> map = new HashMap<>();
107                 map.put("key1", "value1");
108                 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
109                                 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
110                                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
111                                 new Holder<VnfRollback>());
112         }
113
114         @Test
115         public void createVnfTest_HeatStatusUpdating() throws Exception {
116                 expectedException.expect(VnfAlreadyExists.class);
117                 mockOpenStackResponseAccess(wireMockPort);
118
119                 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001/stackId"))
120                                 .willReturn(aResponse().withHeader("Content-Type", "application/json")
121                                                 .withBodyFile("OpenstackResponse_Stack_Updating_VfModule.json")
122                                                 .withStatus(HttpStatus.SC_OK)));
123
124                 MsoRequest msoRequest = getMsoRequest();
125
126                 Map<String, String> map = new HashMap<>();
127                 map.put("key1", "value1");
128                 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
129                                 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
130                                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
131                                 new Holder<VnfRollback>());
132         }
133
134         @Test
135         public void createVnfTest_HeatStatusUpdated() throws Exception {
136                 expectedException.expect(VnfAlreadyExists.class);
137                 mockOpenStackResponseAccess(wireMockPort);
138
139                 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001/stackId"))
140                                 .willReturn(aResponse().withHeader("Content-Type", "application/json")
141                                                 .withBodyFile("OpenstackResponse_StackId.json")
142                                                 .withStatus(HttpStatus.SC_OK)));
143
144                 MsoRequest msoRequest = getMsoRequest();
145
146                 Map<String, String> map = new HashMap<>();
147                 map.put("key1", "value1");
148                 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
149                                 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
150                                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
151                                 new Holder<VnfRollback>());
152         }
153
154         @Test
155         public void createVnfTest_HeatStatusFailed() throws Exception {
156                 expectedException.expect(VnfAlreadyExists.class);
157                 mockOpenStackResponseAccess(wireMockPort);
158
159                 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001/stackId"))
160                                 .willReturn(aResponse().withHeader("Content-Type", "application/json")
161                                                 .withBodyFile("OpenstackResponse_Stack_Failed_VfModule.json")
162                                                 .withStatus(HttpStatus.SC_OK)));
163
164                 MsoRequest msoRequest = getMsoRequest();
165
166                 Map<String, String> map = new HashMap<>();
167                 map.put("key1", "value1");
168                 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
169                                 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
170                                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
171                                 new Holder<VnfRollback>());
172         }
173
174         @Test
175         public void createVnfTest_HeatStatusCreated() throws Exception {
176                 expectedException.expect(VnfAlreadyExists.class);
177                 mockOpenStackResponseAccess(wireMockPort);
178
179                 mockOpenStackGetStackVfModule_200();
180
181                 MsoRequest msoRequest = getMsoRequest();
182
183                 Map<String, String> map = new HashMap<>();
184                 map.put("key1", "value1");
185                 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
186                                 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
187                                 Boolean.TRUE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
188                                 new Holder<VnfRollback>());
189         }
190
191
192         @Test
193         public void createVnfTest_ExceptionInGettingHeat() throws Exception {
194                 expectedException.expect(VnfException.class);
195                 MsoRequest msoRequest = getMsoRequest();
196
197                 Map<String, String> map = new HashMap<>();
198                 map.put("key1", "value1");
199                 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
200                                 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
201                                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
202                                 new Holder<VnfRollback>());
203         }
204
205         @Test
206         public void createVnfTest_NestedHeatStatusNotFound() throws Exception {
207                 expectedException.expect(VnfException.class);
208                 mockOpenStackResponseAccess(wireMockPort);
209                 mockOpenStackGetStackVfModule_404();
210
211                 MsoRequest msoRequest = getMsoRequest();
212
213                 Map<String, String> map = new HashMap<>();
214                 map.put("key1", "value1");
215                 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
216                                 "volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
217                                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
218                                 new Holder<VnfRollback>());
219         }
220
221         @Test
222         public void createVnfTest_ExceptionInGettingNestedHeat() throws Exception {
223                 expectedException.expect(VnfException.class);
224                 mockOpenStackResponseAccess(wireMockPort);
225                 mockOpenStackGetStackVfModule_404();
226                 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId"))
227                                 .willReturn(aResponse().withHeader("Content-Type", "application/json")
228                                                 .withStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR)));
229
230                 MsoRequest msoRequest = getMsoRequest();
231
232                 Map<String, String> map = new HashMap<>();
233                 map.put("key1", "value1");
234                 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
235                                 "volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
236                                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
237                                 new Holder<VnfRollback>());
238         }
239
240         @Test
241         public void createVnfTest_NestedBaseHeatStatus_NotFound() throws Exception {
242                 expectedException.expect(VnfException.class);
243                 mockOpenStackResponseAccess(wireMockPort);
244                 mockOpenStackGetStackVfModule_404();
245                 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId"))
246                                 .willReturn(aResponse().withHeader("Content-Type", "application/json")
247                                                 .withBodyFile("OpenstackResponse_Stack_Created_VfModule.json")
248                                                 .withStatus(HttpStatus.SC_OK)));
249
250                 MsoRequest msoRequest = getMsoRequest();
251
252                 Map<String, String> map = new HashMap<>();
253                 map.put("key1", "value1");
254                 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
255                                 "volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
256                                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
257                                 new Holder<VnfRollback>());
258         }
259
260         @Test
261         public void createVnfTest_ExceptionInGettingBaseNestedHeat() throws Exception {
262                 expectedException.expect(VnfException.class);
263                 mockOpenStackResponseAccess(wireMockPort);
264                 mockOpenStackGetStackVfModule_404();
265                 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId")).willReturn(aResponse().withBodyFile("OpenstackResponse_Stack_Created_VfModule.json").withStatus(HttpStatus.SC_OK)));
266                 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/baseVfHeatStackId")).willReturn(aResponse().withStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR)));
267
268                 MsoRequest msoRequest = getMsoRequest();
269
270                 Map<String, String> map = new HashMap<>();
271                 map.put("key1", "value1");
272                 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
273                                 "volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
274                                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
275                                 new Holder<VnfRollback>());
276         }
277
278         @Test
279         public void createVnfTest_ExceptionInCreateStack() throws Exception {
280                 expectedException.expect(VnfException.class);
281                 mockOpenStackResponseAccess(wireMockPort);
282                 mockOpenStackGetStackVfModule_404();
283                 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId")).willReturn(aResponse().withBodyFile("OpenstackResponse_Stack_Created_VfModule.json").withStatus(HttpStatus.SC_OK)));
284                 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/baseVfHeatStackId")).willReturn(aResponse().withBodyFile("OpenstackResponse_Stack_Created_VfModule.json").withStatus(HttpStatus.SC_OK)));
285
286                 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
287                 VfModule vfModule = new VfModule();
288                 vfModule.setIsBase(false);
289
290                 HeatTemplate heatTemplate = new HeatTemplate();
291                 heatTemplate.setTemplateBody("");
292                 heatTemplate.setTimeoutMinutes(200);
293                 vfModule.setModuleHeatTemplate(heatTemplate);
294                 vfModuleCustomization.setVfModule(vfModule);
295
296                 HeatEnvironment heatEnvironment = new HeatEnvironment();
297                 heatEnvironment.setEnvironment("ist");
298                 vfModuleCustomization.setHeatEnvironment(heatEnvironment);
299
300                 MsoRequest msoRequest = getMsoRequest();
301
302                 Map<String, String> map = new HashMap<>();
303                 map.put("key1", "value1");
304                 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
305                                 "volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
306                                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
307                                 new Holder<VnfRollback>());
308         }
309
310         @Test
311         public void createVnfTest_ModelCustUuidIsNull() throws Exception {
312                 expectedException.expect(VnfException.class);
313                 mockOpenStackResponseAccess(wireMockPort);
314                 mockOpenStackGetStackVfModule_404();
315                 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId")).willReturn(aResponse().withBodyFile("OpenstackResponse_Stack_Created_VfModule.json").withStatus(HttpStatus.SC_OK)));
316                 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/baseVfHeatStackId")).willReturn(aResponse().withBodyFile("OpenstackResponse_Stack_Created_VfModule.json").withStatus(HttpStatus.SC_OK)));
317
318                 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
319                 VfModule vfModule = new VfModule();
320                 vfModule.setIsBase(false);
321
322                 HeatTemplate heatTemplate = new HeatTemplate();
323                 heatTemplate.setTemplateBody("");
324                 heatTemplate.setTimeoutMinutes(200);
325                 vfModule.setModuleHeatTemplate(heatTemplate);
326                 vfModuleCustomization.setVfModule(vfModule);
327
328                 HeatEnvironment heatEnvironment = new HeatEnvironment();
329                 heatEnvironment.setEnvironment("ist");
330                 vfModuleCustomization.setHeatEnvironment(heatEnvironment);
331
332                 VnfResource vnfResource = new VnfResource();
333                 vnfResource.setAicVersionMin("1");
334                 vnfResource.setAicVersionMin("3");
335
336
337                 MsoRequest msoRequest = getMsoRequest();
338
339                 Map<String, String> map = new HashMap<>();
340                 map.put("key1", "value1");
341                 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "XVFMOD",
342                                 "volumeGroupHeatStackId", "baseVfHeatStackId", null, map,
343                                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
344                                 new Holder<VnfRollback>());
345         }
346
347         @Test
348         public void createVnfTest_HeatEnvironment_ContainsParameters() throws Exception {
349                 expectedException.expect(VnfException.class);
350                 mockOpenStackResponseAccess(wireMockPort);
351                 mockOpenStackGetStackVfModule_404();
352                 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId")).willReturn(aResponse().withBodyFile("OpenstackResponse_Stack_Created_VfModule.json").withStatus(HttpStatus.SC_OK)));
353                 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/baseVfHeatStackId")).willReturn(aResponse().withBodyFile("OpenstackResponse_Stack_Created_VfModule.json").withStatus(HttpStatus.SC_OK)));
354
355                 MsoRequest msoRequest = getMsoRequest();
356
357                 Map<String, String> map = new HashMap<>();
358                 map.put("key1", "value1");
359                 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
360                                 "volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
361                                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
362                                 new Holder<VnfRollback>());
363         }
364
365         private MsoRequest getMsoRequest() {
366                 MsoRequest msoRequest = new MsoRequest();
367                 msoRequest.setRequestId("12345");
368                 msoRequest.setServiceInstanceId("12345");
369                 return msoRequest;
370         }
371
372         @Test
373         public void updateVnfTest_CloudSiteIdNotFound() throws Exception {
374                 expectedException.expect(VnfException.class);
375                 MsoRequest msoRequest = getMsoRequest();
376
377                 Map<String, String> map = new HashMap<>();
378                 map.put("key1", "value1");
379                 instance.updateVfModule("mdt1", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "vSAMP12", "VFMOD",
380                                 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "vfModuleStackId",
381                                 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
382                                 new Holder<VnfRollback>());
383         }
384
385         @Test
386         public void updateVnfTest_HeatStackNotFound() throws Exception {
387                 expectedException.expect(VnfNotFound.class);
388                 MsoRequest msoRequest = getMsoRequest();
389                 mockOpenStackResponseAccess(wireMockPort);
390                 Map<String, String> map = new HashMap<>();
391                 map.put("key1", "value1");
392                 instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
393                                 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
394                                 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
395                                 new Holder<VnfRollback>());
396         }
397
398         @Test
399         public void updateVnfTest_ExceptionInGettingNestedHeatStack() throws Exception {
400                 expectedException.expect(VnfException.class);
401                 MsoRequest msoRequest = getMsoRequest();
402                 mockOpenStackResponseAccess(wireMockPort);
403                 mockOpenStackGetStackVfModule_200();
404                 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId"))
405                                 .willReturn(aResponse().withHeader("Content-Type", "application/json")
406                                                 .withStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR)));
407                 Map<String, String> map = new HashMap<>();
408                 map.put("key1", "value1");
409                 instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
410                                 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
411                                 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
412                                 new Holder<VnfRollback>());
413         }
414
415         @Test
416         public void updateVnfTest_NestedHeatStackNotFound() throws Exception {
417                 expectedException.expect(VnfException.class);
418                 MsoRequest msoRequest = getMsoRequest();
419                 mockOpenStackResponseAccess(wireMockPort);
420                 mockOpenStackGetStackVfModule_200();
421                 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId"))
422                                 .willReturn(aResponse().withHeader("Content-Type", "application/json")
423                                                 .withStatus(HttpStatus.SC_NOT_FOUND)));
424                 Map<String, String> map = new HashMap<>();
425                 map.put("key1", "value1");
426                 instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
427                                 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
428                                 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
429                                 new Holder<VnfRollback>());
430         }
431
432         @Test
433         public void updateVnfTest_ExceptionInGettingNestedBaseHeatStack() throws Exception {
434                 expectedException.expect(VnfException.class);
435                 MsoRequest msoRequest = getMsoRequest();
436                 mockOpenStackResponseAccess(wireMockPort);
437                 mockOpenStackGetStackVfModule_200();
438                 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/volumeGroupHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
439                 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/baseVfHeatStackId",HttpStatus.SC_INTERNAL_SERVER_ERROR,"OpenstackResponse_Stack_Created_VfModule.json");
440                 Map<String, String> map = new HashMap<>();
441                 map.put("key1", "value1");
442                 instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
443                                 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
444                                 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
445                                 new Holder<VnfRollback>());
446         }
447
448         @Test
449         public void updateVnfTest_NestedBaseHeatStackNotFound() throws Exception {
450                 expectedException.expect(VnfException.class);
451                 MsoRequest msoRequest = getMsoRequest();
452                 mockOpenStackResponseAccess(wireMockPort);
453                 mockOpenStackGetStackVfModule_200();
454                 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/volumeGroupHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
455                 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/baseVfHeatStackId",HttpStatus.SC_NOT_FOUND,"OpenstackResponse_Stack_Created_VfModule.json");
456                 Map<String, String> map = new HashMap<>();
457                 map.put("key1", "value1");
458                 instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
459                                 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
460                                 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
461                                 new Holder<VnfRollback>());
462         }
463
464         @Test
465         public void updateVnfTest_MissingParams() throws Exception {
466                 expectedException.expect(VnfException.class);
467                 MsoRequest msoRequest = getMsoRequest();
468                 mockOpenStackResponseAccess(wireMockPort);
469                 mockOpenStackGetStackVfModule_200();
470                 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/volumeGroupHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
471                 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/baseVfHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
472                 Map<String, String> map = new HashMap<>();
473                 map.put("key1", "value1");
474                 instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
475                                 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
476                                 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
477                                 new Holder<VnfRollback>());
478         }
479
480         @Test
481         public void updateVnfTest_UpdateStackException() throws Exception {
482                 expectedException.expect(VnfException.class);
483                 MsoRequest msoRequest = getMsoRequest();
484                 mockOpenStackResponseAccess(wireMockPort);
485                 mockOpenStackGetStackVfModule_200();
486                 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/volumeGroupHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
487                 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/baseVfHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
488
489                 VfModuleCustomization vfModuleCustomization = getVfModuleCustomization();
490                 vfModuleCustomization.getVfModule().getModuleHeatTemplate().setParameters(new HashSet<>());
491                 Map<String, String> map = new HashMap<>();
492                 map.put("key1", "value1");
493                 instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
494                                 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
495                                 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
496                                 new Holder<VnfRollback>());
497         }
498
499         @Test
500         public void updateVnfTest() throws Exception {
501                 MsoRequest msoRequest = getMsoRequest();
502                 mockOpenStackResponseAccess(wireMockPort);
503                 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/"+vnfName,HttpStatus.SC_OK,"OpenstackResponse_Stack_UpdateComplete.json");
504                 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/volumeGroupHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
505                 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/baseVfHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
506                 mockOpenStackPutStack("null/stackId", HttpStatus.SC_OK);
507                 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/null/stackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_UpdateComplete.json");
508
509                 VfModuleCustomization vfModuleCustomization = getVfModuleCustomization();
510                 vfModuleCustomization.getVfModule().getModuleHeatTemplate().setParameters(new HashSet<>());
511                 Map<String, String> map = new HashMap<>();
512                 map.put("key1", "value1");
513                 instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
514                                 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
515                                 "b4ea86b4-253f-11e7-93ae-92361f002671", map, msoRequest, new Holder<Map<String, String>>(),
516                                 new Holder<VnfRollback>());
517         }
518
519         @Test
520         @Ignore
521         public void deleteVnfTest() throws MsoException {
522
523                 Map<String, Object> outputs = new HashMap<>();
524                 outputs.put("Key1", "value1");
525                 when(heatUtils.queryStackForOutputs("mdt1", "88a6ca3ee0394ade9403f075db23167e", "vSAMP12")).thenReturn(outputs);
526
527                 MsoVnfAdapterImpl instance = new MsoVnfAdapterImpl();
528                 MsoRequest msoRequest = getMsoRequest();
529                 try {
530                         instance.deleteVfModule("mdt1", "88a6ca3ee0394ade9403f075db23167e", "vSAMP12", msoRequest,
531                                         new Holder<Map<String, String>>());
532                 } catch (Exception e) {
533
534                 }
535         }
536
537         private VfModuleCustomization getVfModuleCustomization() {
538                 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
539                 VfModule vfModule = new VfModule();
540                 vfModule.setIsBase(false);
541
542                 HeatTemplate heatTemplate = new HeatTemplate();
543                 heatTemplate.setTemplateBody("");
544                 heatTemplate.setTimeoutMinutes(200);
545                 HeatTemplateParam heatTemplateParam = new HeatTemplateParam();
546                 heatTemplateParam.setParamAlias("ParamAlias");
547                 heatTemplateParam.setRequired(true);
548                 heatTemplateParam.setParamName("test");
549                 Set set = new HashSet();
550                 set.add(heatTemplateParam);
551                 heatTemplate.setParameters(set);
552                 vfModule.setModuleHeatTemplate(heatTemplate);
553                 vfModuleCustomization.setVfModule(vfModule);
554
555                 HeatEnvironment heatEnvironment = new HeatEnvironment();
556                 heatEnvironment.setEnvironment("parameters:ist");
557                 vfModuleCustomization.setHeatEnvironment(heatEnvironment);
558                 return vfModuleCustomization;
559         }
560
561
562 }