b0b07d8cd7a739576cdedecd611cd1d629d6b5a6
[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.Mockito.doReturn;
25
26 import java.util.ArrayList;
27 import java.util.List;
28
29 import org.camunda.bpm.engine.delegate.BpmnError;
30 import org.junit.Test;
31 import org.onap.so.bpmn.BaseTaskTest;
32 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
33 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
34 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
35 import org.onap.so.db.catalog.beans.BuildingBlockDetail;
36 import org.onap.so.db.catalog.beans.OrchestrationAction;
37 import org.onap.so.db.catalog.beans.OrchestrationStatus;
38 import org.onap.so.db.catalog.beans.OrchestrationStatusStateTransitionDirective;
39 import org.onap.so.db.catalog.beans.OrchestrationStatusValidationDirective;
40 import org.onap.so.db.catalog.beans.ResourceType;
41 import org.springframework.beans.factory.annotation.Autowired;
42
43 public class OrchestrationStatusValidatorTest extends BaseTaskTest {
44         @Autowired
45         protected OrchestrationStatusValidator orchestrationStatusValidator;
46         
47         @Test
48         public void test_validateOrchestrationStatus() throws Exception {
49                 String flowToBeCalled = "AssignServiceInstanceBB";
50                 setServiceInstance().setOrchestrationStatus(OrchestrationStatus.PRECREATED);
51                 
52                 execution.setVariable("flowToBeCalled", flowToBeCalled);
53                 
54                 BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
55                 buildingBlockDetail.setBuildingBlockName("AssignServiceInstanceBB");
56                 buildingBlockDetail.setId(1);
57                 buildingBlockDetail.setResourceType(ResourceType.SERVICE);
58                 buildingBlockDetail.setTargetAction(OrchestrationAction.ASSIGN);
59                 
60                 doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
61                 
62                 OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective = new OrchestrationStatusStateTransitionDirective();
63                 orchestrationStatusStateTransitionDirective.setFlowDirective(OrchestrationStatusValidationDirective.CONTINUE);
64                 orchestrationStatusStateTransitionDirective.setId(1);
65                 orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
66                 orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.SERVICE);
67                 orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.ASSIGN);
68                 
69                 doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient).getOrchestrationStatusStateTransitionDirective(ResourceType.SERVICE, OrchestrationStatus.PRECREATED, OrchestrationAction.ASSIGN);
70                 
71                 orchestrationStatusValidator.validateOrchestrationStatus(execution);
72                 
73                 assertEquals(OrchestrationStatusValidationDirective.CONTINUE, execution.getVariable("orchestrationStatusValidationResult"));
74         }
75         
76         @Test
77         public void test_validateOrchestrationStatusConfiguration() throws Exception {
78                 lookupKeyMap.put(ResourceKey.CONFIGURATION_ID, "configurationId");
79                 String flowToBeCalled = "UnassignFabricConfigurationBB";  
80                 ServiceInstance si = setServiceInstance();
81                 List<Configuration> configurations = new ArrayList<>();
82                 Configuration config = new Configuration();
83                 
84                 si.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
85                 config.setConfigurationId("configurationId");
86                 config.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
87                 configurations.add(config);
88                 si.setConfigurations(configurations);
89                 
90                 execution.setVariable("flowToBeCalled", flowToBeCalled);
91                 
92                 BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
93                 buildingBlockDetail.setBuildingBlockName("UnassignFabricConfigurationBB");
94                 buildingBlockDetail.setId(1);
95                 buildingBlockDetail.setResourceType(ResourceType.CONFIGURATION);
96                 buildingBlockDetail.setTargetAction(OrchestrationAction.UNASSIGN);
97                 
98                 doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
99                 
100                 OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective = new OrchestrationStatusStateTransitionDirective();
101                 orchestrationStatusStateTransitionDirective.setFlowDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS);
102                 orchestrationStatusStateTransitionDirective.setId(1);
103                 orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
104                 orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.CONFIGURATION);
105                 orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.UNASSIGN);
106                 
107                 doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient).getOrchestrationStatusStateTransitionDirective(ResourceType.CONFIGURATION, OrchestrationStatus.PRECREATED, OrchestrationAction.UNASSIGN);
108                 
109                 orchestrationStatusValidator.validateOrchestrationStatus(execution);
110                 
111                 assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS, execution.getVariable("orchestrationStatusValidationResult"));
112         }
113         
114         @Test
115         public void test_validateOrchestrationStatus_buildingBlockDetailNotFound() throws Exception {
116                 expectedException.expect(BpmnError.class);
117                 
118                 String flowToBeCalled = "AssignServiceInstanceBB";
119                 
120                 execution.setVariable("flowToBeCalled", flowToBeCalled);
121                 
122                 doReturn(null).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
123                 
124                 orchestrationStatusValidator.validateOrchestrationStatus(execution);
125         }
126         
127         @Test
128         public void test_validateOrchestrationStatus_orchestrationValidationFail() throws Exception {
129                 expectedException.expect(BpmnError.class);
130                 
131                 String flowToBeCalled = "AssignServiceInstanceBB";
132                 
133                 execution.setVariable("flowToBeCalled", flowToBeCalled);
134                 
135                 BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
136                 buildingBlockDetail.setBuildingBlockName("AssignServiceInstanceBB");
137                 buildingBlockDetail.setId(1);
138                 buildingBlockDetail.setResourceType(ResourceType.SERVICE);
139                 buildingBlockDetail.setTargetAction(OrchestrationAction.ASSIGN);
140                 
141                 doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
142                 
143                 OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective = new OrchestrationStatusStateTransitionDirective();
144                 orchestrationStatusStateTransitionDirective.setFlowDirective(OrchestrationStatusValidationDirective.FAIL);
145                 orchestrationStatusStateTransitionDirective.setId(1);
146                 orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
147                 orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.SERVICE);
148                 orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.ASSIGN);
149                 
150                 doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient).getOrchestrationStatusStateTransitionDirective(ResourceType.SERVICE, OrchestrationStatus.PRECREATED, OrchestrationAction.ASSIGN);
151                 
152                 orchestrationStatusValidator.validateOrchestrationStatus(execution);
153         }
154         
155         @Test
156         public void test_validateOrchestrationStatus_orchestrationValidationNotFound() throws Exception {
157                 expectedException.expect(BpmnError.class);
158                 
159                 String flowToBeCalled = "AssignServiceInstanceBB";
160                 
161                 execution.setVariable("flowToBeCalled", flowToBeCalled);
162                 
163                 BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
164                 buildingBlockDetail.setBuildingBlockName("AssignServiceInstanceBB");
165                 buildingBlockDetail.setId(1);
166                 buildingBlockDetail.setResourceType(ResourceType.SERVICE);
167                 buildingBlockDetail.setTargetAction(OrchestrationAction.ASSIGN);
168                 
169                 doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
170                 
171                 OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective = new OrchestrationStatusStateTransitionDirective();
172                 orchestrationStatusStateTransitionDirective.setFlowDirective(OrchestrationStatusValidationDirective.FAIL);
173                 orchestrationStatusStateTransitionDirective.setId(1);
174                 orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
175                 orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.SERVICE);
176                 orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.ASSIGN);
177                 
178                 doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient).getOrchestrationStatusStateTransitionDirective(ResourceType.NETWORK, OrchestrationStatus.PRECREATED, OrchestrationAction.ASSIGN);
179                 
180                 orchestrationStatusValidator.validateOrchestrationStatus(execution);
181         }
182 }