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