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