b371e3a48a046688447ade5273734081e320eaba
[so.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 - 2018 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.bpmn.infrastructure.workflow.tasks;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.mockito.ArgumentMatchers.any;
25 import static org.mockito.ArgumentMatchers.eq;
26 import static org.mockito.Mockito.doReturn;
27 import static org.mockito.Mockito.doThrow;
28 import static org.mockito.Mockito.when;
29 import java.util.ArrayList;
30 import java.util.HashMap;
31 import java.util.List;
32 import org.camunda.bpm.engine.delegate.BpmnError;
33 import org.junit.Before;
34 import org.junit.Ignore;
35 import org.junit.Test;
36 import org.mockito.ArgumentMatchers;
37 import org.mockito.InjectMocks;
38 import org.onap.so.bpmn.BaseTaskTest;
39 import org.onap.so.bpmn.common.BuildingBlockExecution;
40 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
41 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
42 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
43 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
44 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoGenericVnf;
45 import org.onap.so.db.catalog.beans.BuildingBlockDetail;
46 import org.onap.so.db.catalog.beans.OrchestrationAction;
47 import org.onap.so.db.catalog.beans.OrchestrationStatus;
48 import org.onap.so.db.catalog.beans.OrchestrationStatusStateTransitionDirective;
49 import org.onap.so.db.catalog.beans.OrchestrationStatusValidationDirective;
50 import org.onap.so.db.catalog.beans.ResourceType;
51 import org.springframework.beans.factory.annotation.Autowired;
52
53 @Ignore
54 public class OrchestrationStatusValidatorTest extends BaseTaskTest {
55     @InjectMocks
56     protected OrchestrationStatusValidator orchestrationStatusValidator = new OrchestrationStatusValidator();
57
58
59
60     @Test
61     public void test_validateOrchestrationStatus() throws Exception {
62         String flowToBeCalled = "AssignServiceInstanceBB";
63         setServiceInstance().setOrchestrationStatus(OrchestrationStatus.PRECREATED);
64         execution.setVariable("aLaCarte", true);
65         execution.setVariable("flowToBeCalled", flowToBeCalled);
66
67         BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
68         buildingBlockDetail.setBuildingBlockName("AssignServiceInstanceBB");
69         buildingBlockDetail.setId(1);
70         buildingBlockDetail.setResourceType(ResourceType.SERVICE);
71         buildingBlockDetail.setTargetAction(OrchestrationAction.ASSIGN);
72
73         doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
74
75         OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
76                 new OrchestrationStatusStateTransitionDirective();
77         orchestrationStatusStateTransitionDirective.setFlowDirective(OrchestrationStatusValidationDirective.CONTINUE);
78         orchestrationStatusStateTransitionDirective.setId(1);
79         orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
80         orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.SERVICE);
81         orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.ASSIGN);
82
83         doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
84                 .getOrchestrationStatusStateTransitionDirective(ResourceType.SERVICE, OrchestrationStatus.PRECREATED,
85                         OrchestrationAction.ASSIGN);
86
87         orchestrationStatusValidator.validateOrchestrationStatus(execution);
88
89         assertEquals(OrchestrationStatusValidationDirective.CONTINUE,
90                 execution.getVariable("orchestrationStatusValidationResult"));
91     }
92
93     @Test
94     public void test_validateOrchestrationStatusConfiguration() throws Exception {
95         lookupKeyMap.put(ResourceKey.CONFIGURATION_ID, "configurationId");
96         String flowToBeCalled = "UnassignFabricConfigurationBB";
97         ServiceInstance si = setServiceInstance();
98         List<Configuration> configurations = new ArrayList<>();
99         Configuration config = new Configuration();
100
101         si.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
102         config.setConfigurationId("configurationId");
103         config.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
104         configurations.add(config);
105         si.setConfigurations(configurations);
106
107         execution.setVariable("flowToBeCalled", flowToBeCalled);
108         execution.setVariable("aLaCarte", true);
109
110         BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
111         buildingBlockDetail.setBuildingBlockName("UnassignFabricConfigurationBB");
112         buildingBlockDetail.setId(1);
113         buildingBlockDetail.setResourceType(ResourceType.CONFIGURATION);
114         buildingBlockDetail.setTargetAction(OrchestrationAction.UNASSIGN);
115
116         doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
117
118         OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
119                 new OrchestrationStatusStateTransitionDirective();
120         orchestrationStatusStateTransitionDirective
121                 .setFlowDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS);
122         orchestrationStatusStateTransitionDirective.setId(1);
123         orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
124         orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.CONFIGURATION);
125         orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.UNASSIGN);
126
127         doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
128                 .getOrchestrationStatusStateTransitionDirective(ResourceType.CONFIGURATION,
129                         OrchestrationStatus.PRECREATED, OrchestrationAction.UNASSIGN);
130
131         orchestrationStatusValidator.validateOrchestrationStatus(execution);
132
133         assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
134                 execution.getVariable("orchestrationStatusValidationResult"));
135     }
136
137     @Test
138     public void test_validateOrchestrationStatus_buildingBlockDetailNotFound() throws Exception {
139         expectedException.expect(BpmnError.class);
140
141         String flowToBeCalled = "AssignServiceInstanceBB";
142
143         execution.setVariable("flowToBeCalled", flowToBeCalled);
144
145         doReturn(null).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
146
147         orchestrationStatusValidator.validateOrchestrationStatus(execution);
148     }
149
150     @Test
151     public void test_validateOrchestrationStatus_orchestrationValidationFail() throws Exception {
152         expectedException.expect(BpmnError.class);
153
154         String flowToBeCalled = "AssignServiceInstanceBB";
155
156         execution.setVariable("flowToBeCalled", flowToBeCalled);
157
158         BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
159         buildingBlockDetail.setBuildingBlockName("AssignServiceInstanceBB");
160         buildingBlockDetail.setId(1);
161         buildingBlockDetail.setResourceType(ResourceType.SERVICE);
162         buildingBlockDetail.setTargetAction(OrchestrationAction.ASSIGN);
163
164         doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
165
166         OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
167                 new OrchestrationStatusStateTransitionDirective();
168         orchestrationStatusStateTransitionDirective.setFlowDirective(OrchestrationStatusValidationDirective.FAIL);
169         orchestrationStatusStateTransitionDirective.setId(1);
170         orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
171         orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.SERVICE);
172         orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.ASSIGN);
173
174         doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
175                 .getOrchestrationStatusStateTransitionDirective(ResourceType.SERVICE, OrchestrationStatus.PRECREATED,
176                         OrchestrationAction.ASSIGN);
177
178         orchestrationStatusValidator.validateOrchestrationStatus(execution);
179     }
180
181     @Test
182     public void test_validateOrchestrationStatus_orchestrationValidationNotFound() throws Exception {
183         expectedException.expect(BpmnError.class);
184
185         String flowToBeCalled = "AssignServiceInstanceBB";
186
187         execution.setVariable("flowToBeCalled", flowToBeCalled);
188
189         BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
190         buildingBlockDetail.setBuildingBlockName("AssignServiceInstanceBB");
191         buildingBlockDetail.setId(1);
192         buildingBlockDetail.setResourceType(ResourceType.SERVICE);
193         buildingBlockDetail.setTargetAction(OrchestrationAction.ASSIGN);
194
195         doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
196
197         OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
198                 new OrchestrationStatusStateTransitionDirective();
199         orchestrationStatusStateTransitionDirective.setFlowDirective(OrchestrationStatusValidationDirective.FAIL);
200         orchestrationStatusStateTransitionDirective.setId(1);
201         orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
202         orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.SERVICE);
203         orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.ASSIGN);
204
205         doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
206                 .getOrchestrationStatusStateTransitionDirective(ResourceType.NETWORK, OrchestrationStatus.PRECREATED,
207                         OrchestrationAction.ASSIGN);
208
209         orchestrationStatusValidator.validateOrchestrationStatus(execution);
210     }
211
212     @Test
213     public void test_validateOrchestrationStatus_unassignNotFound() throws Exception {
214         String flowToBeCalled = "UnassignServiceInstanceBB";
215
216         execution.setVariable("flowToBeCalled", flowToBeCalled);
217         execution.setVariable("aLaCarte", true);
218
219         BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
220         buildingBlockDetail.setBuildingBlockName("UnassignServiceInstanceBB");
221         buildingBlockDetail.setId(1);
222         buildingBlockDetail.setResourceType(ResourceType.SERVICE);
223         buildingBlockDetail.setTargetAction(OrchestrationAction.UNASSIGN);
224
225         doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
226
227         lookupKeyMap = new HashMap<ResourceKey, String>();
228
229         orchestrationStatusValidator.validateOrchestrationStatus(execution);
230
231         assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
232                 execution.getVariable("orchestrationStatusValidationResult"));
233     }
234
235     @Test
236     public void test_validateOrchestrationStatusSecondStageOfMultiStageEnabledVfModule() throws Exception {
237         String flowToBeCalled = "CreateVfModuleBB";
238
239         execution.setVariable("orchestrationStatusValidationResult",
240                 OrchestrationStatusValidationDirective.SILENT_SUCCESS);
241         execution.setVariable("aLaCarte", true);
242         execution.setVariable("flowToBeCalled", flowToBeCalled);
243
244         GenericVnf genericVnf = buildGenericVnf();
245         ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
246         modelInfoGenericVnf.setMultiStageDesign("true");
247         setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
248         setVfModule().setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
249
250         BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
251         buildingBlockDetail.setBuildingBlockName("CreateVfModuleBB");
252         buildingBlockDetail.setId(1);
253         buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
254         buildingBlockDetail.setTargetAction(OrchestrationAction.CREATE);
255
256         doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
257
258         OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
259                 new OrchestrationStatusStateTransitionDirective();
260         orchestrationStatusStateTransitionDirective.setFlowDirective(OrchestrationStatusValidationDirective.FAIL);
261         orchestrationStatusStateTransitionDirective.setId(1);
262         orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
263         orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.VF_MODULE);
264         orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.CREATE);
265
266         doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
267                 .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
268                         OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.CREATE);
269
270         orchestrationStatusValidator.validateOrchestrationStatus(execution);
271
272         assertEquals(OrchestrationStatusValidationDirective.CONTINUE,
273                 execution.getVariable("orchestrationStatusValidationResult"));
274     }
275
276
277     @Test
278     public void test_validateOrchestrationStatusSecondStageOfMultiStageWrongPrevStatusVfModule() throws Exception {
279         String flowToBeCalled = "CreateVfModuleBB";
280
281         execution.setVariable("orchestrationStatusValidationResult", OrchestrationStatusValidationDirective.CONTINUE);
282         execution.setVariable("aLaCarte", true);
283         execution.setVariable("flowToBeCalled", flowToBeCalled);
284
285         GenericVnf genericVnf = buildGenericVnf();
286         ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
287         modelInfoGenericVnf.setMultiStageDesign("true");
288         setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
289         setVfModule().setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
290
291         BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
292         buildingBlockDetail.setBuildingBlockName("CreateVfModuleBB");
293         buildingBlockDetail.setId(1);
294         buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
295         buildingBlockDetail.setTargetAction(OrchestrationAction.CREATE);
296
297         doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
298
299         OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
300                 new OrchestrationStatusStateTransitionDirective();
301         orchestrationStatusStateTransitionDirective
302                 .setFlowDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS);
303         orchestrationStatusStateTransitionDirective.setId(1);
304         orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
305         orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.VF_MODULE);
306         orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.CREATE);
307
308         doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
309                 .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
310                         OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.CREATE);
311
312         orchestrationStatusValidator.validateOrchestrationStatus(execution);
313
314         assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
315                 execution.getVariable("orchestrationStatusValidationResult"));
316     }
317
318     @Test
319     public void test_validateOrchestrationStatusSecondStageOfMultiStageDisabledVfModule() throws Exception {
320         String flowToBeCalled = "CreateVfModuleBB";
321
322         execution.setVariable("orchestrationStatusValidationResult",
323                 OrchestrationStatusValidationDirective.SILENT_SUCCESS);
324         execution.setVariable("aLaCarte", true);
325         execution.setVariable("flowToBeCalled", flowToBeCalled);
326
327         GenericVnf genericVnf = buildGenericVnf();
328         ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
329         modelInfoGenericVnf.setMultiStageDesign("false");
330         setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
331         setVfModule().setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
332
333         BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
334         buildingBlockDetail.setBuildingBlockName("CreateVfModuleBB");
335         buildingBlockDetail.setId(1);
336         buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
337         buildingBlockDetail.setTargetAction(OrchestrationAction.CREATE);
338
339         doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
340
341         OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
342                 new OrchestrationStatusStateTransitionDirective();
343         orchestrationStatusStateTransitionDirective
344                 .setFlowDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS);
345         orchestrationStatusStateTransitionDirective.setId(1);
346         orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
347         orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.VF_MODULE);
348         orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.CREATE);
349
350         doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
351                 .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
352                         OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.CREATE);
353
354         orchestrationStatusValidator.validateOrchestrationStatus(execution);
355
356         assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
357                 execution.getVariable("orchestrationStatusValidationResult"));
358     }
359
360     @Test
361     public void test_validateOrchestrationStatusSecondStageOfMultiStageWrongOrchStatusVfModule() throws Exception {
362         String flowToBeCalled = "CreateVfModuleBB";
363
364         execution.setVariable("orchestrationStatusValidationResult",
365                 OrchestrationStatusValidationDirective.SILENT_SUCCESS);
366         execution.setVariable("aLaCarte", true);
367         execution.setVariable("flowToBeCalled", flowToBeCalled);
368
369         GenericVnf genericVnf = buildGenericVnf();
370         ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
371         modelInfoGenericVnf.setMultiStageDesign("true");
372         setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
373         setVfModule().setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
374
375         BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
376         buildingBlockDetail.setBuildingBlockName("CreateVfModuleBB");
377         buildingBlockDetail.setId(1);
378         buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
379         buildingBlockDetail.setTargetAction(OrchestrationAction.CREATE);
380
381         doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
382
383         OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
384                 new OrchestrationStatusStateTransitionDirective();
385         orchestrationStatusStateTransitionDirective
386                 .setFlowDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS);
387         orchestrationStatusStateTransitionDirective.setId(1);
388         orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
389         orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.VF_MODULE);
390         orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.CREATE);
391
392         doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
393                 .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE, OrchestrationStatus.ASSIGNED,
394                         OrchestrationAction.CREATE);
395
396         orchestrationStatusValidator.validateOrchestrationStatus(execution);
397
398         assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
399                 execution.getVariable("orchestrationStatusValidationResult"));
400     }
401
402     @Test
403     public void test_validateOrchestrationStatusSecondStageOfMultiStageWrongTargetActionVfModule() throws Exception {
404         String flowToBeCalled = "CreateVfModuleBB";
405
406         execution.setVariable("orchestrationStatusValidationResult",
407                 OrchestrationStatusValidationDirective.SILENT_SUCCESS);
408         execution.setVariable("aLaCarte", true);
409         execution.setVariable("flowToBeCalled", flowToBeCalled);
410
411         GenericVnf genericVnf = buildGenericVnf();
412         ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
413         modelInfoGenericVnf.setMultiStageDesign("true");
414         setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
415         setVfModule().setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
416
417         BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
418         buildingBlockDetail.setBuildingBlockName("CreateVfModuleBB");
419         buildingBlockDetail.setId(1);
420         buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
421         buildingBlockDetail.setTargetAction(OrchestrationAction.ACTIVATE);
422
423         doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
424
425         OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
426                 new OrchestrationStatusStateTransitionDirective();
427         orchestrationStatusStateTransitionDirective
428                 .setFlowDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS);
429         orchestrationStatusStateTransitionDirective.setId(1);
430         orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
431         orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.VF_MODULE);
432         orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.ACTIVATE);
433
434         doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
435                 .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
436                         OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.ACTIVATE);
437
438         orchestrationStatusValidator.validateOrchestrationStatus(execution);
439
440         assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
441                 execution.getVariable("orchestrationStatusValidationResult"));
442     }
443
444     @Test
445     public void test_validateOrchestrationStatusSecondStageOfMultiStageWrongAlacarteValueVfModule() throws Exception {
446         String flowToBeCalled = "CreateVfModuleBB";
447
448         execution.setVariable("orchestrationStatusValidationResult",
449                 OrchestrationStatusValidationDirective.SILENT_SUCCESS);
450         execution.setVariable("aLaCarte", false);
451         execution.setVariable("flowToBeCalled", flowToBeCalled);
452
453         GenericVnf genericVnf = buildGenericVnf();
454         ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
455         modelInfoGenericVnf.setMultiStageDesign("true");
456         setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
457         setVfModule().setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
458
459         BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
460         buildingBlockDetail.setBuildingBlockName("CreateVfModuleBB");
461         buildingBlockDetail.setId(1);
462         buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
463         buildingBlockDetail.setTargetAction(OrchestrationAction.CREATE);
464
465         doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
466
467         OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
468                 new OrchestrationStatusStateTransitionDirective();
469         orchestrationStatusStateTransitionDirective
470                 .setFlowDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS);
471         orchestrationStatusStateTransitionDirective.setId(1);
472         orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
473         orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.VF_MODULE);
474         orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.ACTIVATE);
475
476         doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
477                 .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
478                         OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.CREATE);
479
480         orchestrationStatusValidator.validateOrchestrationStatus(execution);
481
482         assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
483                 execution.getVariable("orchestrationStatusValidationResult"));
484     }
485 }