2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.ci.tests.execute.sanity;
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;
50 import java.util.List;
52 import static org.testng.Assert.assertTrue;
54 //import com.sun.xml.internal.bind.v2.TODO;
57 public class PropertiesAssignmentUpdateFlow extends SetupCDTest {
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);
66 public void beforeClass(){
67 filePath = FileHandling.getFilePath("");
71 public void beforeTest(){
72 System.out.println("File repository is : " + filePath);
73 // SetupCDTest.getExtendTest().log(Status.INFO, "File repository is : " + filePath);
76 @DataProvider(name = "assetFilesInputs", parallel = false)
77 public Object[][] createDataInputs() {
78 return new Object[][] {
79 {"editInputValueTopChange.csar", ""},
80 {"editInputValueNoTopChange.csar", "Updated-SRE-Mgt"}};
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
90 @Test(dataProvider = "assetFilesInputs")
91 public void updateInputDefaultValueTest(String updFileName, String validationValue) throws Exception {
94 String origTestFile = origFile;
95 String componentName = "abstract_virc_fe_be_0";
96 String inputName = "management_net_name";
97 String inputUpdValue = "Updated-SRE-Mgt";
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());
106 ResourceGeneralPage.getLeftMenu().moveToPropertiesAssignmentScreen();
107 PropertiesAssignmentPage.clickOnComponentInComposition(componentName);
108 PropertiesAssignmentPage.clickOnInputTab();
109 PropertiesAssignmentPage.editPropertyValue(PropertyNameBuilder.buildInputField(inputName), inputUpdValue);
110 PropertiesAssignmentPage.clickOnSaveButton();
113 Resource resource = AtomicOperationUtils.getResourceObjectByNameAndVersion(UserRoleEnum.DESIGNER, resourceMetaData.getName(), "0.1");
114 resource = (Resource) AtomicOperationUtils.changeComponentState(resource, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CERTIFY, true).getLeft();
117 HomePage.navigateToHomePage();
118 CatalogUIUtilitis.clickTopMenuButton(TopMenuButtonsEnum.CATALOG);
119 GeneralUIUtils.findComponentAndClick(resourceMetaData.getName());
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);
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);
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"}};
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
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
164 * @param updFileName - csar for update
165 * @param propertyName
166 * @param validationValue - expected property value after update
169 @Test (dataProvider = "assetFilesProperties")
170 public void updatePropertyDefaultValueTest(String updFileName, String propertyName, String validationValue) throws Exception {
172 String origTestFile = origFile;
173 String componentName = "abstract_virc_fe_be_0";
174 String propertyUpdValue = "updated_by_designer";
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());
183 ResourceGeneralPage.getLeftMenu().moveToPropertiesAssignmentScreen();
184 PropertiesAssignmentPage.clickOnComponentInComposition(componentName);
185 PropertiesAssignmentPage.editPropertyValue(propertyName, propertyUpdValue);
186 PropertiesAssignmentPage.clickOnSaveButton();
189 Resource resource = AtomicOperationUtils.getResourceObjectByNameAndVersion(UserRoleEnum.DESIGNER, resourceMetaData.getName(), "0.1");
190 resource = (Resource) AtomicOperationUtils.changeComponentState(resource, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CERTIFY, true).getLeft();
193 HomePage.navigateToHomePage();
194 CatalogUIUtilitis.clickTopMenuButton(TopMenuButtonsEnum.CATALOG);
195 GeneralUIUtils.findComponentAndClick(resourceMetaData.getName());
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);
203 //Validate Input value
204 ResourceGeneralPage.getLeftMenu().moveToPropertiesAssignmentScreen();
205 PropertiesAssignmentPage.clickOnComponentInComposition(componentName);
206 PropertiesAssignmentVerificator.validatePropertyValue(propertyName,validationValue);
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;
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);
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);
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();
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);
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),
268 // PropertiesAssignmentPage.deletePropertyValue(PropertyNameBuilder.buildDeclaredInputField(componentName, propertyName));
269 PropertiesAssignmentPage.clickOnSaveButton();
270 ResourceGeneralPage.clickCheckinButton(resourceReqDetails.getName());
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);
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);
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";
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);
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();
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);
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();
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);
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);
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;
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);
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);
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();
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();
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);
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);
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
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();
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);
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)));
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!!!
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";
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);
492 ResourceReqDetails vfMetaData = ElementFactory.getDefaultResourceByType(ResourceTypeEnum.VF, getUser());
493 ResourceUIUtils.createVF(vfMetaData, getUser());
495 //Add VFCi to VF canvas
496 ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
497 CanvasManager vfCanvasManager = CanvasManager.getCanvasManager();
498 CanvasElement vfcElement = vfCanvasManager.createElementOnCanvas(vfcName);
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();
511 //Check out and check in VFC - v0.2
512 HomePage.navigateToHomePage();
513 GeneralUIUtils.findComponentAndClick(vfcName);
514 ResourceGeneralPage.clickCheckoutButton();
515 ResourceGeneralPage.clickCheckinButton(vfcName);
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");
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);
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);
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");
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)));
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";
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);
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());
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();
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();
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");
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();
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();
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");
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();
649 protected UserRoleEnum getRole() {
650 return UserRoleEnum.DESIGNER;