Refactor SOL003 Adapter to organize its modules
[so.git] / bpmn / so-bpmn-tasks / src / test / java / org / onap / so / bpmn / infrastructure / adapter / vnfm / tasks / MonitorVnfmCreateJobTaskTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2019 Nordix Foundation.
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertFalse;
25 import static org.junit.Assert.assertNotNull;
26 import static org.junit.Assert.assertTrue;
27 import static org.mockito.ArgumentMatchers.any;
28 import static org.mockito.ArgumentMatchers.anyString;
29 import static org.mockito.ArgumentMatchers.eq;
30 import static org.mockito.Mockito.times;
31 import static org.mockito.Mockito.verify;
32 import static org.mockito.Mockito.when;
33 import java.util.UUID;
34 import org.junit.Test;
35 import org.mockito.Mock;
36 import org.mockito.Mockito;
37 import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.CreateVnfResponse;
38 import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.OperationStateEnum;
39 import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.OperationStatusRetrievalStatusEnum;
40 import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.QueryJobResponse;
41 import org.onap.so.bpmn.BaseTaskTest;
42 import org.onap.so.bpmn.common.BuildingBlockExecution;
43 import com.google.common.base.Optional;
44
45 /**
46  * 
47  * @author Lathishbabu Ganesan (lathishbabu.ganesan@est.tech)
48  *
49  */
50 public class MonitorVnfmCreateJobTaskTest extends BaseTaskTest {
51
52     private static final String JOB_ID = UUID.randomUUID().toString();
53
54     @Mock
55     private VnfmAdapterServiceProvider mockedVnfmAdapterServiceProvider;
56
57     private final BuildingBlockExecution stubbedxecution = new StubbedBuildingBlockExecution();
58
59     @Test
60     public void testGetCurrentOperationStatus() throws Exception {
61         final MonitorVnfmCreateJobTask objUnderTest = getEtsiVnfMonitorJobTask();
62         stubbedxecution.setVariable(Constants.CREATE_VNF_RESPONSE_PARAM_NAME, getCreateVnfResponse());
63         Optional<QueryJobResponse> queryJobResponse = getQueryJobResponse();
64         queryJobResponse.get().setOperationStatusRetrievalStatus(OperationStatusRetrievalStatusEnum.STATUS_FOUND);
65         queryJobResponse.get().setOperationState(OperationStateEnum.COMPLETED);
66         when(mockedVnfmAdapterServiceProvider.getInstantiateOperationJobStatus(JOB_ID)).thenReturn(queryJobResponse);
67         objUnderTest.getCurrentOperationStatus(stubbedxecution);
68         final Optional<OperationStateEnum> operationState =
69                 stubbedxecution.getVariable(Constants.OPERATION_STATUS_PARAM_NAME);
70         assertNotNull(operationState);
71         assertEquals(OperationStateEnum.COMPLETED, operationState.get());
72     }
73
74     @Test
75     public void testGetCurrentOperationStatusFailed() throws Exception {
76         final MonitorVnfmCreateJobTask objUnderTest = getEtsiVnfMonitorJobTask();
77         stubbedxecution.setVariable(Constants.CREATE_VNF_RESPONSE_PARAM_NAME, getCreateVnfResponse());
78         Optional<QueryJobResponse> queryJobResponse = getQueryJobResponse();
79         queryJobResponse.get()
80                 .setOperationStatusRetrievalStatus(OperationStatusRetrievalStatusEnum.CANNOT_RETRIEVE_STATUS);
81         queryJobResponse.get().setOperationState(OperationStateEnum.FAILED);
82         when(mockedVnfmAdapterServiceProvider.getInstantiateOperationJobStatus(JOB_ID)).thenReturn(queryJobResponse);
83         objUnderTest.getCurrentOperationStatus(stubbedxecution);
84         final Optional<OperationStateEnum> operationState =
85                 stubbedxecution.getVariable(Constants.OPERATION_STATUS_PARAM_NAME);
86         assertNotNull(operationState);
87         assertEquals(OperationStateEnum.FAILED, operationState.get());
88     }
89
90     @Test
91     public void testGetCurrentOperationStatusEmpty() throws Exception {
92         final MonitorVnfmCreateJobTask objUnderTest = getEtsiVnfMonitorJobTask();
93         stubbedxecution.setVariable(Constants.CREATE_VNF_RESPONSE_PARAM_NAME, getCreateVnfResponse());
94         Optional<QueryJobResponse> queryJobResponse = getQueryJobResponse();
95         queryJobResponse.get().setOperationStatusRetrievalStatus(OperationStatusRetrievalStatusEnum.STATUS_FOUND);
96         when(mockedVnfmAdapterServiceProvider.getInstantiateOperationJobStatus(JOB_ID)).thenReturn(queryJobResponse);
97         objUnderTest.getCurrentOperationStatus(stubbedxecution);
98         final Optional<OperationStateEnum> operationState =
99                 stubbedxecution.getVariable(Constants.OPERATION_STATUS_PARAM_NAME);
100         assertFalse(operationState.isPresent());
101     }
102
103     @Test
104     public void testGetCurrentOperationStatusException() throws Exception {
105         final MonitorVnfmCreateJobTask objUnderTest = getEtsiVnfMonitorJobTask();
106         stubbedxecution.setVariable(Constants.CREATE_VNF_RESPONSE_PARAM_NAME, getCreateVnfResponse());
107         Optional<QueryJobResponse> queryJobResponse = getQueryJobResponse();
108         queryJobResponse.get().setOperationStatusRetrievalStatus(OperationStatusRetrievalStatusEnum.STATUS_FOUND);
109         when(mockedVnfmAdapterServiceProvider.getInstantiateOperationJobStatus(JOB_ID)).thenReturn(queryJobResponse);
110         objUnderTest.getCurrentOperationStatus(stubbedxecution);
111         final Optional<OperationStateEnum> operationState =
112                 stubbedxecution.getVariable(Constants.OPERATION_STATUS_PARAM_NAME);
113         assertFalse(operationState.isPresent());
114     }
115
116     @Test
117     public void testHasOperationFinished() throws Exception {
118         final MonitorVnfmCreateJobTask objUnderTest = getEtsiVnfMonitorJobTask();
119         stubbedxecution.setVariable(Constants.OPERATION_STATUS_PARAM_NAME, Optional.of(OperationStateEnum.COMPLETED));
120         assertTrue(objUnderTest.hasOperationFinished(stubbedxecution));
121     }
122
123     @Test
124     public void testHasOperationPending() throws Exception {
125         final MonitorVnfmCreateJobTask objUnderTest = getEtsiVnfMonitorJobTask();
126         stubbedxecution.setVariable(Constants.OPERATION_STATUS_PARAM_NAME, Optional.absent());
127         assertFalse(objUnderTest.hasOperationFinished(stubbedxecution));
128     }
129
130     @Test
131     public void testTimeOutLogFailue() throws Exception {
132         final MonitorVnfmCreateJobTask objUnderTest = getEtsiVnfMonitorJobTask();
133         objUnderTest.timeOutLogFailue(stubbedxecution);
134         verify(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(1205),
135                 eq("Instantiation operation time out"));
136     }
137
138     @Test
139     public void testCheckIfOperationWasSuccessful() throws Exception {
140         stubbedxecution.setVariable(Constants.OPERATION_STATUS_PARAM_NAME, Optional.of(OperationStateEnum.COMPLETED));
141         MonitorVnfmCreateJobTask objUnderTest = Mockito.spy(getEtsiVnfMonitorJobTask());
142         objUnderTest.checkIfOperationWasSuccessful(stubbedxecution);
143         verify(objUnderTest, times(1)).checkIfOperationWasSuccessful(stubbedxecution);
144     }
145
146     @Test
147     public void testCheckIfOperationWasSuccessfulWithPending() throws Exception {
148         final MonitorVnfmCreateJobTask objUnderTest = getEtsiVnfMonitorJobTask();
149         stubbedxecution.setVariable(Constants.OPERATION_STATUS_PARAM_NAME, Optional.of(OperationStateEnum.PROCESSING));
150         objUnderTest.checkIfOperationWasSuccessful(stubbedxecution);
151         verify(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(1207), anyString());
152     }
153
154     @Test
155     public void testCheckIfOperationWasSuccessfulEmpty() throws Exception {
156         MonitorVnfmCreateJobTask objUnderTest = getEtsiVnfMonitorJobTask();
157         stubbedxecution.setVariable(Constants.CREATE_VNF_RESPONSE_PARAM_NAME, getCreateVnfResponse());
158         stubbedxecution.setVariable(Constants.OPERATION_STATUS_PARAM_NAME, Optional.absent());
159         objUnderTest.checkIfOperationWasSuccessful(stubbedxecution);
160         verify(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(1206), anyString());
161     }
162
163     private CreateVnfResponse getCreateVnfResponse() {
164         final CreateVnfResponse response = new CreateVnfResponse();
165         response.setJobId(JOB_ID);
166         return response;
167     }
168
169     private Optional<QueryJobResponse> getQueryJobResponse() {
170         final QueryJobResponse queryJobResponse = new QueryJobResponse();
171         queryJobResponse.setId(JOB_ID);
172         return Optional.of(queryJobResponse);
173     }
174
175     private MonitorVnfmCreateJobTask getEtsiVnfMonitorJobTask() {
176         return new MonitorVnfmCreateJobTask(mockedVnfmAdapterServiceProvider, exceptionUtil);
177     }
178
179 }