re base code
[sdc.git] / ui-ci / src / main / java / org / openecomp / sdc / ci / tests / execute / sanity / PropertiesAssignmentUpdateFlow.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.sanity;
22
23 import com.aventstack.extentreports.Status;
24 import fj.data.Either;
25 import org.apache.commons.lang3.StringUtils;
26 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
27 import org.openecomp.sdc.be.model.ComponentInstance;
28 import org.openecomp.sdc.be.model.Resource;
29 import org.openecomp.sdc.be.model.User;
30 import org.openecomp.sdc.ci.tests.datatypes.*;
31 import org.openecomp.sdc.ci.tests.datatypes.enums.LifeCycleStatesEnum;
32 import org.openecomp.sdc.ci.tests.datatypes.enums.NormativeTypesEnum;
33 import org.openecomp.sdc.ci.tests.datatypes.enums.ResourceCategoryEnum;
34 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
35 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
36 import org.openecomp.sdc.ci.tests.execute.setup.SetupCDTest;
37 import org.openecomp.sdc.ci.tests.pages.*;
38 import org.openecomp.sdc.ci.tests.utilities.CatalogUIUtilitis;
39 import org.openecomp.sdc.ci.tests.utilities.FileHandling;
40 import org.openecomp.sdc.ci.tests.utilities.GeneralUIUtils;
41 import org.openecomp.sdc.ci.tests.utilities.ResourceUIUtils;
42 import org.openecomp.sdc.ci.tests.utils.general.*;
43 import org.openecomp.sdc.ci.tests.verificator.PropertiesAssignmentVerificator;
44 import org.openecomp.sdc.ci.tests.verificator.VfVerificator;
45 import org.testng.annotations.BeforeClass;
46 import org.testng.annotations.BeforeMethod;
47 import org.testng.annotations.DataProvider;
48 import org.testng.annotations.Test;
49
50 import java.util.List;
51
52 import static org.testng.Assert.assertTrue;
53
54 //import com.sun.xml.internal.bind.v2.TODO;
55
56
57 public class PropertiesAssignmentUpdateFlow extends SetupCDTest {
58
59     private static String filePath;
60     private static String origFile = "virc_fe_be.csar";
61     private static String origFile1 = "virc.csar";
62     protected User sdncDesignerDetails = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
63
64
65     @BeforeClass
66     public void beforeClass(){
67         filePath = FileHandling.getFilePath("");
68     }
69
70     @BeforeMethod
71     public void beforeTest(){
72         System.out.println("File repository is : " + filePath);
73 //        SetupCDTest.getExtendTest().log(Status.INFO, "File repository is : " + filePath);
74     }
75
76     @DataProvider(name = "assetFilesInputs", parallel = false)
77     public Object[][] createDataInputs() {
78         return new Object[][] {
79                 {"editInputValueTopChange.csar", ""},
80                 {"editInputValueNoTopChange.csar", "Updated-SRE-Mgt"}};
81     }
82
83     /**
84      * Topoplogy change in updated file - designer changes in inputs values are not kept after update
85      * No topoplogy change in updated file - designer changes in inputs values are kept after update
86      * @param updFileName - csar for update
87      * @param validationValue - expected property value after update
88      * @throws Exception
89      */
90     @Test(dataProvider = "assetFilesInputs")
91     public void updateInputDefaultValueTest(String updFileName, String validationValue) throws Exception {
92         setLog(updFileName);
93
94         String origTestFile = origFile;
95         String componentName = "abstract_virc_fe_be_0";
96         String inputName = "management_net_name";
97         String inputUpdValue = "Updated-SRE-Mgt";
98
99         //Import csar
100         ResourceReqDetails resourceMetaData = ElementFactory.getDefaultResourceByType("ciRes", NormativeTypesEnum.ROOT,
101                 ResourceCategoryEnum.APPLICATION_L4_DATABASE, getUser().getUserId(), ResourceTypeEnum.VF.toString());
102         resourceMetaData.setVersion("0.1");
103         ResourceUIUtils.importVfFromCsar(resourceMetaData, filePath, origTestFile, getUser());
104
105         //Edit Input value
106         ResourceGeneralPage.getLeftMenu().moveToPropertiesAssignmentScreen();
107         PropertiesAssignmentPage.clickOnComponentInComposition(componentName);
108         PropertiesAssignmentPage.clickOnInputTab();
109         PropertiesAssignmentPage.editPropertyValue(PropertyNameBuilder.buildInputField(inputName), inputUpdValue);
110         PropertiesAssignmentPage.clickOnSaveButton();
111
112         //Certify  VF via API
113         Resource resource = AtomicOperationUtils.getResourceObjectByNameAndVersion(UserRoleEnum.DESIGNER, resourceMetaData.getName(), "0.1");
114         resource = (Resource) AtomicOperationUtils.changeComponentState(resource, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CERTIFY, true).getLeft();
115
116
117         HomePage.navigateToHomePage();
118         CatalogUIUtilitis.clickTopMenuButton(TopMenuButtonsEnum.CATALOG);
119         GeneralUIUtils.findComponentAndClick(resourceMetaData.getName());
120
121         //Update VF
122         ResourceGeneralPage.getLeftMenu().moveToGeneralScreen();
123         GeneralPageElements.clickCheckoutButton();
124         SetupCDTest.getExtendTest().log(Status.INFO, String.format("Updating VF with new file"));
125         ResourceUIUtils.updateVfWithCsar(filePath, updFileName);
126
127         //Validate Input value - 1) empty in case of topology change; 2) user value is kept if no topology change
128         ResourceGeneralPage.getLeftMenu().moveToPropertiesAssignmentScreen();
129         PropertiesAssignmentPage.clickOnComponentInComposition(componentName);
130         PropertiesAssignmentPage.clickOnInputTab();
131         PropertiesAssignmentVerificator.validatePropertyValue(PropertyNameBuilder.buildInputField(inputName),validationValue);
132
133     }
134
135
136     @DataProvider(name = "assetFilesProperties", parallel = false)
137     public Object[][] createDataProp() {
138         return new Object[][] {
139                 {"editedPropValueToEmpty.csar", "value-prop-vm_type_tag", "updated_by_designer"},
140                 {"newPropValueToEmpty.csar", "value-prop-high_availablity", "updated_by_designer"} ,
141                 {"editedPropValueToNew.csar", "value-prop-vm_type_tag", "updated_by_file"} ,
142                 {"editedPropValueToEmptyTopChange.csar", "value-prop-vm_type_tag", ""},
143                 {"newPropValueToEmptyTopChange.csar", "value-prop-high_availablity", ""},
144                 {"editedPropValueToNewTopChange.csar", "value-prop-vm_type_tag", "updated_by_file"}};
145
146     }
147
148     /**
149      * No topoplogy change in updated file - designer changes in properties values are kept after update
150      * OrigFile       Designer       UpdFile       Result After Update
151      * ---------------------------------------------------------------
152      * prop1=value1   prop1=value2   prop1=null    prop1=value2
153      * prop1=null     prop1=value1   prop1=null    prop1=value1
154      * prop1=value1   prop1=value2   prop1=value3  prop1=value3
155      *
156      *
157      * Topoplogy change in updated file - designer changes in properties values are not kept after update
158      * OrigFile       Designer       UpdFile       Result After Update
159      * ---------------------------------------------------------------
160      * prop1=value1   prop1=value2   prop1=null    prop1=null
161      * prop1=null     prop1=value1   prop1=null    prop1=null
162      * prop1=value1   prop1=value2   prop1=value3  prop1=value3
163      *
164      * @param updFileName - csar for update
165      * @param propertyName 
166      * @param validationValue - expected property value after update
167      * @throws Exception
168      */
169     @Test (dataProvider = "assetFilesProperties")
170     public void updatePropertyDefaultValueTest(String updFileName, String propertyName, String validationValue) throws Exception {
171         setLog(updFileName);
172         String origTestFile = origFile;
173         String componentName = "abstract_virc_fe_be_0";
174         String propertyUpdValue = "updated_by_designer";
175
176         //Import csar
177         ResourceReqDetails resourceMetaData = ElementFactory.getDefaultResourceByType("ciRes", NormativeTypesEnum.ROOT,
178                 ResourceCategoryEnum.APPLICATION_L4_DATABASE, getUser().getUserId(), ResourceTypeEnum.VF.toString());
179         resourceMetaData.setVersion("0.1");
180         ResourceUIUtils.importVfFromCsar(resourceMetaData, filePath, origTestFile, getUser());
181
182         //Edit Input value
183         ResourceGeneralPage.getLeftMenu().moveToPropertiesAssignmentScreen();
184         PropertiesAssignmentPage.clickOnComponentInComposition(componentName);
185         PropertiesAssignmentPage.editPropertyValue(propertyName, propertyUpdValue);
186         PropertiesAssignmentPage.clickOnSaveButton();
187
188         //Certify  VF via API
189         Resource resource = AtomicOperationUtils.getResourceObjectByNameAndVersion(UserRoleEnum.DESIGNER, resourceMetaData.getName(), "0.1");
190         resource = (Resource) AtomicOperationUtils.changeComponentState(resource, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CERTIFY, true).getLeft();
191
192
193         HomePage.navigateToHomePage();
194         CatalogUIUtilitis.clickTopMenuButton(TopMenuButtonsEnum.CATALOG);
195         GeneralUIUtils.findComponentAndClick(resourceMetaData.getName());
196
197         //Update VF
198         ResourceGeneralPage.getLeftMenu().moveToGeneralScreen();
199         GeneralPageElements.clickCheckoutButton();
200         SetupCDTest.getExtendTest().log(Status.INFO, String.format("Updating VF with new file"));
201         ResourceUIUtils.updateVfWithCsar(filePath, updFileName);
202
203         //Validate Input value
204         ResourceGeneralPage.getLeftMenu().moveToPropertiesAssignmentScreen();
205         PropertiesAssignmentPage.clickOnComponentInComposition(componentName);
206         PropertiesAssignmentVerificator.validatePropertyValue(propertyName,validationValue);
207     }
208
209
210     @Test
211     public void updatePropertyChangeVfiVersionTest() throws Throwable {
212         String vnfFile = "vIRC_FE_BE.zip";
213         String componentName = "virc_fe_be_volume_0";
214         String propertyName = "disk_bus";
215         String propertyValue = "added_by_designer";
216         String propertyValueUpd = "updated_by_designer";
217         String inputName = componentName + "_" + propertyName;
218
219         //Import VSP, create VF - v0.1
220         String filePath = org.openecomp.sdc.ci.tests.utils.general.FileHandling.getVnfRepositoryPath();
221         getExtendTest().log(Status.INFO, "Going to upload VNF " + vnfFile);
222         AmdocsLicenseMembers amdocsLicenseMembers = VendorLicenseModelRestUtils.createVendorLicense(getUser());
223         ResourceReqDetails resourceReqDetails = ElementFactory.getDefaultResource();//getResourceReqDetails(ComponentConfigurationTypeEnum.DEFAULT);
224         VendorSoftwareProductObject vendorSoftwareProductObject = VendorSoftwareProductRestUtils.createAndFillVendorSoftwareProduct(resourceReqDetails, vnfFile, filePath, sdncDesignerDetails, amdocsLicenseMembers, null);
225         resourceReqDetails = OnboardingUtillViaApis.prepareOnboardedResourceDetailsBeforeCreate(resourceReqDetails, vendorSoftwareProductObject);
226         Resource resource = OnboardingUtillViaApis.createResourceFromVSP(resourceReqDetails);
227
228         //Edit Property Value and declare as input
229         CatalogUIUtilitis.clickTopMenuButton(TopMenuButtonsEnum.CATALOG);
230         GeneralUIUtils.findComponentAndClick(resourceReqDetails.getName());
231         ResourceGeneralPage.getLeftMenu().moveToPropertiesAssignmentScreen();
232         PropertiesAssignmentPage.clickOnComponentInComposition(componentName);
233         PropertiesAssignmentPage.editPropertyValue(PropertyNameBuilder.buildSimpleField(propertyName), propertyValue);
234         PropertiesAssignmentPage.clickOnSaveButton();
235         PropertiesAssignmentPage.findSearchBoxAndClick(propertyName);
236         PropertiesAssignmentPage.clickOnDeclareButton();
237         PropertiesAssignmentPage.clickOnInputTab();
238         PropertiesAssignmentVerificator.validatePropertyValue(PropertyNameBuilder.buildInputField(inputName), propertyValue);
239
240         //Check in VF and add VFi to Service
241         resource = (Resource) AtomicOperationUtils.changeComponentState(resource, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKIN, true).getLeft();
242         ServiceReqDetails serviceReqDetails = OnboardingUtillViaApis.prepareServiceDetailsBeforeCreate(sdncDesignerDetails);
243         getExtendTest().log(Status.INFO, "Create Service: " + serviceReqDetails.getName());
244         org.openecomp.sdc.be.model.Service service = AtomicOperationUtils.createCustomService
245                 (serviceReqDetails, UserRoleEnum.DESIGNER, true).left().value();
246         Either<ComponentInstance, RestResponse> addComponentInstanceToComponentContainer = AtomicOperationUtils.addComponentInstanceToComponentContainer(resource, service, UserRoleEnum.DESIGNER, true);
247         ComponentInstance componentInstance = addComponentInstanceToComponentContainer.left().value();
248
249         //Find the VF input in Service properties, declare it as service input
250         GeneralUIUtils.getWebElementByTestID(DataTestIdEnum.MainMenuButtonsFromInsideFrame.HOME_BUTTON.getValue()).click();
251         GeneralUIUtils.findComponentAndClick(serviceReqDetails.getName());
252         CompositionPage.moveToPropertiesScreen();
253         PropertiesAssignmentVerificator.validatePropertyValue(PropertyNameBuilder.buildSimpleField(inputName), propertyValue);
254         PropertiesAssignmentPage.findSearchBoxAndClick(inputName);
255         PropertiesAssignmentPage.clickOnDeclareButton();
256         PropertiesAssignmentPage.clickOnInputTab();
257         PropertiesAssignmentVerificator.validatePropertyValue
258                 (PropertyNameBuilder.buildServiceDeclaredFieldVfLevel(componentInstance, componentName,propertyName), propertyValue);
259
260         //Checkout VF, update input value and check in - v0.2
261         resource = (Resource) AtomicOperationUtils.changeComponentState(resource, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKOUT, true).getLeft();
262         GeneralUIUtils.getWebElementByTestID(DataTestIdEnum.MainMenuButtonsFromInsideFrame.HOME_BUTTON.getValue()).click();
263         GeneralUIUtils.findComponentAndClick(resourceReqDetails.getName());
264         ResourceGeneralPage.getLeftMenu().moveToPropertiesAssignmentScreen();
265         PropertiesAssignmentPage.clickOnInputTab();
266         PropertiesAssignmentPage.editPropertyValue(PropertyNameBuilder.buildDeclaredInputField(componentName, propertyName),
267                 propertyValueUpd);
268 //        PropertiesAssignmentPage.deletePropertyValue(PropertyNameBuilder.buildDeclaredInputField(componentName, propertyName));
269         PropertiesAssignmentPage.clickOnSaveButton();
270         ResourceGeneralPage.clickCheckinButton(resourceReqDetails.getName());
271
272         //Change resource version on service
273         resource = AtomicOperationUtils.getResourceObjectByNameAndVersion(UserRoleEnum.DESIGNER, resource.getName(), "0.2");
274         AtomicOperationUtils.changeComponentInstanceVersion(service, componentInstance, resource, UserRoleEnum.DESIGNER, true);
275
276         //Validate that service contains property with "get_input" value and input with the updated value
277         GeneralUIUtils.findComponentAndClick(serviceReqDetails.getName());
278         CompositionPage.moveToPropertiesScreen();
279         PropertiesAssignmentPage.isPropertyChecked(inputName);
280         PropertiesAssignmentVerificator.validatePropertyValue
281                 (PropertyNameBuilder.buildServicePropertyValue(componentName, propertyName),
282                         PropertyNameBuilder.buildServiceDeclaredPropertyValue(componentInstance, componentName, propertyName ));
283         PropertiesAssignmentPage.clickOnInputTab();
284         PropertiesAssignmentVerificator.validatePropertyValue
285                 (PropertyNameBuilder.buildServiceDeclaredFieldVfLevel(componentInstance, componentName, propertyName), propertyValueUpd);
286     }
287
288     @Test
289     public void updateServicePropertyChangeVfiVersionTest() throws Throwable {
290         String vnfFile = "vIRC_FE_BE.zip";
291         String componentName = "virc_fe_be_volume_0";
292         String propertyName = "multi_stage_design";
293         String propertyValueBoolean = "TRUE";
294
295         //Import VSP, create VF - v0.1
296         String filePath = org.openecomp.sdc.ci.tests.utils.general.FileHandling.getVnfRepositoryPath();
297         getExtendTest().log(Status.INFO, "Going to upload VNF " + vnfFile);
298         AmdocsLicenseMembers amdocsLicenseMembers = VendorLicenseModelRestUtils.createVendorLicense(getUser());
299         ResourceReqDetails resourceReqDetails = ElementFactory.getDefaultResource();//getResourceReqDetails(ComponentConfigurationTypeEnum.DEFAULT);
300         VendorSoftwareProductObject vendorSoftwareProductObject = VendorSoftwareProductRestUtils.createAndFillVendorSoftwareProduct(resourceReqDetails, vnfFile, filePath, sdncDesignerDetails, amdocsLicenseMembers, null);
301         resourceReqDetails = OnboardingUtillViaApis.prepareOnboardedResourceDetailsBeforeCreate(resourceReqDetails, vendorSoftwareProductObject);
302         Resource resource = OnboardingUtillViaApis.createResourceFromVSP(resourceReqDetails);
303
304         //Check in VF and add VFi to Service
305         resource = (Resource) AtomicOperationUtils.changeComponentState(resource, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKIN, true).getLeft();
306         ServiceReqDetails serviceReqDetails = OnboardingUtillViaApis.prepareServiceDetailsBeforeCreate(sdncDesignerDetails);
307         getExtendTest().log(Status.INFO, "Create Service: " + serviceReqDetails.getName());
308         org.openecomp.sdc.be.model.Service service = AtomicOperationUtils.createCustomService
309                 (serviceReqDetails, UserRoleEnum.DESIGNER, true).left().value();
310         Either<ComponentInstance, RestResponse> addComponentInstanceToComponentContainer = AtomicOperationUtils.addComponentInstanceToComponentContainer(resource, service, UserRoleEnum.DESIGNER, true);
311         ComponentInstance componentInstance = addComponentInstanceToComponentContainer.left().value();
312
313         //Find the VF input in Service properties, declare it as service input
314         CatalogUIUtilitis.clickTopMenuButton(TopMenuButtonsEnum.CATALOG);
315         GeneralUIUtils.findComponentAndClick(serviceReqDetails.getName());
316         CompositionPage.moveToPropertiesScreen();
317         PropertiesAssignmentPage.findSearchBoxAndClick(propertyName);
318         String defaultPropertyValueBoolean = PropertiesAssignmentPage.selectBooleanPropertyValue(PropertyNameBuilder.buildSimpleField(propertyName), propertyValueBoolean);
319         PropertiesAssignmentPage.clickOnSaveButton();
320         PropertiesAssignmentPage.clickOnDeclareButton();
321         PropertiesAssignmentPage.clickOnInputTab();
322         PropertiesAssignmentVerificator.validateBooleanPropertyValue
323                 (PropertyNameBuilder.buildServiceDeclaredFieldServiceLevel(componentInstance, propertyName),
324                         propertyValueBoolean);
325
326 //        //Checkout VF and check in - v0.2
327         AtomicOperationUtils.changeComponentState(resource, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKOUT, true).getLeft();
328         AtomicOperationUtils.changeComponentState(resource, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKIN, true).getLeft();
329
330 //        //Change resource version on service
331         resource = AtomicOperationUtils.getResourceObjectByNameAndVersion(UserRoleEnum.DESIGNER, resource.getName(), "0.2");
332         AtomicOperationUtils.changeComponentInstanceVersion(service, componentInstance, resource, UserRoleEnum.DESIGNER, true);
333
334 //        //Validate that service contains property with "get_input" value and input with the updated value
335         GeneralUIUtils.getWebElementByTestID(DataTestIdEnum.MainMenuButtonsFromInsideFrame.HOME_BUTTON.getValue()).click();
336         GeneralUIUtils.findComponentAndClick(serviceReqDetails.getName());
337         CompositionPage.moveToPropertiesScreen();
338         PropertiesAssignmentVerificator.validatePropertyValue(PropertyNameBuilder.buildSimpleField(propertyName),
339                 PropertyNameBuilder.buildServiceDeclaredPropValueServiceLevel(componentInstance, propertyName));
340         PropertiesAssignmentPage.isPropertyChecked(propertyName);
341         PropertiesAssignmentPage.clickOnInputTab();
342         PropertiesAssignmentVerificator.validateBooleanPropertyValue
343                 (PropertyNameBuilder.buildServiceDeclaredFieldServiceLevel(componentInstance, propertyName),
344                         StringUtils.isEmpty(defaultPropertyValueBoolean) ? propertyValueBoolean : defaultPropertyValueBoolean);
345     }
346
347     @Test
348     public void deletePropertyChangeVfiVersionTest() throws Throwable{
349         String vnfFile = "vIRC_FE_BE.zip";
350         String componentName = "abstract_virc_fe_be_1";
351         String propertyNameProp1 = "max_instances"; //empty property
352         String propertyNameProp2 = "nfc_naming_code"; //non-empty property
353         String propertyNameProp3 = "min_instances"; //non-empty property
354         String propertyNameProp4 = "nf_type";
355         String propertyValueProp2 = "virc_fe_be";
356         String propertyValueProp3 = "0";
357         String propertyValueUpd1 = "111";
358         String propertyValueUpd2 = "updated_by_designer";
359         String propertyValueUpd4 = "added_by_designer_on_service";
360         String inputName1 = componentName + "_" + propertyNameProp1;
361         String inputName2 = componentName + "_" + propertyNameProp2;
362         String inputName3 = componentName + "_" + propertyNameProp3;
363
364         //Import VSP, create VF - v0.1
365         String filePath = org.openecomp.sdc.ci.tests.utils.general.FileHandling.getVnfRepositoryPath();
366         getExtendTest().log(Status.INFO, "Going to upload VNF " + vnfFile);
367         AmdocsLicenseMembers amdocsLicenseMembers = VendorLicenseModelRestUtils.createVendorLicense(getUser());
368         ResourceReqDetails resourceReqDetails = ElementFactory.getDefaultResource();//getResourceReqDetails(ComponentConfigurationTypeEnum.DEFAULT);
369         VendorSoftwareProductObject vendorSoftwareProductObject = VendorSoftwareProductRestUtils.createAndFillVendorSoftwareProduct(resourceReqDetails, vnfFile, filePath, sdncDesignerDetails, amdocsLicenseMembers, null);
370         resourceReqDetails = OnboardingUtillViaApis.prepareOnboardedResourceDetailsBeforeCreate(resourceReqDetails, vendorSoftwareProductObject);
371         Resource resource = OnboardingUtillViaApis.createResourceFromVSP(resourceReqDetails);
372
373         //VF - Declare properties as inputs
374         CatalogUIUtilitis.clickTopMenuButton(TopMenuButtonsEnum.CATALOG);
375         GeneralUIUtils.findComponentAndClick(resourceReqDetails.getName());
376         ResourceGeneralPage.getLeftMenu().moveToPropertiesAssignmentScreen();
377         PropertiesAssignmentPage.clickOnComponentInComposition(componentName);
378         PropertiesAssignmentPage.findSearchBoxAndClick(propertyNameProp1);
379         PropertiesAssignmentPage.clickOnDeclareButton();
380         PropertiesAssignmentPage.findSearchBoxAndClick(propertyNameProp2);
381         PropertiesAssignmentPage.clickOnDeclareButton();
382         PropertiesAssignmentPage.findSearchBoxAndClick(propertyNameProp3);
383         PropertiesAssignmentPage.clickOnDeclareButton();
384         PropertiesAssignmentPage.clickOnInputTab();
385         PropertiesAssignmentVerificator.validatePropertyValue(PropertyNameBuilder.buildInputField(inputName1), "");
386         PropertiesAssignmentVerificator.validatePropertyValue(PropertyNameBuilder.buildInputField(inputName2), propertyValueProp2);
387         PropertiesAssignmentVerificator.validatePropertyValue(PropertyNameBuilder.buildInputField(inputName3), propertyValueProp3);
388
389         //Check in VF, create Service and add VFi to Service
390         resource = (Resource) AtomicOperationUtils.changeComponentState(resource, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKIN, true).getLeft();
391         ServiceReqDetails serviceReqDetails = OnboardingUtillViaApis.prepareServiceDetailsBeforeCreate(sdncDesignerDetails);
392         getExtendTest().log(Status.INFO, "Create Service: " + serviceReqDetails.getName());
393         org.openecomp.sdc.be.model.Service service = AtomicOperationUtils.createCustomService
394                 (serviceReqDetails, UserRoleEnum.DESIGNER, true).left().value();
395         Either<ComponentInstance, RestResponse> addComponentInstanceToComponentContainer = AtomicOperationUtils.addComponentInstanceToComponentContainer(resource, service, UserRoleEnum.DESIGNER, true);
396         ComponentInstance componentInstance = addComponentInstanceToComponentContainer.left().value();
397
398         //Find the VF inputs in Service properties, add or edit properties values
399         GeneralUIUtils.getWebElementByTestID(DataTestIdEnum.MainMenuButtonsFromInsideFrame.HOME_BUTTON.getValue()).click();
400         GeneralUIUtils.findComponentAndClick(serviceReqDetails.getName());
401         CompositionPage.moveToPropertiesScreen();
402         PropertiesAssignmentPage.findSearchBoxAndClick(inputName1);
403         PropertiesAssignmentPage.editPropertyValue(PropertyNameBuilder.buildSimpleField(inputName1), propertyValueUpd1);
404         PropertiesAssignmentPage.clickOnSaveButton();
405         PropertiesAssignmentPage.findSearchBoxAndClick(inputName2);
406         PropertiesAssignmentPage.editPropertyValue(PropertyNameBuilder.buildSimpleField(inputName2), propertyValueUpd2);
407         PropertiesAssignmentPage.clickOnSaveButton();
408         PropertiesAssignmentPage.findSearchBoxAndClick(inputName3);
409         PropertiesAssignmentPage.deletePropertyValue(PropertyNameBuilder.buildSimpleField(inputName3));
410         PropertiesAssignmentPage.clickOnSaveButton();
411         PropertiesAssignmentPage.findSearchBoxAndClick(propertyNameProp4);
412         PropertiesAssignmentPage.editPropertyValue(PropertyNameBuilder.buildSimpleField(propertyNameProp4), propertyValueUpd4);
413         PropertiesAssignmentPage.clickOnSaveButton();
414
415         //Checkout and check in VF, change VFi version on Service to 0.2
416         AtomicOperationUtils.changeComponentState(resource, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKOUT, true).getLeft();
417         AtomicOperationUtils.changeComponentState(resource, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKIN, true).getLeft();
418         AtomicOperationUtils.changeComponentInstanceVersion(service, componentInstance, resource, UserRoleEnum.DESIGNER, true);
419
420         //Service - Validate properties values
421         GeneralUIUtils.getWebElementByTestID(DataTestIdEnum.MainMenuButtonsFromInsideFrame.HOME_BUTTON.getValue()).click();
422         GeneralUIUtils.findComponentAndClick(serviceReqDetails.getName());
423         CompositionPage.moveToPropertiesScreen();
424         PropertiesAssignmentVerificator.validatePropertyValue(PropertyNameBuilder.buildSimpleField(inputName1), propertyValueUpd1);
425 //        PropertiesAssignmentVerificator.validatePropertyValue(PropertyNameBuilder.buildSimpleField(inputName2), propertyValueProp2);
426         PropertiesAssignmentVerificator.validatePropertyValue(PropertyNameBuilder.buildSimpleField(inputName3), propertyValueProp3);
427         PropertiesAssignmentVerificator.validatePropertyValue(PropertyNameBuilder.buildSimpleField(propertyNameProp4), propertyValueUpd4);
428
429         //Service - Declare properties as inputs
430         PropertiesAssignmentPage.findSearchBoxAndClick(inputName1);
431         PropertiesAssignmentPage.clickOnDeclareButton();
432 //        PropertiesAssignmentPage.findSearchBoxAndClick(inputName2);
433 //        PropertiesAssignmentPage.clickOnDeclareButton();
434         PropertiesAssignmentPage.findSearchBoxAndClick(inputName3);
435         PropertiesAssignmentPage.clickOnDeclareButton();
436         PropertiesAssignmentPage.findSearchBoxAndClick(propertyNameProp4);
437         PropertiesAssignmentPage.clickOnDeclareButton();
438         // TODO: 5/9/2018 Add validation for input values
439
440         //VF - delete some declared inputs
441         GeneralUIUtils.getWebElementByTestID(DataTestIdEnum.MainMenuButtonsFromInsideFrame.HOME_BUTTON.getValue()).click();
442         GeneralUIUtils.findComponentAndClick(resourceReqDetails.getName());
443         GeneralPageElements.clickCheckoutButton();
444         ResourceGeneralPage.getLeftMenu().moveToPropertiesAssignmentScreen();
445         PropertiesAssignmentPage.clickOnInputTab();
446         PropertiesAssignmentPage.findInput(componentName, propertyNameProp1);
447         PropertiesAssignmentPage.clickOnDeleteInputButton();
448         PropertiesAssignmentPage.clickOnDeleteInputDialogConfirmationButton();
449 ////        PropertiesAssignmentPage.findInput(componentName, propertyNameProp2);
450 //        PropertiesAssignmentPage.clickOnDeleteInputButton();
451 //        PropertiesAssignmentPage.clickOnDeleteInputDialogConfirmationButton();
452
453         //VF - check in VF, change VFi version on Service to 0.3
454         ResourceGeneralPage.clickCheckinButton(resourceReqDetails.getName());
455         resource = AtomicOperationUtils.getResourceObjectByNameAndVersion(UserRoleEnum.DESIGNER, resource.getName(), "0.3");
456         AtomicOperationUtils.changeComponentInstanceVersion(service, componentInstance, resource, UserRoleEnum.DESIGNER, true);
457
458         //Service - Validate that deleted inputs are not found in Service properties, others are found
459         CatalogUIUtilitis.clickTopMenuButton(TopMenuButtonsEnum.CATALOG);
460         GeneralUIUtils.findComponentAndClick(serviceReqDetails.getName());
461         CompositionPage.moveToPropertiesScreen();
462         PropertiesAssignmentPage.findProperty(inputName1);
463         assertTrue(GeneralUIUtils.isElementInvisibleByTestId(PropertyNameBuilder.buildSimpleField(inputName1)));
464 //        PropertiesAssignmentPage.findProperty(inputName2);
465 //        assertTrue(GeneralUIUtils.isElementInvisibleByTestId(PropertyNameBuilder.buildSimpleField(inputName2)));
466         PropertiesAssignmentPage.findProperty(inputName3);
467         assertTrue(GeneralUIUtils.isElementVisibleByTestId(PropertyNameBuilder.buildSimpleField(inputName3)));
468         PropertiesAssignmentPage.findProperty(propertyNameProp4);
469         assertTrue(GeneralUIUtils.isElementVisibleByTestId(PropertyNameBuilder.buildSimpleField(propertyNameProp4)));
470
471         //Service - Validate that Service inputs that were declared from deleted properties are not found
472         //        - Validate that other inputs remain - Currently input of min_instances disappears - BUG 411833!!!
473     }
474
475     @Test
476     public void updateVFCPropertyChangeVFCiVersionTest() throws Throwable {
477         ResourceReqDetails atomicResourceMetaData;
478         String prop1 = "network_role";
479         String propValue1 = "added_value_1";
480         String prop2 = "is_default";
481         String propValue2 = "TRUE";
482
483         //Import VFC, certify VFC
484         String fileName = "importVFC_VFC23.yml";
485         atomicResourceMetaData = ElementFactory.getDefaultResourceByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT,
486                 ResourceCategoryEnum.NETWORK_L2_3_ROUTERS, getUser());
487         ResourceUIUtils.importVfc(atomicResourceMetaData, filePath, fileName, getUser());
488         String vfcName = atomicResourceMetaData.getName();
489         ResourceGeneralPage.clickCheckinButton(vfcName);
490
491         //Create VF
492         ResourceReqDetails vfMetaData = ElementFactory.getDefaultResourceByType(ResourceTypeEnum.VF, getUser());
493         ResourceUIUtils.createVF(vfMetaData, getUser());
494
495         //Add VFCi to VF canvas
496         ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
497         CanvasManager vfCanvasManager = CanvasManager.getCanvasManager();
498         CanvasElement vfcElement = vfCanvasManager.createElementOnCanvas(vfcName);
499
500         //VF Properties Assignment - edit properties values and declare as input
501         CompositionPage.moveToPropertiesScreen();
502         PropertiesAssignmentPage.findSearchBoxAndClick(prop1);
503         PropertiesAssignmentPage.editPropertyValue(PropertyNameBuilder.buildSimpleField(prop1), propValue1);
504         PropertiesAssignmentPage.clickOnSaveButton();
505         PropertiesAssignmentPage.clickOnDeclareButton();
506         PropertiesAssignmentPage.findSearchBoxAndClick(prop2);
507         String propDefaultValue2 = PropertiesAssignmentPage.selectBooleanPropertyValue(PropertyNameBuilder.buildSimpleField(prop2), propValue2);
508         PropertiesAssignmentPage.clickOnSaveButton();
509         PropertiesAssignmentPage.clickOnDeclareButton();
510
511         //Check out and check in VFC - v0.2
512         HomePage.navigateToHomePage();
513         GeneralUIUtils.findComponentAndClick(vfcName);
514         ResourceGeneralPage.clickCheckoutButton();
515         ResourceGeneralPage.clickCheckinButton(vfcName);
516
517         //Change VFCi version in VF
518         GeneralUIUtils.findComponentAndClick(vfMetaData.getName());
519         ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
520         vfCanvasManager = CanvasManager.getCanvasManager();
521         CompositionPage.changeComponentVersion(vfCanvasManager, vfcElement, "0.2");
522         VfVerificator.verifyInstanceVersion(vfMetaData, getUser(), atomicResourceMetaData.getName(), "0.2");
523
524         Resource resource = AtomicOperationUtils.getResourceObjectByNameAndVersion(UserRoleEnum.DESIGNER, vfMetaData.getName(), "0.1");
525         List<ComponentInstance> components = resource.getComponentInstances();
526         String normalizedName = components.get(0).getNormalizedName();
527         CompositionPage.moveToPropertiesScreen();
528         PropertiesAssignmentPage.clickOnInputTab();
529         //Verify that input value of the declared property that is EMPTY by default hasn't changed
530 //        PropertiesAssignmentVerificator.validateBooleanPropertyValue(PropertyNameBuilder.buildDeclaredInputField(normalizedName, prop2), propValue2);
531         PropertiesAssignmentVerificator.validatePropertyValue(PropertyNameBuilder.buildDeclaredInputField(normalizedName, prop1), propValue1);
532         //Verify that input value of the declared property that is NOT EMPTY by default has been changed
533         PropertiesAssignmentVerificator.validateBooleanPropertyValue(PropertyNameBuilder.buildDeclaredInputField(normalizedName, prop2),
534                 StringUtils.isEmpty(propDefaultValue2) ? propValue2 : propDefaultValue2);
535
536         //Check out VFC - v0.3, delete a property, check in VFC
537         HomePage.navigateToHomePage();
538         GeneralUIUtils.findComponentAndClick(vfcName);
539         ResourceGeneralPage.clickCheckoutButton();
540         ResourceGeneralPage.getLeftMenu().moveToPropertiesScreen();
541         PropertiesPage.clickDeletePropertyFromPopup(prop1);
542         PropertiesPage.clickDeletePropertyFromPopup(prop2);
543         ResourceGeneralPage.clickCheckinButton(vfcName);
544
545         //Change VFCi version in VF
546         GeneralUIUtils.findComponentAndClick(vfMetaData.getName());
547         ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
548         vfCanvasManager = CanvasManager.getCanvasManager();
549         CompositionPage.changeComponentVersion(vfCanvasManager, vfcElement, "0.3");
550         VfVerificator.verifyInstanceVersion(vfMetaData, getUser(), atomicResourceMetaData.getName(), "0.3");
551
552         //Verify that properties and inputs were removed
553         CompositionPage.moveToPropertiesScreen();
554         PropertiesAssignmentPage.findProperty(prop1);
555         assertTrue(GeneralUIUtils.isElementInvisibleByTestId(PropertyNameBuilder.buildSimpleField(prop1)));
556         PropertiesAssignmentPage.findProperty(prop2);
557         assertTrue(GeneralUIUtils.isElementInvisibleByTestId(PropertyNameBuilder.buildSimpleField(prop2)));
558         PropertiesAssignmentPage.clickOnInputTab();
559         PropertiesAssignmentPage.findProperty(normalizedName + "_" + prop1);
560         assertTrue(GeneralUIUtils.isElementInvisibleByTestId(PropertyNameBuilder.buildDeclaredInputField(normalizedName, prop1)));
561         PropertiesAssignmentPage.findProperty(normalizedName + "_" + prop2);
562         assertTrue(GeneralUIUtils.isElementInvisibleByTestId(PropertyNameBuilder.buildDeclaredInputField(normalizedName, prop2)));
563     }
564
565     @Test
566     public void updateHeatParamChangeVfiVersionTest() throws Throwable {
567         String vnfFile = "vIRC_FE_BE.zip";
568         String artifactName = "base_fe_be";
569         String heatParamName = "availability_zone_0";
570         String heatParamUpdValue = "Updated_ZoneA";
571
572         //Import VSP, create VF - v0.1
573         String filePath = org.openecomp.sdc.ci.tests.utils.general.FileHandling.getVnfRepositoryPath();
574         getExtendTest().log(Status.INFO, "Going to upload VNF " + vnfFile);
575         AmdocsLicenseMembers amdocsLicenseMembers = VendorLicenseModelRestUtils.createVendorLicense(getUser());
576         ResourceReqDetails resourceReqDetails = ElementFactory.getDefaultResource();//getResourceReqDetails(ComponentConfigurationTypeEnum.DEFAULT);
577         VendorSoftwareProductObject vendorSoftwareProductObject = VendorSoftwareProductRestUtils.createAndFillVendorSoftwareProduct(resourceReqDetails, vnfFile, filePath, sdncDesignerDetails, amdocsLicenseMembers, null);
578         resourceReqDetails = OnboardingUtillViaApis.prepareOnboardedResourceDetailsBeforeCreate(resourceReqDetails, vendorSoftwareProductObject);
579         Resource resource = OnboardingUtillViaApis.createResourceFromVSP(resourceReqDetails);
580
581         //Check in VF and add VFi to Service
582         resource = (Resource) AtomicOperationUtils.changeComponentState(resource, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKIN, true).getLeft();
583         ServiceReqDetails serviceReqDetails = OnboardingUtillViaApis.prepareServiceDetailsBeforeCreate(sdncDesignerDetails);
584         getExtendTest().log(Status.INFO, "Create Service: " + serviceReqDetails.getName());
585         org.openecomp.sdc.be.model.Service service = AtomicOperationUtils.createCustomService
586                 (serviceReqDetails, UserRoleEnum.DESIGNER, true).left().value();
587         CatalogUIUtilitis.clickTopMenuButton(TopMenuButtonsEnum.CATALOG);
588         GeneralUIUtils.findComponentAndClick(service.getName());
589         ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
590         CanvasManager vfCanvasManager = CanvasManager.getCanvasManager();
591         CanvasElement vfElement = vfCanvasManager.createElementOnCanvas(resource.getName());
592
593         //Select VFi on canvas, open Deployment Artifacts tab
594         vfCanvasManager.clickOnCanvaElement(vfElement);
595         CompositionPage.showDeploymentArtifactTab();
596         DeploymentArtifactPage.hoverArtifact(artifactName);
597         DeploymentArtifactPage.clickEditEnvArtifact(artifactName);
598         DeploymentArtifactPage.editHeatParamValue(HeatParamNameBuilder.buildCurrentHeatParamValue(heatParamName), heatParamUpdValue);
599         DeploymentArtifactPage.clickSaveEnvParameters();
600
601         //Checkout and check in VF - v0.2
602         resource = (Resource) AtomicOperationUtils.changeComponentState(resource, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKOUT, true).getLeft();
603         resource = (Resource)  AtomicOperationUtils.changeComponentState(resource, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKIN, true).getLeft();
604
605         //Change VFi version on Service canvas - v0.2
606         GeneralUIUtils.getWebElementByTestID(DataTestIdEnum.MainMenuButtonsFromInsideFrame.HOME_BUTTON.getValue()).click();
607         GeneralUIUtils.findComponentAndClick(service.getName());
608         ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
609         vfCanvasManager = CanvasManager.getCanvasManager();
610         CompositionPage.changeComponentVersion(vfCanvasManager, vfElement, "0.2");
611 //        VfVerificator.verifyInstanceVersion(service, getUser(), resource.getName(), "0.2");
612
613         //Validate that edited heatparam value is kept
614         CompositionPage.showDeploymentArtifactTab();
615         DeploymentArtifactPage.hoverArtifact(artifactName);
616         DeploymentArtifactPage.clickEditEnvArtifact(artifactName);
617         PropertiesAssignmentVerificator.validatePropertyValue(HeatParamNameBuilder.buildCurrentHeatParamValue(heatParamName), heatParamUpdValue);
618         DeploymentArtifactPage.clickCloseEnvParameters();
619
620         //Check out VF, delete heatparam value, check in VF - v0.3
621         resource = (Resource)  AtomicOperationUtils.changeComponentState(resource, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKOUT, true).getLeft();
622         GeneralUIUtils.getWebElementByTestID(DataTestIdEnum.MainMenuButtonsFromInsideFrame.HOME_BUTTON.getValue()).click();
623         GeneralUIUtils.findComponentAndClick(resource.getName());
624         ResourceGeneralPage.getLeftMenu().moveToDeploymentArtifactScreen();
625         DeploymentArtifactPage.clickEditEnvArtifact(artifactName);
626         DeploymentArtifactPage.clickOnDeleteHeatParamValue(heatParamName);
627         DeploymentArtifactPage.clickSaveEnvParameters();
628         resource = (Resource)  AtomicOperationUtils.changeComponentState(resource, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKIN, true).getLeft();
629
630         //Change VFi version on Service canvas - v0.3
631         GeneralUIUtils.getWebElementByTestID(DataTestIdEnum.MainMenuButtonsFromInsideFrame.HOME_BUTTON.getValue()).click();
632         GeneralUIUtils.findComponentAndClick(service.getName());
633         ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
634         vfCanvasManager = CanvasManager.getCanvasManager();
635         CompositionPage.changeComponentVersion(vfCanvasManager, vfElement, "0.3");
636
637         //Validate that edited heatparam value is kept, default value is empty
638         CompositionPage.showDeploymentArtifactTab();
639         DeploymentArtifactPage.hoverArtifact(artifactName);
640         DeploymentArtifactPage.clickEditEnvArtifact(artifactName);
641         PropertiesAssignmentVerificator.validatePropertyValue(HeatParamNameBuilder.buildCurrentHeatParamValue(heatParamName), heatParamUpdValue);
642         PropertiesAssignmentVerificator.validatePropertyValueIsNull(HeatParamNameBuilder.buildDefaultHeatParamValue(heatParamName));
643         DeploymentArtifactPage.clickCloseEnvParameters();
644     }
645
646
647
648     @Override
649     protected UserRoleEnum getRole() {
650         return UserRoleEnum.DESIGNER;
651     }
652
653 }
654
655