Fix for radio buttons
[sdc.git] / asdc-tests / src / main / java / org / openecomp / sdc / ci / tests / execute / externalapi / LifeCycleExternalAPI.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.ci.tests.execute.externalapi;
22
23 import java.io.IOException;
24 import java.util.Arrays;
25 import java.util.HashMap;
26 import java.util.List;
27 import java.util.Map;
28
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;
61
62 import com.google.gson.Gson;
63
64 public class LifeCycleExternalAPI extends ComponentBaseTest{
65         @Rule
66         public static final TestName name = new TestName();
67         protected Gson gson = new Gson();
68         
69         public LifeCycleExternalAPI() {
70                 super(name, LifeCycleExternalAPI.class.getName());
71         }
72         
73         @BeforeMethod
74         public void setup() {
75                 AtomicOperationUtils.createDefaultConsumer(true);               
76         }
77         
78         @Test
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,
85                                 defaultUser);
86                 ResourceAssetStructure parsedCreatedResponse  = gson.fromJson(createResource.getResponse(), ResourceAssetStructure.class);
87                 BaseRestUtils.checkCreateResponse(createResource);
88                         
89                 //CHECKIN
90                 testResourceTransitionOfLifeCycle(parsedCreatedResponse,defaultUser, 
91                                 LifeCycleStatesEnum.CHECKIN,null);
92                 //testAudit(defaultUser,parsedCreatedResponse,"0.1",LifeCycleStatesEnum.CHECKOUT.name(),"201","OK");
93                 
94                 //CERTIFICATIONREQUEST
95                 testResourceTransitionOfLifeCycle(parsedCreatedResponse,defaultUser, 
96                                 LifeCycleStatesEnum.CERTIFICATIONREQUEST,null); 
97                 
98                 //CERTIFICATIONREQUEST
99                 testResourceTransitionOfLifeCycle(parsedCreatedResponse,ElementFactory.getDefaultUser(UserRoleEnum.TESTER), 
100                                 LifeCycleStatesEnum.STARTCERTIFICATION,null);   
101                 
102                 //CERTIFICATIONREQUEST
103                 testResourceTransitionOfLifeCycle(parsedCreatedResponse,ElementFactory.getDefaultUser(UserRoleEnum.TESTER), 
104                                 LifeCycleStatesEnum.CERTIFY,"1.0");                             
105         }
106         
107         @Test
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());
111                 
112                 RestResponse restResponse = ResourceRestUtilsExternalAPI.createResource(resourceDetails, defaultUser);
113                 ResourceAssetStructure parsedCreatedResponse = gson.fromJson(restResponse.getResponse(), ResourceAssetStructure.class);
114                 
115                 BaseRestUtils.checkCreateResponse(restResponse);
116                         
117                 //CHECKIN
118                 testResourceTransitionOfLifeCycle(parsedCreatedResponse,ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER), 
119                                 LifeCycleStatesEnum.CHECKIN,null);      
120                 
121                 //CERTIFICATIONREQUEST
122                 testResourceTransitionOfLifeCycle(parsedCreatedResponse,ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER), 
123                                 LifeCycleStatesEnum.CERTIFY,"1.0");     
124         }
125         
126         @Test
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());
130                 
131                 RestResponse restResponse = ResourceRestUtilsExternalAPI.createResource(resourceDetails, defaultUser);
132                 ResourceAssetStructure parsedCreatedResponse = gson.fromJson(restResponse.getResponse(), ResourceAssetStructure.class);
133                 
134                 BaseRestUtils.checkCreateResponse(restResponse);
135                         
136                 //CHECKIN
137                 testResourceTransitionOfLifeCycle(parsedCreatedResponse,ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER), 
138                                 LifeCycleStatesEnum.CHECKIN,null);      
139                 
140                 //CERTIFICATIONREQUEST
141                 testResourceTransitionOfLifeCycle(parsedCreatedResponse,ElementFactory.getDefaultUser(UserRoleEnum.TESTER), 
142                                 LifeCycleStatesEnum.CERTIFY,"1.0");     
143         }
144         
145         @Test
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());
149                 
150                 RestResponse restResponse = ResourceRestUtilsExternalAPI.createResource(resourceDetails, defaultUser);
151                 ResourceAssetStructure parsedCreatedResponse = gson.fromJson(restResponse.getResponse(), ResourceAssetStructure.class);
152                 
153                 BaseRestUtils.checkCreateResponse(restResponse);
154                         
155                 //CHECKIN
156                 testResourceTransitionOfLifeCycle(parsedCreatedResponse,ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER), 
157                                 LifeCycleStatesEnum.CHECKIN,null);      
158                 
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()));  
162                 
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()));
166         }
167         
168         //@Test
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);
176                         
177                 //CHECKIN
178                 testServiceTransitionOfLifeCycle(serviceDetails, parsedCreatedService,ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER), 
179                                 LifeCycleStatesEnum.CHECKIN,null);      
180                 
181                 //CERTIFICATIONREQUEST
182                 testServiceTransitionOfLifeCycle(serviceDetails, parsedCreatedService,ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER), 
183                                 LifeCycleStatesEnum.CERTIFICATIONREQUEST,null); 
184                 
185                 //CERTIFICATIONREQUEST
186                 testServiceTransitionOfLifeCycle(serviceDetails, parsedCreatedService,ElementFactory.getDefaultUser(UserRoleEnum.TESTER), 
187                                 LifeCycleStatesEnum.STARTCERTIFICATION,null);   
188                 
189                 //CERTIFICATIONREQUEST
190                 testServiceTransitionOfLifeCycle(serviceDetails, parsedCreatedService,ElementFactory.getDefaultUser(UserRoleEnum.TESTER), 
191                                 LifeCycleStatesEnum.CERTIFY,"1.0");     
192         }
193         
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());
200                 
201                 ErrorValidationUtils.checkBodyResponseOnError(error, variables,response.getResponse());
202         }               
203
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);
211                 
212                 Assert.assertEquals(parsedMetadata.getUuid(),parsedCreatedResponse.getUuid());
213                 Assert.assertEquals(parsedMetadata.getInvariantUUID(),parsedCreatedResponse.getInvariantUUID());
214                 Assert.assertEquals(parsedMetadata.getName(),parsedCreatedResponse.getName());
215                 if (version==null){
216                         Assert.assertEquals(parsedMetadata.getVersion(),parsedCreatedResponse.getVersion());
217                 } else {
218                         Assert.assertEquals(parsedMetadata.getVersion(),version);
219                 }
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());
224         }               
225         
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);
233                 
234                 Assert.assertEquals(parsedMetadata.getUuid(),parsedCreatedResponse.getUuid());
235                 Assert.assertEquals(parsedMetadata.getInvariantUUID(),parsedCreatedResponse.getInvariantUUID());
236                 Assert.assertEquals(parsedMetadata.getName(),parsedCreatedResponse.getName());
237                 if (version==null){
238                         Assert.assertEquals(parsedMetadata.getVersion(),parsedCreatedResponse.getVersion());
239                 } else {
240                         Assert.assertEquals(parsedMetadata.getVersion(),version);
241                 }
242                 Assert.assertEquals(parsedMetadata.getLifecycleState(),lifeCycleStatesEnum.getComponentState());
243                 Assert.assertEquals(parsedMetadata.getLastUpdaterUserId(),user.getUserId());            
244         }               
245         
246         private void testAudit(User modifier,ResourceAssetStructure resource,String prevVersion,String prevLifecycle,
247                         String errorCode, String error) throws Exception{
248                 DbUtils.cleanAllAudits();
249                 
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);
269         }
270 }