Catalog-be dead code removal
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / lifecycle / CertificationRequestTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2017 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.openecomp.sdc.be.components.lifecycle;
22
23 import fj.data.Either;
24 import org.apache.http.HttpStatus;
25 import org.junit.Before;
26 import org.junit.Test;
27 import org.junit.runner.RunWith;
28 import org.mockito.Mock;
29 import org.mockito.Mockito;
30 import org.mockito.junit.MockitoJUnitRunner;
31 import org.openecomp.sdc.be.components.distribution.engine.ServiceDistributionArtifactsBuilder;
32 import org.openecomp.sdc.be.components.impl.ServiceBusinessLogic;
33 import org.openecomp.sdc.be.dao.api.ActionStatus;
34 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
35 import org.openecomp.sdc.be.model.ArtifactDefinition;
36 import org.openecomp.sdc.be.model.Component;
37 import org.openecomp.sdc.be.model.ComponentInstance;
38 import org.openecomp.sdc.be.model.LifecycleStateEnum;
39 import org.openecomp.sdc.be.model.Operation;
40 import org.openecomp.sdc.be.model.Resource;
41 import org.openecomp.sdc.be.model.Service;
42 import org.openecomp.sdc.be.model.User;
43 import org.openecomp.sdc.be.model.jsontitan.datamodel.ToscaElement;
44 import org.openecomp.sdc.be.model.jsontitan.utils.ModelConverter;
45 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
46 import org.openecomp.sdc.be.model.operations.impl.CapabilityOperation;
47 import org.openecomp.sdc.be.tosca.ToscaExportHandler;
48 import org.openecomp.sdc.be.user.Role;
49 import org.openecomp.sdc.exception.ResponseFormat;
50
51 import java.util.ArrayList;
52 import java.util.List;
53
54 import static org.junit.Assert.assertEquals;
55 import static org.junit.Assert.assertTrue;
56 import static org.mockito.Mockito.when;
57
58 @RunWith(MockitoJUnitRunner.Silent.class)
59 public class CertificationRequestTest extends LifecycleTestBase {
60
61     @Mock
62     private ServiceDistributionArtifactsBuilder serviceDistributionArtifactsBuilder;
63     @Mock
64     private ServiceBusinessLogic serviceBusinessLogic;
65     @Mock
66     private CapabilityOperation capabilityOperation;
67     @Mock
68     private ToscaExportHandler toscaExportUtils;
69
70     private CertificationRequestTransition rfcObj;
71
72
73     @Before
74     public void setup() {
75         super.setup();
76         rfcObj = new CertificationRequestTransition(componentsUtils, toscaElementLifecycleOperation, serviceDistributionArtifactsBuilder, serviceBusinessLogic, capabilityOperation, toscaExportUtils,  toscaOperationFacade,  titanDao);
77         rfcObj.setConfigurationManager(configurationManager);
78     }
79
80     @Test
81     public void testVFCMTStateValidation(){
82         Either<? extends Component, ResponseFormat> changeStateResult;
83         Resource resource = createResourceVFCMTObject();
84
85         resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
86         Either<User, ResponseFormat> ownerResponse = rfcObj.getComponentOwner(resource, ComponentTypeEnum.RESOURCE);
87         assertTrue(ownerResponse.isLeft());
88         User owner = ownerResponse.left().value();
89
90         User user = new User();
91         user.setUserId("cs0008");
92         user.setFirstName("Carlos");
93         user.setLastName("Santana");
94         user.setRole(Role.TESTER.name());
95
96         changeStateResult = rfcObj.changeState(ComponentTypeEnum.RESOURCE, resource, serviceBusinessLogic, user, owner, false, false);
97         assertEquals(changeStateResult.isLeft(), true);
98     }
99
100     @Test
101     public void testCheckoutStateValidation() {
102         Either<? extends Component, ResponseFormat> changeStateResult;
103         Resource resource = createResourceObject();
104
105         resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
106         Either<User, ResponseFormat> ownerResponse = rfcObj.getComponentOwner(resource, ComponentTypeEnum.RESOURCE);
107         assertTrue(ownerResponse.isLeft());
108         User owner = ownerResponse.left().value();
109         changeStateResult = rfcObj.changeState(ComponentTypeEnum.RESOURCE, resource, serviceBusinessLogic, user, owner, false, false);
110         assertEquals(changeStateResult.isLeft(), true);
111
112         resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
113         changeStateResult = rfcObj.changeState(ComponentTypeEnum.RESOURCE, resource, serviceBusinessLogic, user, owner, false, false);
114         assertEquals(changeStateResult.isLeft(), true);
115     }
116
117     @Test
118     public void testAlreadyRfc() {
119         Either<Resource, ResponseFormat> changeStateResult;
120         Resource resource = createResourceObject();
121
122         resource.setLifecycleState(LifecycleStateEnum.READY_FOR_CERTIFICATION);
123         Either<User, ResponseFormat> ownerResponse = rfcObj.getComponentOwner(resource, ComponentTypeEnum.RESOURCE);
124         assertTrue(ownerResponse.isLeft());
125         User owner = ownerResponse.left().value();
126         Either<Boolean, ResponseFormat> validateBeforeTransition = rfcObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.READY_FOR_CERTIFICATION);
127         assertEquals(validateBeforeTransition.isRight(), true);
128         changeStateResult = Either.right(validateBeforeTransition.right().value());
129         assertResponse(changeStateResult, ActionStatus.COMPONENT_SENT_FOR_CERTIFICATION, resource.getName(), ComponentTypeEnum.RESOURCE.name().toLowerCase(), user.getFirstName(), user.getLastName(), user.getUserId());
130
131     }
132
133     @Test
134     public void testCertificationInProgress() {
135         Either<Resource, ResponseFormat> changeStateResult;
136         Resource resource = createResourceObject();
137
138         resource.setLifecycleState(LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
139         Either<User, ResponseFormat> ownerResponse = rfcObj.getComponentOwner(resource, ComponentTypeEnum.RESOURCE);
140         assertTrue(ownerResponse.isLeft());
141         User owner = ownerResponse.left().value();
142         Either<Boolean, ResponseFormat> validateBeforeTransition = rfcObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
143         assertEquals(validateBeforeTransition.isRight(), true);
144         changeStateResult = Either.right(validateBeforeTransition.right().value());
145         assertResponse(changeStateResult, ActionStatus.COMPONENT_IN_CERT_IN_PROGRESS_STATE, resource.getName(), ComponentTypeEnum.RESOURCE.name().toLowerCase(), user.getFirstName(), user.getLastName(), user.getUserId());
146
147     }
148
149     @Test
150     public void testAlreadyCertified() {
151         Either<Resource, ResponseFormat> changeStateResult;
152         Resource resource = createResourceObject();
153
154         resource.setLifecycleState(LifecycleStateEnum.CERTIFIED);
155         Either<User, ResponseFormat> ownerResponse = rfcObj.getComponentOwner(resource, ComponentTypeEnum.RESOURCE);
156         assertTrue(ownerResponse.isLeft());
157         User owner = ownerResponse.left().value();
158         Either<Boolean, ResponseFormat> validateBeforeTransition = rfcObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.CERTIFIED);
159         assertEquals(validateBeforeTransition.isRight(), true);
160         changeStateResult = Either.right(validateBeforeTransition.right().value());
161         assertResponse(changeStateResult, ActionStatus.COMPONENT_ALREADY_CERTIFIED, resource.getName(), ComponentTypeEnum.RESOURCE.name().toLowerCase(), user.getFirstName(), user.getLastName(), user.getUserId());
162
163     }
164
165     @Test
166     public void testValidateAllResourceInstanceCertified_SuccessWithoutRI() {
167         Resource resource = new Resource();
168         Either<Boolean, ResponseFormat> validateAllResourceInstanceCertified = rfcObj.validateAllResourceInstanceCertified(resource);
169         assertTrue(validateAllResourceInstanceCertified.isLeft());
170     }
171
172     @Test
173     public void testValidateAllResourceInstanceCertified_SuccessWithCertifiedResources() {
174         Resource resource = new Resource();
175         List<ComponentInstance> riList = new ArrayList<ComponentInstance>();
176         ComponentInstance ri = new ComponentInstance();
177         ri.setComponentVersion("2.0");
178         riList.add(ri);
179         resource.setComponentInstances(riList);
180
181         Either<Boolean, ResponseFormat> validateAllResourceInstanceCertified = rfcObj.validateAllResourceInstanceCertified(resource);
182         assertTrue(validateAllResourceInstanceCertified.isLeft());
183     }
184
185     @Test
186     public void testValidateAllResourceInstanceCertified_FailWithUnCertifiedResourcesMinorVersion() {
187         Resource resource = createVFWithRI("0.3");
188
189         simulateCertifiedVersionExistForRI();
190
191         Either<Boolean, ResponseFormat> validateAllResourceInstanceCertified = rfcObj.validateAllResourceInstanceCertified(resource);
192
193         assertTrue(validateAllResourceInstanceCertified.isRight());
194         ResponseFormat responseFormat = validateAllResourceInstanceCertified.right().value();
195         assertTrue(responseFormat.getStatus() == HttpStatus.SC_FORBIDDEN);
196         assertTrue(responseFormat.getMessageId().equals("SVC4559"));
197
198     }
199
200     @Test
201     public void testValidateAllResourceInstanceCertified_FailWithUnCertifiedResourcesMajorVersion() {
202         Resource resource = createVFWithRI("1.3");
203
204         simulateCertifiedVersionExistForRI();
205
206         Either<Boolean, ResponseFormat> validateAllResourceInstanceCertified = rfcObj.validateAllResourceInstanceCertified(resource);
207
208         assertTrue(validateAllResourceInstanceCertified.isRight());
209         ResponseFormat responseFormat = validateAllResourceInstanceCertified.right().value();
210         assertTrue(responseFormat.getStatus() == HttpStatus.SC_FORBIDDEN);
211         assertTrue(responseFormat.getMessageId().equals("SVC4559"));
212
213     }
214
215     @Test
216     public void testDeploymentArtifactRestriction() {
217         Either<? extends Component, ResponseFormat> changeStateResult;
218         Service service = createServiceObject();
219         service.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
220
221         Either<User, ResponseFormat> ownerResponse = rfcObj.getComponentOwner(service, ComponentTypeEnum.SERVICE);
222         assertTrue(ownerResponse.isLeft());
223         User owner = ownerResponse.left().value();
224
225         Either<Service, ResponseFormat> result = Either.left(service);
226         Either<ToscaElement, StorageOperationStatus> reqCertRes = Either.left(ModelConverter.convertToToscaElement(service));
227         Either<Either<ArtifactDefinition, Operation>, ResponseFormat> resultArtifacts = Either.left(Either.left(new ArtifactDefinition()));
228         when(serviceBusinessLogic.generateHeatEnvArtifacts(service, owner, false, true)).thenReturn(result);
229         when(serviceBusinessLogic.generateVfModuleArtifacts(service, owner, false, true)).thenReturn(result);
230         when(serviceBusinessLogic.populateToscaArtifacts(service, owner, true, false, false)).thenReturn(resultArtifacts);
231         when(toscaElementLifecycleOperation.requestCertificationToscaElement(Mockito.anyString(), Mockito.anyString(), Mockito.anyString())).thenReturn(reqCertRes);
232         changeStateResult = rfcObj.changeState(ComponentTypeEnum.SERVICE, service, serviceBusinessLogic, user, owner, false, true);
233         assertEquals(changeStateResult.isLeft(), true);
234     }
235
236     private void simulateCertifiedVersionExistForRI() {
237         Component dummyResource = new Resource();
238         Either<Component, StorageOperationStatus> result = Either.left(dummyResource);
239         Mockito.when(toscaOperationFacade.getToscaElement(Mockito.anyString())).thenReturn(Either.left(dummyResource));
240         Mockito.when(toscaOperationFacade.findLastCertifiedToscaElementByUUID(Mockito.any(Component.class))).thenReturn(result);
241     }
242
243     private Resource createVFWithRI(String riVersion) {
244         Resource resource = new Resource();
245         List<ComponentInstance> riList = new ArrayList<ComponentInstance>();
246         ComponentInstance ri = new ComponentInstance();
247
248         ri.setComponentVersion(riVersion);
249         ri.setComponentUid("someUniqueId");
250         riList.add(ri);
251         resource.setComponentInstances(riList);
252         return resource;
253     }
254
255 }