2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.openecomp.sdc.ci.tests.execute.externalapi;
23 import java.io.IOException;
24 import java.util.Arrays;
25 import java.util.HashMap;
26 import java.util.List;
29 import org.codehaus.jettison.json.JSONException;
30 import org.junit.Rule;
31 import org.junit.rules.TestName;
32 import org.openecomp.sdc.be.dao.api.ActionStatus;
33 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
34 import org.openecomp.sdc.be.model.User;
35 import org.openecomp.sdc.ci.tests.api.ComponentBaseTest;
36 import org.openecomp.sdc.ci.tests.datatypes.ResourceAssetStructure;
37 import org.openecomp.sdc.ci.tests.datatypes.ResourceExternalReqDetails;
38 import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails;
39 import org.openecomp.sdc.ci.tests.datatypes.ServiceAssetStructure;
40 import org.openecomp.sdc.ci.tests.datatypes.ServiceReqDetails;
41 import org.openecomp.sdc.ci.tests.datatypes.enums.LifeCycleStatesEnum;
42 import org.openecomp.sdc.ci.tests.datatypes.enums.ResourceCategoryEnum;
43 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
44 import org.openecomp.sdc.ci.tests.datatypes.expected.ExpectedResourceAuditJavaObject;
45 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
46 import org.openecomp.sdc.ci.tests.utils.DbUtils;
47 import org.openecomp.sdc.ci.tests.utils.general.AtomicOperationUtils;
48 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
49 import org.openecomp.sdc.ci.tests.utils.rest.BaseRestUtils;
50 import org.openecomp.sdc.ci.tests.utils.rest.LifecycleRestUtils;
51 import org.openecomp.sdc.ci.tests.utils.rest.ResourceRestUtils;
52 import org.openecomp.sdc.ci.tests.utils.rest.ResourceRestUtilsExternalAPI;
53 import org.openecomp.sdc.ci.tests.utils.rest.ServiceRestUtils;
54 import org.openecomp.sdc.ci.tests.utils.validation.AuditValidationUtils;
55 import org.openecomp.sdc.ci.tests.utils.validation.ErrorValidationUtils;
56 import org.openecomp.sdc.common.datastructure.AuditingFieldsKeysEnum;
57 import org.testng.Assert;
58 import org.testng.AssertJUnit;
59 import org.testng.annotations.BeforeMethod;
60 import org.testng.annotations.Test;
62 import com.google.gson.Gson;
64 public class LifeCycleExternalAPI extends ComponentBaseTest{
66 public static final TestName name = new TestName();
67 protected Gson gson = new Gson();
69 public LifeCycleExternalAPI() {
70 super(name, LifeCycleExternalAPI.class.getName());
75 AtomicOperationUtils.createDefaultConsumer(true);
79 public void testReseourceSuccsesfullTransition() throws Exception{
80 ResourceReqDetails resourceDetails = ElementFactory.getDefaultResource();
81 resourceDetails.setName("ciResource1");
82 resourceDetails.setResourceType(ResourceTypeEnum.VF.name());
83 User defaultUser = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
84 RestResponse createResource = ResourceRestUtils.createResource(resourceDetails,
86 ResourceAssetStructure parsedCreatedResponse = gson.fromJson(createResource.getResponse(), ResourceAssetStructure.class);
87 BaseRestUtils.checkCreateResponse(createResource);
90 testResourceTransitionOfLifeCycle(parsedCreatedResponse,defaultUser,
91 LifeCycleStatesEnum.CHECKIN,null);
92 //testAudit(defaultUser,parsedCreatedResponse,"0.1",LifeCycleStatesEnum.CHECKOUT.name(),"201","OK");
94 //CERTIFICATIONREQUEST
95 testResourceTransitionOfLifeCycle(parsedCreatedResponse,defaultUser,
96 LifeCycleStatesEnum.CERTIFICATIONREQUEST,null);
98 //CERTIFICATIONREQUEST
99 testResourceTransitionOfLifeCycle(parsedCreatedResponse,ElementFactory.getDefaultUser(UserRoleEnum.TESTER),
100 LifeCycleStatesEnum.STARTCERTIFICATION,null);
102 //CERTIFICATIONREQUEST
103 testResourceTransitionOfLifeCycle(parsedCreatedResponse,ElementFactory.getDefaultUser(UserRoleEnum.TESTER),
104 LifeCycleStatesEnum.CERTIFY,"1.0");
108 public void testVFCMTSuccsesfullTransitionDesigner() throws Exception{
109 User defaultUser = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
110 ResourceExternalReqDetails resourceDetails = ElementFactory.getDefaultResourceByType("ci1", ResourceCategoryEnum.TEMPLATE_MONITORING_TEMPLATE, defaultUser.getUserId(), ResourceTypeEnum.VFCMT.toString());
112 RestResponse restResponse = ResourceRestUtilsExternalAPI.createResource(resourceDetails, defaultUser);
113 ResourceAssetStructure parsedCreatedResponse = gson.fromJson(restResponse.getResponse(), ResourceAssetStructure.class);
115 BaseRestUtils.checkCreateResponse(restResponse);
118 testResourceTransitionOfLifeCycle(parsedCreatedResponse,ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER),
119 LifeCycleStatesEnum.CHECKIN,null);
121 //CERTIFICATIONREQUEST
122 testResourceTransitionOfLifeCycle(parsedCreatedResponse,ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER),
123 LifeCycleStatesEnum.CERTIFY,"1.0");
127 public void testVFCMTSuccsesfullTransitionTester() throws Exception{
128 User defaultUser = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
129 ResourceExternalReqDetails resourceDetails = ElementFactory.getDefaultResourceByType("ci1", ResourceCategoryEnum.TEMPLATE_MONITORING_TEMPLATE, defaultUser.getUserId(), ResourceTypeEnum.VFCMT.toString());
131 RestResponse restResponse = ResourceRestUtilsExternalAPI.createResource(resourceDetails, defaultUser);
132 ResourceAssetStructure parsedCreatedResponse = gson.fromJson(restResponse.getResponse(), ResourceAssetStructure.class);
134 BaseRestUtils.checkCreateResponse(restResponse);
137 testResourceTransitionOfLifeCycle(parsedCreatedResponse,ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER),
138 LifeCycleStatesEnum.CHECKIN,null);
140 //CERTIFICATIONREQUEST
141 testResourceTransitionOfLifeCycle(parsedCreatedResponse,ElementFactory.getDefaultUser(UserRoleEnum.TESTER),
142 LifeCycleStatesEnum.CERTIFY,"1.0");
146 public void testVFCMTFailSubmitForTesting() throws Exception{
147 User defaultUser = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
148 ResourceExternalReqDetails resourceDetails = ElementFactory.getDefaultResourceByType("ci1", ResourceCategoryEnum.TEMPLATE_MONITORING_TEMPLATE, defaultUser.getUserId(), ResourceTypeEnum.VFCMT.toString());
150 RestResponse restResponse = ResourceRestUtilsExternalAPI.createResource(resourceDetails, defaultUser);
151 ResourceAssetStructure parsedCreatedResponse = gson.fromJson(restResponse.getResponse(), ResourceAssetStructure.class);
153 BaseRestUtils.checkCreateResponse(restResponse);
156 testResourceTransitionOfLifeCycle(parsedCreatedResponse,ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER),
157 LifeCycleStatesEnum.CHECKIN,null);
159 //CERTIFICATIONREQUEST
160 testFailResourceTransitionOfLifeCycle(parsedCreatedResponse,ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER),
161 LifeCycleStatesEnum.CERTIFICATIONREQUEST,400,ActionStatus.RESOURCE_VFCMT_LIFECYCLE_STATE_NOT_VALID.name(),Arrays.asList(LifeCycleStatesEnum.CERTIFICATIONREQUEST.getState()));
163 //CERTIFICATIONREQUEST
164 testFailResourceTransitionOfLifeCycle(parsedCreatedResponse,ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER),
165 LifeCycleStatesEnum.STARTCERTIFICATION,400,ActionStatus.RESOURCE_VFCMT_LIFECYCLE_STATE_NOT_VALID.name(),Arrays.asList(LifeCycleStatesEnum.STARTCERTIFICATION.getState()));
169 public void testServiceSuccsesfullTransition() throws Exception{
170 ServiceReqDetails serviceDetails = ElementFactory.getDefaultService();
171 serviceDetails.setName("ciService1");
172 RestResponse createService = ServiceRestUtils.createService(serviceDetails,
173 ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER));
174 ServiceAssetStructure parsedCreatedService = gson.fromJson(createService.getResponse(), ServiceAssetStructure.class);
175 BaseRestUtils.checkCreateResponse(createService);
178 testServiceTransitionOfLifeCycle(serviceDetails, parsedCreatedService,ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER),
179 LifeCycleStatesEnum.CHECKIN,null);
181 //CERTIFICATIONREQUEST
182 testServiceTransitionOfLifeCycle(serviceDetails, parsedCreatedService,ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER),
183 LifeCycleStatesEnum.CERTIFICATIONREQUEST,null);
185 //CERTIFICATIONREQUEST
186 testServiceTransitionOfLifeCycle(serviceDetails, parsedCreatedService,ElementFactory.getDefaultUser(UserRoleEnum.TESTER),
187 LifeCycleStatesEnum.STARTCERTIFICATION,null);
189 //CERTIFICATIONREQUEST
190 testServiceTransitionOfLifeCycle(serviceDetails, parsedCreatedService,ElementFactory.getDefaultUser(UserRoleEnum.TESTER),
191 LifeCycleStatesEnum.CERTIFY,"1.0");
194 private void testFailResourceTransitionOfLifeCycle(ResourceAssetStructure parsedCreatedResponse, User user,
195 LifeCycleStatesEnum lifeCycleStatesEnum,int errorCode, String error,List<String> variables) throws IOException, JSONException {
196 RestResponse response = LifecycleRestUtils.changeExternalResourceState(parsedCreatedResponse.getUuid(),user, lifeCycleStatesEnum);
197 AssertJUnit.assertNotNull("check response object is not null", response);
198 AssertJUnit.assertNotNull("check error code exists in response", response.getErrorCode());
199 AssertJUnit.assertEquals("Check response code is succses", errorCode, response.getErrorCode().intValue());
201 ErrorValidationUtils.checkBodyResponseOnError(error, variables,response.getResponse());
204 private void testResourceTransitionOfLifeCycle(ResourceAssetStructure parsedCreatedResponse, User user,
205 LifeCycleStatesEnum lifeCycleStatesEnum,String version) throws IOException {
206 RestResponse response = LifecycleRestUtils.changeExternalResourceState(parsedCreatedResponse.getUuid(),user, lifeCycleStatesEnum);
207 AssertJUnit.assertNotNull("check response object is not null", response);
208 AssertJUnit.assertNotNull("check error code exists in response", response.getErrorCode());
209 AssertJUnit.assertEquals("Check response code is succses", 201, response.getErrorCode().intValue());
210 ResourceAssetStructure parsedMetadata = gson.fromJson(response.getResponse(), ResourceAssetStructure.class);
212 Assert.assertEquals(parsedMetadata.getUuid(),parsedCreatedResponse.getUuid());
213 Assert.assertEquals(parsedMetadata.getInvariantUUID(),parsedCreatedResponse.getInvariantUUID());
214 Assert.assertEquals(parsedMetadata.getName(),parsedCreatedResponse.getName());
216 Assert.assertEquals(parsedMetadata.getVersion(),parsedCreatedResponse.getVersion());
218 Assert.assertEquals(parsedMetadata.getVersion(),version);
220 Assert.assertEquals(parsedMetadata.getResourceType(),parsedCreatedResponse.getResourceType());
221 Assert.assertEquals(parsedMetadata.getLifecycleState(),lifeCycleStatesEnum.getComponentState());
222 Assert.assertEquals(parsedMetadata.getLastUpdaterUserId(),user.getUserId());
223 Assert.assertEquals(parsedMetadata.getLastUpdaterFullName(),user.getFullName());
226 private void testServiceTransitionOfLifeCycle(ServiceReqDetails resourceDetails,
227 ServiceAssetStructure parsedCreatedResponse, User user, LifeCycleStatesEnum lifeCycleStatesEnum,String version) throws IOException {
228 RestResponse response = LifecycleRestUtils.changeExternalServiceState(resourceDetails,user, lifeCycleStatesEnum);
229 AssertJUnit.assertNotNull("check response object is not null", response);
230 AssertJUnit.assertNotNull("check error code exists in response", response.getErrorCode());
231 AssertJUnit.assertEquals("Check response code is succses", 201, response.getErrorCode().intValue());
232 ServiceAssetStructure parsedMetadata = gson.fromJson(response.getResponse(), ServiceAssetStructure.class);
234 Assert.assertEquals(parsedMetadata.getUuid(),parsedCreatedResponse.getUuid());
235 Assert.assertEquals(parsedMetadata.getInvariantUUID(),parsedCreatedResponse.getInvariantUUID());
236 Assert.assertEquals(parsedMetadata.getName(),parsedCreatedResponse.getName());
238 Assert.assertEquals(parsedMetadata.getVersion(),parsedCreatedResponse.getVersion());
240 Assert.assertEquals(parsedMetadata.getVersion(),version);
242 Assert.assertEquals(parsedMetadata.getLifecycleState(),lifeCycleStatesEnum.getComponentState());
243 Assert.assertEquals(parsedMetadata.getLastUpdaterUserId(),user.getUserId());
246 private void testAudit(User modifier,ResourceAssetStructure resource,String prevVersion,String prevLifecycle,
247 String errorCode, String error) throws Exception{
248 DbUtils.cleanAllAudits();
250 //ErrorInfo errorInfo = ErrorValidationUtils.parseErrorConfigYaml(currResource.getActionStatus().name());
251 ExpectedResourceAuditJavaObject expectedResourceAuditJavaObject = new ExpectedResourceAuditJavaObject();
252 String auditAction = "ChangeLyfecycleByAPI";
253 expectedResourceAuditJavaObject.setAction(auditAction);
254 expectedResourceAuditJavaObject.setModifierUid(modifier.getUserId());
255 expectedResourceAuditJavaObject.setModifierName(modifier.getFullName());
256 expectedResourceAuditJavaObject.setResourceName(resource.getName());
257 expectedResourceAuditJavaObject.setResourceType("Resource");
258 expectedResourceAuditJavaObject.setPrevVersion(prevVersion);
259 expectedResourceAuditJavaObject.setCurrVersion(resource.getVersion());
260 expectedResourceAuditJavaObject.setPrevState(prevLifecycle);
261 expectedResourceAuditJavaObject.setCurrState(resource.getLifecycleState());
262 expectedResourceAuditJavaObject.setStatus(errorCode);
263 // List<String> variables = (currResource.getErrorParams() != null ? currResource.getErrorParams() : new ArrayList<String>());
264 // String auditDesc = AuditValidationUtils.buildAuditDescription(errorInfo, variables);
265 expectedResourceAuditJavaObject.setDesc(error);
266 Map <AuditingFieldsKeysEnum, String> body = new HashMap<>();
267 body.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_NAME, resource.getName());
268 AuditValidationUtils.validateAuditExternalChangeLifecycle(expectedResourceAuditJavaObject, auditAction,body);