[SDC-29] rebase continue work to align source
[sdc.git] / test-apis-ci / src / main / java / org / openecomp / sdc / ci / tests / execute / resource / ValidateExtendedVfData.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.resource;
22
23 import static org.testng.AssertJUnit.assertNotNull;
24 import static org.testng.AssertJUnit.assertTrue;
25
26 import java.io.IOException;
27 import java.util.List;
28
29 import org.json.simple.JSONArray;
30 import org.json.simple.JSONObject;
31 import org.json.simple.JSONValue;
32 import org.junit.Rule;
33 import org.junit.rules.TestName;
34 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
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.Resource;
39 import org.openecomp.sdc.be.model.User;
40 import org.openecomp.sdc.ci.tests.api.ComponentBaseTest;
41 import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails;
42 import org.openecomp.sdc.ci.tests.datatypes.enums.ArtifactTypeEnum;
43 import org.openecomp.sdc.ci.tests.datatypes.enums.AssocType;
44 import org.openecomp.sdc.ci.tests.datatypes.enums.LifeCycleStatesEnum;
45 import org.openecomp.sdc.ci.tests.datatypes.enums.NormativeTypesEnum;
46 import org.openecomp.sdc.ci.tests.datatypes.enums.ResourceCategoryEnum;
47 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
48 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
49 import org.openecomp.sdc.ci.tests.execute.lifecycle.LCSbaseTest;
50 import org.openecomp.sdc.ci.tests.utils.general.AtomicOperationUtils;
51 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
52 import org.openecomp.sdc.ci.tests.utils.rest.LifecycleRestUtils;
53 import org.openecomp.sdc.ci.tests.utils.rest.ResourceRestUtils;
54 import org.openecomp.sdc.ci.tests.utils.rest.ResponseParser;
55 import org.testng.annotations.BeforeMethod;
56 import org.testng.annotations.Test;
57
58 import fj.data.Either;
59
60 public class ValidateExtendedVfData extends ComponentBaseTest {
61
62         protected Resource resourceDetailsVF;
63         protected Resource resourceDetailsCP_01;
64         protected Resource resourceDetailsVL_01;
65         protected Resource resourceDetailsVFCcomp;
66
67         protected User sdncUserDetails;
68
69         @Rule
70         public static TestName name = new TestName();
71
72         public ValidateExtendedVfData() {
73                 super(name, ValidateExtendedVfData.class.getName());
74         }
75
76         @BeforeMethod
77         public void create() throws Exception {
78
79                 sdncUserDetails = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
80
81                 Either<Resource, RestResponse> resourceDetailsVFe = AtomicOperationUtils
82                                 .createResourceByType(ResourceTypeEnum.VF, UserRoleEnum.DESIGNER, true);
83                 resourceDetailsVF = resourceDetailsVFe.left().value();
84                 Either<Resource, RestResponse> resourceDetailsCP_01e = AtomicOperationUtils
85                                 .createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.CP, NormativeTypesEnum.PORT,
86                                                 ResourceCategoryEnum.GENERIC_DATABASE, UserRoleEnum.DESIGNER, true);
87                 resourceDetailsCP_01 = resourceDetailsCP_01e.left().value();
88                 AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.HEAT, resourceDetailsCP_01, UserRoleEnum.DESIGNER,
89                                 true, true);
90                 AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.HEAT_VOL, resourceDetailsCP_01,
91                                 UserRoleEnum.DESIGNER, true, true);
92                 AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.HEAT_VOL, resourceDetailsCP_01,
93                                 UserRoleEnum.DESIGNER, true, true);
94                 AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.HEAT_NET, resourceDetailsCP_01,
95                                 UserRoleEnum.DESIGNER, true, true);
96                 AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.OTHER, resourceDetailsCP_01, UserRoleEnum.DESIGNER,
97                                 true, true);
98                 AtomicOperationUtils.changeComponentState(resourceDetailsCP_01, UserRoleEnum.DESIGNER,
99                                 LifeCycleStatesEnum.CERTIFY, true);
100                 Either<Resource, RestResponse> resourceDetailsVL_01e = AtomicOperationUtils
101                                 .createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VL, NormativeTypesEnum.NETWORK,
102                                                 ResourceCategoryEnum.GENERIC_NETWORK_ELEMENTS, UserRoleEnum.DESIGNER, true);
103                 resourceDetailsVL_01 = resourceDetailsVL_01e.left().value();
104                 AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.HEAT, resourceDetailsVL_01, UserRoleEnum.DESIGNER,
105                                 true, true);
106                 AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.HEAT_VOL, resourceDetailsVL_01,
107                                 UserRoleEnum.DESIGNER, true, true);
108                 AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.HEAT_VOL, resourceDetailsVL_01,
109                                 UserRoleEnum.DESIGNER, true, true);
110                 AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.HEAT_NET, resourceDetailsVL_01,
111                                 UserRoleEnum.DESIGNER, true, true);
112                 AtomicOperationUtils.uploadArtifactByType(ArtifactTypeEnum.OTHER, resourceDetailsVL_01, UserRoleEnum.DESIGNER,
113                                 true, true);
114                 AtomicOperationUtils.changeComponentState(resourceDetailsVL_01, UserRoleEnum.DESIGNER,
115                                 LifeCycleStatesEnum.CERTIFY, true);
116
117                 Either<Resource, RestResponse> resourceDetailsVFCcompE = AtomicOperationUtils
118                                 .createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.COMPUTE,
119                                                 ResourceCategoryEnum.GENERIC_INFRASTRUCTURE, UserRoleEnum.DESIGNER, true);
120                 resourceDetailsVFCcomp = resourceDetailsVFCcompE.left().value();
121                 AtomicOperationUtils.changeComponentState(resourceDetailsVFCcomp, UserRoleEnum.DESIGNER,
122                                 LifeCycleStatesEnum.CERTIFY, true);
123
124                 ComponentInstance resourceDetailsCP_01ins = AtomicOperationUtils
125                                 .addComponentInstanceToComponentContainer(resourceDetailsCP_01, resourceDetailsVF,
126                                                 UserRoleEnum.DESIGNER, true)
127                                 .left().value();
128                 ComponentInstance resourceDetailsVL_01ins = AtomicOperationUtils
129                                 .addComponentInstanceToComponentContainer(resourceDetailsVL_01, resourceDetailsVF,
130                                                 UserRoleEnum.DESIGNER, true)
131                                 .left().value();
132                 ComponentInstance resourceDetailsVFCcomp_ins = AtomicOperationUtils
133                                 .addComponentInstanceToComponentContainer(resourceDetailsVFCcomp, resourceDetailsVF,
134                                                 UserRoleEnum.DESIGNER, true)
135                                 .left().value();
136
137                 resourceDetailsVF = AtomicOperationUtils.getResourceObject(resourceDetailsVF, UserRoleEnum.DESIGNER);
138                 AtomicOperationUtils.associate2ResourceInstances(resourceDetailsVF, resourceDetailsCP_01ins,
139                                 resourceDetailsVL_01ins, AssocType.LINKABLE.getAssocType(), UserRoleEnum.DESIGNER, true);
140                 AtomicOperationUtils.associate2ResourceInstances(resourceDetailsVF, resourceDetailsCP_01ins,
141                                 resourceDetailsVFCcomp_ins, AssocType.BINDABLE.getAssocType(), UserRoleEnum.DESIGNER, true);
142
143         }
144
145         @Test
146         public void getResourceLatestVersion() throws Exception {
147
148                 RestResponse response = LifecycleRestUtils.changeComponentState(resourceDetailsVF, sdncUserDetails,
149                                 LifeCycleStatesEnum.CHECKIN);
150                 assertTrue("change LC state to CHECKIN, returned status:" + response.getErrorCode(),
151                                 response.getErrorCode() == 200);
152                 // resourceDetailsVF =
153                 // AtomicOperationUtils.getResourceObject(resourceDetailsVF,
154                 // UserRoleEnum.DESIGNER);
155                 RestResponse getResourceLatestVersionResponse = ResourceRestUtils.getResourceLatestVersionList(sdncUserDetails);
156                 assertTrue("response code is not 200, returned :" + getResourceLatestVersionResponse.getErrorCode(),
157                                 getResourceLatestVersionResponse.getErrorCode() == 200);
158
159                 List<Resource> resourceList = ResourceRestUtils
160                                 .restResponseToResourceObjectList(getResourceLatestVersionResponse.getResponse());
161                 Resource resource = ResourceRestUtils.getResourceObjectFromResourceListByUid(resourceList,
162                                 resourceDetailsVF.getUniqueId());
163
164                 callAllCheckMethods(resource);
165         }
166
167         @Test
168         public void getFollowedResources() throws Exception {
169
170                 RestResponse response = LifecycleRestUtils.changeComponentState(resourceDetailsVF, sdncUserDetails,
171                                 LifeCycleStatesEnum.CHECKIN);
172                 assertTrue("change LC state to CHECKIN, returned status:" + response.getErrorCode(),
173                                 response.getErrorCode() == 200);
174                 // resourceDetailsVF =
175                 // AtomicOperationUtils.getResourceObject(resourceDetailsVF,
176                 // UserRoleEnum.DESIGNER);
177                 resourceDetailsVF = AtomicOperationUtils.getResourceObject(resourceDetailsVF, UserRoleEnum.DESIGNER);
178
179                 RestResponse getFollowedResourcesResponse = ResourceRestUtils.getFollowedList(sdncUserDetails);
180                 String json = getFollowedResourcesResponse.getResponse();
181                 JSONObject jsonResp = (JSONObject) JSONValue.parse(json);
182                 JSONArray resources = (JSONArray) jsonResp.get("resources");
183
184                 List<Resource> resourceList = ResourceRestUtils.restResponseToResourceObjectList(resources.toString());
185                 Resource resource = ResourceRestUtils.getResourceObjectFromResourceListByUid(resourceList,
186                                 resourceDetailsVF.getUniqueId());
187                 // TODO if get followed list Api should return full object data?
188                 // callAllCheckMethods(resource);
189         }
190
191         @Test
192         public void lifeCycleChekInRequest() throws Exception {
193
194                 RestResponse response = LifecycleRestUtils.changeComponentState(resourceDetailsVF, sdncUserDetails,
195                                 LifeCycleStatesEnum.CHECKIN);
196                 assertTrue("change LC state to CHECKIN, returned status:" + response.getErrorCode(),
197                                 response.getErrorCode() == 200);
198                 // resourceDetailsVF =
199                 // AtomicOperationUtils.getResourceObject(resourceDetailsVF,
200                 // UserRoleEnum.DESIGNER);
201                 resourceDetailsVF = AtomicOperationUtils.getResourceObject(resourceDetailsVF, UserRoleEnum.DESIGNER);
202
203                 Resource resource = ResponseParser.convertResourceResponseToJavaObject(response.getResponse());
204                 callAllCheckMethods(resource);
205         }
206
207         @Test
208         public void lifeCycleChekOutRequest() throws Exception {
209
210                 RestResponse response = LifecycleRestUtils.changeComponentState(resourceDetailsVF, sdncUserDetails,
211                                 LifeCycleStatesEnum.CHECKIN);
212                 assertTrue("change LC state to CHECKIN, returned status:" + response.getErrorCode(),
213                                 response.getErrorCode() == 200);
214                 response = LifecycleRestUtils.changeComponentState(resourceDetailsVF, sdncUserDetails,
215                                 LifeCycleStatesEnum.CHECKOUT);
216                 assertTrue("change LC state to CHECKOUT, returned status:" + response.getErrorCode(),
217                                 response.getErrorCode() == 200);
218                 resourceDetailsVF = AtomicOperationUtils.getResourceObject(resourceDetailsVF, UserRoleEnum.DESIGNER);
219
220                 Resource resource = ResponseParser.convertResourceResponseToJavaObject(response.getResponse());
221                 callAllCheckMethods(resource);
222         }
223
224         @Test
225         public void lifeCycleRequestForCertification() throws Exception {
226
227                 RestResponse response = LifecycleRestUtils.changeComponentState(resourceDetailsVF, sdncUserDetails,
228                                 LifeCycleStatesEnum.CHECKIN);
229                 assertTrue("change LC state to CHECKIN, returned status:" + response.getErrorCode(),
230                                 response.getErrorCode() == 200);
231                 response = LifecycleRestUtils.changeComponentState(resourceDetailsVF, sdncUserDetails,
232                                 LifeCycleStatesEnum.CERTIFICATIONREQUEST);
233                 assertTrue("change LC state to CERTIFICATIONREQUEST, returned status:" + response.getErrorCode(),
234                                 response.getErrorCode() == 200);
235                 resourceDetailsVF = AtomicOperationUtils.getResourceObject(resourceDetailsVF, UserRoleEnum.DESIGNER);
236
237                 Resource resource = ResponseParser.convertResourceResponseToJavaObject(response.getResponse());
238                 callAllCheckMethods(resource);
239         }
240
241         @Test
242         public void lifeCycleCertificationRequest() throws Exception {
243
244                 RestResponse response = AtomicOperationUtils
245                                 .changeComponentState(resourceDetailsVF, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CERTIFY, false)
246                                 .getRight();
247                 assertTrue("change LC state to CERTIFY, returned status:" + response.getErrorCode(),
248                                 response.getErrorCode() == 200);
249                 resourceDetailsVF = AtomicOperationUtils.getResourceObject(resourceDetailsVF, UserRoleEnum.DESIGNER);
250
251                 Resource resource = ResponseParser.convertResourceResponseToJavaObject(response.getResponse());
252                 callAllCheckMethods(resource);
253         }
254
255         @Test
256         public void checkGetResourceAfterCertificationRequest() throws Exception {
257
258                 RestResponse response = AtomicOperationUtils
259                                 .changeComponentState(resourceDetailsVF, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CERTIFY, false)
260                                 .getRight();
261                 assertTrue("change LC state to CERTIFY, returned status:" + response.getErrorCode(),
262                                 response.getErrorCode() == 200);
263                 resourceDetailsVF = AtomicOperationUtils.getResourceObject(resourceDetailsVF, UserRoleEnum.DESIGNER);
264
265                 callAllCheckMethods(resourceDetailsVF);
266         }
267
268         @Test
269         public void updateResourceMetadata() throws Exception {
270
271                 resourceDetailsVF.setDescription("stamStam");
272                 ResourceReqDetails resourceDetailsVFreqD = new ResourceReqDetails(resourceDetailsVF);
273                 RestResponse updateResourceResponse = ResourceRestUtils.updateResourceMetadata(resourceDetailsVFreqD,
274                                 sdncUserDetails, resourceDetailsVF.getUniqueId());
275                 assertTrue("response code is not 200, returned :" + updateResourceResponse.getErrorCode(),
276                                 updateResourceResponse.getErrorCode() == 200);
277
278                 Resource resource = ResponseParser.convertResourceResponseToJavaObject(updateResourceResponse.getResponse());
279
280                 callAllCheckMethods(resource);
281         }
282
283         private void checkResourceInstances(Resource resource) {
284                 assertNotNull("resource component Instances list is null ", resource.getComponentInstances());
285                 assertTrue("resource component Instances list is empty ", !resource.getComponentInstances().equals(""));
286         }
287
288         private void checkResourceInstancesProperties(Resource resource) {
289                 assertNotNull("component Instances properies list is null ", resource.getComponentInstancesProperties());
290                 assertTrue("component Instances properies list is empty ",
291                                 !resource.getComponentInstancesProperties().equals(""));
292         }
293
294         private void checkResourceInstancesRelations(Resource resource) {
295                 assertNotNull("component Instances Relations list is null ", resource.getComponentInstancesRelations());
296                 assertTrue("component Instances Relations list is empty ",
297                                 !resource.getComponentInstancesRelations().equals(""));
298         }
299
300         private void checkResourceCapabilities(Resource resource) {
301                 assertNotNull("component Instances Capabilities list is null ", resource.getCapabilities());
302                 assertTrue("component Instances Capabilities list is empty ", !resource.getCapabilities().equals(""));
303         }
304
305         private void checkResourceRequirements(Resource resource) {
306                 assertNotNull("component Instances Requirements list is null ", resource.getRequirements());
307                 assertTrue("component Instances Requirements list is empty ", !resource.getRequirements().equals(""));
308         }
309
310         private void callAllCheckMethods(Resource resource) {
311
312                 checkResourceInstances(resource);
313                 checkResourceInstancesProperties(resource);
314                 checkResourceInstancesRelations(resource);
315                 checkResourceCapabilities(resource);
316                 checkResourceRequirements(resource);
317         }
318
319 }