2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Modifications Copyright (c) 2019 Samsung
8 * ================================================================================
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
20 * ============LICENSE_END=========================================================
23 package org.onap.so.bpmn.common;
25 import static org.junit.Assert.assertFalse;
26 import static org.junit.Assert.assertNotNull;
27 import static org.junit.Assert.assertTrue;
28 import static org.onap.so.bpmn.mock.StubResponseVNFAdapter.mockVNFDelete;
29 import static org.onap.so.bpmn.mock.StubResponseVNFAdapter.mockVNFPost;
30 import static org.onap.so.bpmn.mock.StubResponseVNFAdapter.mockVNFPut;
31 import static org.onap.so.bpmn.mock.StubResponseVNFAdapter.mockVNFRollbackDelete;
33 import java.io.IOException;
34 import java.util.HashMap;
36 import java.util.UUID;
38 import org.camunda.bpm.engine.test.Deployment;
39 import org.junit.Ignore;
40 import org.junit.Test;
41 import org.onap.so.BaseIntegrationTest;
42 import org.onap.so.bpmn.core.WorkflowException;
43 import org.slf4j.Logger;
44 import org.slf4j.LoggerFactory;
47 * Unit tests for VnfAdapterRestV1.
50 public class VnfAdapterRestV1IT extends BaseIntegrationTest {
52 Logger logger = LoggerFactory.getLogger(VnfAdapterRestV1IT.class);
55 private static final String EOL = "\n";
57 private final CallbackSet callbacks = new CallbackSet();
59 private final String CREATE_VF_MODULE_REQUEST =
60 "<createVfModuleRequest>" + EOL +
61 " <cloudSiteId>cloudSiteId</cloudSiteId>" + EOL +
62 " <cloudOwner>cloudOwner</cloudOwner>" + EOL +
63 " <tenantId>tenantId</tenantId>" + EOL +
64 " <vnfId>vnfId</vnfId>" + EOL +
65 " <vfModuleName>vfModuleName</vfModuleName>" + EOL +
66 " <vfModuleId>vfModuleId</vfModuleId>" + EOL +
67 " <vnfType>vnfType</vnfType>" + EOL +
68 " <vnfVersion>vnfVersion</vnfVersion>" + EOL +
69 " <vfModuleType>vfModuleType</vfModuleType>" + EOL +
70 " <volumeGroupId>volumeGroupId</volumeGroupId>" + EOL +
71 " <volumeGroupStackId>volumeGroupStackId</volumeGroupStackId>" + EOL +
72 " <baseVfModuleId>baseVfModuleId</baseVfModuleId>" + EOL +
73 " <baseVfModuleStackId>baseVfModuleStackId</baseVfModuleStackId>" + EOL +
74 " <skipAAI>true</skipAAI>" + EOL +
75 " <backout>false</backout>" + EOL +
76 " <failIfExists>true</failIfExists>" + EOL +
77 " <vfModuleParams>" + EOL +
79 " <key>key1</key>" + EOL +
80 " <value>value1</value>" + EOL +
83 " <key>key2</key>" + EOL +
84 " <value>value2</value>" + EOL +
86 " </vfModuleParams>" + EOL +
87 " <msoRequest>" + EOL +
88 " <requestId>requestId</requestId>" + EOL +
89 " <serviceInstanceId>serviceInstanceId</serviceInstanceId>" + EOL +
90 " </msoRequest>" + EOL +
91 " <messageId>{{MESSAGE-ID}}</messageId>" + EOL +
92 " <notificationUrl>http://localhost:28080/mso/WorkflowMessage</notificationUrl>" + EOL +
93 "</createVfModuleRequest>" + EOL;
95 private final String UPDATE_VF_MODULE_REQUEST =
96 "<updateVfModuleRequest>" + EOL +
97 " <cloudSiteId>cloudSiteId</cloudSiteId>" + EOL +
98 " <cloudOwner>cloudOwner</cloudOwner>" + EOL +
99 " <tenantId>tenantId</tenantId>" + EOL +
100 " <vnfId>vnfId</vnfId>" + EOL +
101 " <vfModuleName>vfModuleName</vfModuleName>" + EOL +
102 " <vfModuleId>vfModuleId</vfModuleId>" + EOL +
103 " <vfModuleStackId>vfModuleStackId</vfModuleStackId>" + EOL +
104 " <vnfType>vnfType</vnfType>" + EOL +
105 " <vnfVersion>vnfVersion</vnfVersion>" + EOL +
106 " <vfModuleType>vfModuleType</vfModuleType>" + EOL +
107 " <volumeGroupId>volumeGroupId</volumeGroupId>" + EOL +
108 " <volumeGroupStackId>volumeGroupStackId</volumeGroupStackId>" + EOL +
109 " <baseVfModuleId>baseVfModuleId</baseVfModuleId>" + EOL +
110 " <baseVfModuleStackId>baseVfModuleStackId</baseVfModuleStackId>" + EOL +
111 " <skipAAI>true</skipAAI>" + EOL +
112 " <backout>false</backout>" + EOL +
113 " <failIfExists>true</failIfExists>" + EOL +
114 " <vfModuleParams>" + EOL +
116 " <key>key1</key>" + EOL +
117 " <value>value1</value>" + EOL +
120 " <key>key2</key>" + EOL +
121 " <value>value2</value>" + EOL +
123 " </vfModuleParams>" + EOL +
124 " <msoRequest>" + EOL +
125 " <requestId>requestId</requestId>" + EOL +
126 " <serviceInstanceId>serviceInstanceId</serviceInstanceId>" + EOL +
127 " </msoRequest>" + EOL +
128 " <messageId>{{MESSAGE-ID}}</messageId>" + EOL +
129 " <notificationUrl>http://localhost:28080/mso/WorkflowMessage</notificationUrl>" + EOL +
130 "</updateVfModuleRequest>" + EOL;
132 private final String DELETE_VF_MODULE_REQUEST =
133 "<deleteVfModuleRequest>" + EOL +
134 " <cloudSiteId>cloudSiteId</cloudSiteId>" + EOL +
135 " <cloudOwner>cloudOwner</cloudOwner>" + EOL +
136 " <tenantId>tenantId</tenantId>" + EOL +
137 " <vnfId>vnfId</vnfId>" + EOL +
138 " <vfModuleId>vfModuleId</vfModuleId>" + EOL +
139 " <vfModuleStackId>vfModuleStackId</vfModuleStackId>" + EOL +
140 " <skipAAI>true</skipAAI>" + EOL +
141 " <msoRequest>" + EOL +
142 " <requestId>requestId</requestId>" + EOL +
143 " <serviceInstanceId>serviceInstanceId</serviceInstanceId>" + EOL +
144 " </msoRequest>" + EOL +
145 " <messageId>{{MESSAGE-ID}}</messageId>" + EOL +
146 " <notificationUrl>http://localhost:28080/mso/WorkflowMessage</notificationUrl>" + EOL +
147 "</deleteVfModuleRequest>" + EOL;
149 private final String ROLLBACK_VF_MODULE_REQUEST =
150 "<rollbackVfModuleRequest>" + EOL +
151 " <messageId>{{MESSAGE-ID}}</messageId>" + EOL +
152 " <notificationUrl>http://localhost:28080/mso/WorkflowMessage</notificationUrl>" + EOL +
153 " <skipAAI>true</skipAAI>" + EOL +
154 " <vfModuleRollback>" + EOL +
155 " <cloudSiteId>cloudSiteId</cloudSiteId>" + EOL +
156 " <cloudOwner>cloudOwner</cloudOwner>" + EOL +
157 " <tenantId>tenantId</tenantId>" + EOL +
158 " <vnfId>vnfId</vnfId>" + EOL +
159 " <vfModuleId>vfModuleId</vfModuleId>" + EOL +
160 " <vfModuleStackId>vfModuleStackId</vfModuleStackId>" + EOL +
161 " <msoRequest>" + EOL +
162 " <requestId>requestId</requestId>" + EOL +
163 " <serviceInstanceId>serviceInstanceId</serviceInstanceId>" + EOL +
164 " </msoRequest>" + EOL +
165 " <messageId>{{MESSAGE-ID}}</messageId>" + EOL +
166 " <vfModuleCreated>true</vfModuleCreated>" + EOL +
167 " </vfModuleRollback>" + EOL +
168 "</rollbackVfModuleRequest>" + EOL;
170 public VnfAdapterRestV1IT() throws IOException {
171 callbacks.put("createVfModule",
172 "<createVfModuleResponse>" + EOL +
173 " <vnfId>vnfId</vnfId>" + EOL +
174 " <vfModuleId>vfModuleId</vfModuleId>" + EOL +
175 " <vfModuleStackId>vfModuleStackId</vfModuleStackId>" + EOL +
176 " <vfModuleCreated>true</vfModuleCreated>" + EOL +
177 " <vfModuleOutputs>" + EOL +
179 " <key>key1</key>" + EOL +
180 " <value>value1</value>" + EOL +
183 " <key>key2</key>" + EOL +
184 " <value>value2</value>" + EOL +
186 " </vfModuleOutputs>" + EOL +
187 " <rollback>" + EOL +
188 " <vnfId>vnfId</vnfId>" + EOL +
189 " <vfModuleId>vfModuleId</vfModuleId>" + EOL +
190 " <vfModuleStackId>vfModuleStackId</vfModuleStackId>" + EOL +
191 " <vfModuleCreated>true</vfModuleCreated>" + EOL +
192 " <tenantId>tenantId</tenantId>" + EOL +
193 " <cloudOwner>cloudOwner</cloudOwner>" + EOL +
194 " <cloudSiteId>cloudSiteId</cloudSiteId>" + EOL +
195 " <msoRequest>" + EOL +
196 " <requestId>requestId</requestId>" + EOL +
197 " <serviceInstanceId>serviceInstanceId</serviceInstanceId>" + EOL +
198 " </msoRequest>" + EOL +
199 " <messageId>messageId</messageId>" + EOL +
200 " </rollback>" + EOL +
201 " <messageId>{{MESSAGE-ID}}</messageId>" + EOL +
202 "</createVfModuleResponse>" + EOL);
204 callbacks.put("updateVfModule",
205 "<updateVfModuleResponse>" + EOL +
206 " <vnfId>vnfId</vnfId>" + EOL +
207 " <vfModuleId>vfModuleId</vfModuleId>" + EOL +
208 " <vfModuleStackId>vfModuleStackId</vfModuleStackId>" + EOL +
209 " <vfModuleOutputs>" + EOL +
211 " <key>key1</key>" + EOL +
212 " <value>value1</value>" + EOL +
215 " <key>key2</key>" + EOL +
216 " <value>value2</value>" + EOL +
218 " </vfModuleOutputs>" + EOL +
219 " <messageId>{{MESSAGE-ID}}</messageId>" + EOL +
220 "</updateVfModuleResponse>" + EOL);
222 callbacks.put("deleteVfModule",
223 "<deleteVfModuleResponse>" + EOL +
224 " <vnfId>vnfId</vnfId>" + EOL +
225 " <vfModuleId>vfModuleId</vfModuleId>" + EOL +
226 " <vfModuleDeleted>true</vfModuleDeleted>" + EOL +
227 " <messageId>{{MESSAGE-ID}}</messageId>" + EOL +
228 "</deleteVfModuleResponse>" + EOL);
230 callbacks.put("rollbackVfModule",
231 "<rollbackVfModuleResponse>" + EOL +
232 " <messageId>{{MESSAGE-ID}}</messageId>" + EOL +
233 " <vfModuleRolledback>true</vfModuleRolledback>" + EOL +
234 "</rollbackVfModuleResponse>" + EOL);
236 callbacks.put("vfModuleException",
237 "<vfModuleException>" + EOL +
238 " <message>message</message>" + EOL +
239 " <category>category</category>" + EOL +
240 " <rolledBack>false</rolledBack>" + EOL +
241 " <messageId>{{MESSAGE-ID}}</messageId>" + EOL +
242 "</vfModuleException>" + EOL);
247 public void testCreateVfModuleSuccess() throws Exception {
250 mockVNFPost(wireMockServer, "", 202, "vnfId");
252 String requestId = "dffbae0e-5588-4bd6-9749-b0f0adb52312";
253 String messageId = requestId + "-" + System.currentTimeMillis();
254 String request = CREATE_VF_MODULE_REQUEST.replace("{{MESSAGE-ID}}", messageId);
256 String businessKey = UUID.randomUUID().toString();
257 Map<String, Object> variables = new HashMap<>();
258 variables.put("mso-request-id", requestId);
259 variables.put("isDebugLogEnabled", "true");
260 variables.put("vnfAdapterRestV1Request", request);
262 invokeSubProcess("vnfAdapterRestV1", businessKey, variables);
263 injectVNFRestCallbacks(callbacks, "createVfModule");
264 waitForProcessEnd(businessKey, 10000);
266 String response = (String) getVariableFromHistory(businessKey, "vnfAdapterRestV1Response");
267 logger.debug("Response:\n{}", response);
268 assertTrue(response!=null && response.contains("<createVfModuleResponse>"));
269 assertTrue((boolean) getVariableFromHistory(businessKey, "VNFREST_SuccessIndicator"));
276 public void testUpdateVfModuleSuccess() throws Exception {
279 mockVNFPut(wireMockServer, "/vfModuleId", 202);
281 String requestId = "dffbae0e-5588-4bd6-9749-b0f0adb52312";
282 String messageId = requestId + "-" + System.currentTimeMillis();
283 String request = UPDATE_VF_MODULE_REQUEST.replace("{{MESSAGE-ID}}", messageId);
285 String businessKey = UUID.randomUUID().toString();
286 Map<String, Object> variables = new HashMap<>();
287 variables.put("mso-request-id", requestId);
288 variables.put("isDebugLogEnabled", "true");
289 variables.put("vnfAdapterRestV1Request", request);
291 invokeSubProcess("vnfAdapterRestV1", businessKey, variables);
292 injectVNFRestCallbacks(callbacks, "updateVfModule");
293 waitForProcessEnd(businessKey, 10000);
295 String response = (String) getVariableFromHistory(businessKey, "vnfAdapterRestV1Response");
296 logger.debug("Response:\n{}", response);
297 assertTrue(response.contains("<updateVfModuleResponse>"));
298 assertTrue((boolean) getVariableFromHistory(businessKey, "VNFREST_SuccessIndicator"));
305 public void testDeleteVfModuleSuccess() throws Exception {
308 mockVNFDelete(wireMockServer, "vnfId", "/vfModuleId", 202);
310 String requestId = "dffbae0e-5588-4bd6-9749-b0f0adb52312";
311 String messageId = requestId + "-" + System.currentTimeMillis();
312 String request = DELETE_VF_MODULE_REQUEST.replace("{{MESSAGE-ID}}", messageId);
314 String businessKey = UUID.randomUUID().toString();
315 Map<String, Object> variables = new HashMap<>();
316 variables.put("mso-request-id", requestId);
317 variables.put("isDebugLogEnabled", "true");
318 variables.put("vnfAdapterRestV1Request", request);
320 invokeSubProcess("vnfAdapterRestV1", businessKey, variables);
321 injectVNFRestCallbacks(callbacks, "deleteVfModule");
322 waitForProcessEnd(businessKey, 10000);
324 String response = (String) getVariableFromHistory(businessKey, "vnfAdapterRestV1Response");
325 logger.debug("Response:\n{}", response);
326 assertTrue(response.contains("<deleteVfModuleResponse>"));
327 assertTrue((boolean) getVariableFromHistory(businessKey, "VNFREST_SuccessIndicator"));
334 public void testRollbackVfModuleSuccess() throws Exception {
337 mockVNFRollbackDelete(wireMockServer, "/vfModuleId", 202);
339 String requestId = "dffbae0e-5588-4bd6-9749-b0f0adb52312";
340 String messageId = requestId + "-" + System.currentTimeMillis();
341 String request = ROLLBACK_VF_MODULE_REQUEST.replace("{{MESSAGE-ID}}", messageId);
343 String businessKey = UUID.randomUUID().toString();
344 Map<String, Object> variables = new HashMap<>();
345 variables.put("mso-request-id", requestId);
346 variables.put("isDebugLogEnabled", "true");
347 variables.put("vnfAdapterRestV1Request", request);
349 invokeSubProcess("vnfAdapterRestV1", businessKey, variables);
350 injectVNFRestCallbacks(callbacks, "rollbackVfModule");
351 waitForProcessEnd(businessKey, 10000);
353 String response = (String) getVariableFromHistory(businessKey, "vnfAdapterRestV1Response");
354 logger.debug("Response:\n{}", response);
355 assertTrue(response.contains("<rollbackVfModuleResponse>"));
356 assertTrue((boolean) getVariableFromHistory(businessKey, "VNFREST_SuccessIndicator"));
363 public void testCreateVfModuleException() throws Exception {
366 mockVNFPost(wireMockServer, "", 202, "vnfId");
368 String requestId = "dffbae0e-5588-4bd6-9749-b0f0adb52312";
369 String messageId = requestId + "-" + System.currentTimeMillis();
370 String request = CREATE_VF_MODULE_REQUEST.replace("{{MESSAGE-ID}}", messageId);
372 String businessKey = UUID.randomUUID().toString();
373 Map<String, Object> variables = new HashMap<>();
374 variables.put("mso-request-id", requestId);
375 variables.put("isDebugLogEnabled", "true");
376 variables.put("vnfAdapterRestV1Request", request);
378 invokeSubProcess("vnfAdapterRestV1", businessKey, variables);
379 injectVNFRestCallbacks(callbacks, "vfModuleException");
380 waitForProcessEnd(businessKey, 10000);
382 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
384 logger.debug(wfe.toString());
386 String response = (String) getVariableFromHistory(businessKey, "WorkflowResponse");
387 logger.debug("Response:\n{}", response);
388 assertTrue(response.contains("<vfModuleException>"));
389 assertFalse((boolean) getVariableFromHistory(businessKey, "VNFREST_SuccessIndicator"));