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