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