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 org.openecomp.sdc.be.dao.api.ActionStatus;
25 import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
26 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
27 import org.openecomp.sdc.be.model.GroupDefinition;
28 import org.openecomp.sdc.be.model.LifecycleStateEnum;
29 import org.openecomp.sdc.be.model.Resource;
30 import org.openecomp.sdc.be.model.User;
31 import org.openecomp.sdc.ci.tests.datatypes.ArtifactInfo;
32 import org.openecomp.sdc.ci.tests.datatypes.CanvasElement;
33 import org.openecomp.sdc.ci.tests.datatypes.CanvasManager;
34 import org.openecomp.sdc.ci.tests.datatypes.DataTestIdEnum;
35 import org.openecomp.sdc.ci.tests.datatypes.DataTestIdEnum.CompositionScreenEnum;
36 import org.openecomp.sdc.ci.tests.datatypes.DataTestIdEnum.ServiceMetadataEnum;
37 import org.openecomp.sdc.ci.tests.datatypes.LifeCycleStateEnum;
38 import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails;
39 import org.openecomp.sdc.ci.tests.datatypes.ServiceReqDetails;
40 import org.openecomp.sdc.ci.tests.datatypes.TopMenuButtonsEnum;
41 import org.openecomp.sdc.ci.tests.datatypes.enums.ArtifactTypeEnum;
42 import org.openecomp.sdc.ci.tests.datatypes.enums.NormativeTypesEnum;
43 import org.openecomp.sdc.ci.tests.datatypes.enums.ResourceCategoryEnum;
44 import org.openecomp.sdc.ci.tests.datatypes.enums.ServiceCategoriesEnum;
45 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
46 import org.openecomp.sdc.ci.tests.execute.setup.SetupCDTest;
47 import org.openecomp.sdc.ci.tests.pages.CompositionPage;
48 import org.openecomp.sdc.ci.tests.pages.DeploymentArtifactPage;
49 import org.openecomp.sdc.ci.tests.pages.DeploymentPage;
50 import org.openecomp.sdc.ci.tests.pages.GeneralPageElements;
51 import org.openecomp.sdc.ci.tests.pages.HomePage;
52 import org.openecomp.sdc.ci.tests.pages.InputsPage;
53 import org.openecomp.sdc.ci.tests.pages.ResourceGeneralPage;
54 import org.openecomp.sdc.ci.tests.pages.ServiceGeneralPage;
55 import org.openecomp.sdc.ci.tests.pages.TesterOperationPage;
56 import org.openecomp.sdc.ci.tests.utilities.ArtifactUIUtils;
57 import org.openecomp.sdc.ci.tests.utilities.CatalogUIUtilitis;
58 import org.openecomp.sdc.ci.tests.utilities.FileHandling;
59 import org.openecomp.sdc.ci.tests.utilities.GeneralUIUtils;
60 import org.openecomp.sdc.ci.tests.utilities.ResourceUIUtils;
61 import org.openecomp.sdc.ci.tests.utilities.ServiceUIUtils;
62 import org.openecomp.sdc.ci.tests.utils.general.AtomicOperationUtils;
63 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
64 import org.openecomp.sdc.ci.tests.utils.rest.ResourceRestUtils;
65 import org.openecomp.sdc.ci.tests.utils.validation.ErrorValidationUtils;
66 import org.openecomp.sdc.ci.tests.verificator.DeploymentViewVerificator;
67 import org.openecomp.sdc.ci.tests.verificator.ServiceVerificator;
68 import org.openecomp.sdc.ci.tests.verificator.VfVerificator;
69 import org.openqa.selenium.By;
70 import org.openqa.selenium.WebElement;
71 import org.testng.AssertJUnit;
72 import org.testng.TestException;
73 import org.testng.annotations.BeforeMethod;
74 import org.testng.annotations.Test;
77 import java.util.ArrayList;
78 import java.util.Arrays;
79 import java.util.List;
81 import static org.assertj.core.api.Assertions.assertThat;
82 import static org.testng.AssertJUnit.assertTrue;
84 public class Service extends SetupCDTest {
86 private static final String DESCRIPTION = "kuku";
87 private static final String ARTIFACT_LABEL = "artifact3";
88 private static final String ARTIFACT_LABEL_UPDATE = "artifactUpdate";
89 private static final String GET_ARTIFACT_LIST_BY_CLASS_NAME = "i-sdc-designer-sidebar-section-content-item-artifact";
90 private static final String HEAT_FILE_YAML_NAME = "Heat-File.yaml";
91 private static final String HEAT_FILE_YAML_UPDATE_NAME = "Heat-File-Update.yaml";
92 private String filePath;
93 private static CanvasElement computeElement;
95 public static CanvasElement getComputeElement() {
96 return computeElement;
100 public void beforeTest() {
101 filePath = FileHandling.getFilePath("");
106 public void createService() throws Exception {
107 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
108 ServiceUIUtils.createService(serviceMetadata);
112 public void validDefaultContactAndTagAfterCreateService() throws Exception {
113 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
114 ServiceUIUtils.createServiceWithDefaultTagAndUserId(serviceMetadata, getUser());
116 assertTrue("wrong userId", getUser().getUserId().equals(ResourceGeneralPage.getContactIdText()));
118 List<String> actualTags = Arrays.asList(ServiceGeneralPage.getTags());
119 assertTrue("wrong tags", (actualTags.size() == 1) && actualTags.get(0).equals(serviceMetadata.getName()));
123 public void updateService() throws Exception {
125 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
126 ServiceUIUtils.createService(serviceMetadata);
129 ServiceGeneralPage.deleteOldTags(serviceMetadata);
130 serviceMetadata.setName(ElementFactory.getServicePrefix() + "UpdatedName" + serviceMetadata.getName());
131 serviceMetadata.setDescription("updatedDescriptionSanity");
132 serviceMetadata.setProjectCode("654321");
133 serviceMetadata.setContactId("cs6543");
134 serviceMetadata.getTags().addAll(Arrays.asList("updatedTag", "oneMoreUpdatedTag", "lastOne UpdatedTag"));
135 ServiceUIUtils.setServiceCategory(serviceMetadata, ServiceCategoriesEnum.VOIP);
136 ServiceUIUtils.fillServiceGeneralPage(serviceMetadata);
137 GeneralPageElements.clickCreateButton();
139 ServiceVerificator.verifyServiceUpdatedInUI(serviceMetadata);
143 public void deleteService() throws Exception {
146 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
147 ServiceUIUtils.createService(serviceMetadata);
150 //GeneralUIUtils.HighlightMyElement(GeneralUIUtils.getWebButton("delete_version"));
151 GeneralPageElements.clickTrashButtonAndConfirm();
154 CatalogUIUtilitis.clickTopMenuButton(TopMenuButtonsEnum.CATALOG);
155 CatalogUIUtilitis.catalogSearchBox(serviceMetadata.getName());
156 ServiceVerificator.verifyServiceDeletedInUI(serviceMetadata);
160 public void checkoutServiceTest() throws Exception {
161 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
162 ServiceUIUtils.createService(serviceMetadata);
164 ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
166 ArtifactInfo artifact = new ArtifactInfo(filePath, HEAT_FILE_YAML_NAME, DESCRIPTION, ARTIFACT_LABEL, "OTHER");
167 CompositionPage.showDeploymentArtifactTab();
168 CompositionPage.clickAddArtifactButton();
169 ArtifactUIUtils.fillAndAddNewArtifactParameters(artifact, CompositionPage.artifactPopup());
171 ResourceGeneralPage.clickCheckinButton(serviceMetadata.getName());
172 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
173 GeneralPageElements.clickCheckoutButton();
175 serviceMetadata.setVersion("0.2");
176 ServiceVerificator.verifyServiceLifecycle(serviceMetadata, getUser(), LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
177 VfVerificator.verifyVfLifecycleInUI(LifeCycleStateEnum.CHECKOUT);
178 ServiceVerificator.verifyVersionUI(serviceMetadata.getVersion());
180 ResourceGeneralPage.clickSubmitForTestingButton(serviceMetadata.getName());
182 reloginWithNewRole(UserRoleEnum.TESTER);
183 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
184 TesterOperationPage.certifyComponent(serviceMetadata.getName());
186 reloginWithNewRole(UserRoleEnum.DESIGNER);
187 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
188 ResourceGeneralPage.clickCheckoutButton();
190 serviceMetadata.setVersion("1.1");
191 serviceMetadata.setUniqueId(null);
192 ServiceVerificator.verifyServiceLifecycle(serviceMetadata, getUser(), LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
193 VfVerificator.verifyVfLifecycleInUI(LifeCycleStateEnum.CHECKOUT);
194 ServiceVerificator.verifyVersionUI(serviceMetadata.getVersion());
198 public void submitServiceForTestingWithNonCertifiedAsset() throws Exception {
200 ResourceReqDetails atomicResourceMetaData = ElementFactory.getDefaultResourceByTypeNormTypeAndCatregory(ResourceTypeEnum.VF, NormativeTypesEnum.ROOT, ResourceCategoryEnum.NETWORK_L2_3_ROUTERS, getUser());
201 ResourceUIUtils.createVF(atomicResourceMetaData, getUser());
202 //TODO Andrey changed to click on ceckIn button
203 ResourceGeneralPage.clickCheckinButton(atomicResourceMetaData.getName());
205 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
206 ServiceUIUtils.createService(serviceMetadata);
207 DeploymentArtifactPage.getLeftMenu().moveToCompositionScreen();
208 CanvasManager canvasManager = CanvasManager.getCanvasManager();
209 CompositionPage.searchForElement(atomicResourceMetaData.getName());
210 canvasManager.createElementOnCanvas(atomicResourceMetaData.getName());
213 CompositionPage.clickSubmitForTestingButton(serviceMetadata.getName());
215 } catch (Exception e) {
216 String errorMessage = GeneralUIUtils.getWebElementByClassName("w-sdc-modal-caption").getText();
217 String checkUIResponseOnError = ErrorValidationUtils.checkUIResponseOnError(ActionStatus.VALIDATED_RESOURCE_NOT_FOUND.name());
218 assertTrue(errorMessage.contains(checkUIResponseOnError));
220 ResourceRestUtils.deleteResourceByNameAndVersion(atomicResourceMetaData.getName(), "0.1");
226 public void createLinkService() throws Exception {
227 String fileName2 = "vSeGW.csar";
228 ResourceReqDetails resourceMetaData = ElementFactory.getDefaultResourceByType("ciRes", NormativeTypesEnum.ROOT, ResourceCategoryEnum.APPLICATION_L4_DATABASE, getUser().getUserId(), ResourceTypeEnum.VF.toString());
229 ResourceUIUtils.importVfFromCsar(resourceMetaData, filePath, fileName2, getUser());
230 ResourceGeneralPage.clickCheckinButton(resourceMetaData.getName());
232 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
233 ServiceUIUtils.createService(serviceMetadata);
234 DeploymentArtifactPage.getLeftMenu().moveToCompositionScreen();
235 CanvasManager canvasManager = CanvasManager.getCanvasManager();
236 CompositionPage.searchForElement(resourceMetaData.getName());
237 CanvasElement firstElement = canvasManager.createElementOnCanvas(resourceMetaData.getName());
238 CanvasElement secondElement = canvasManager.createElementOnCanvas(resourceMetaData.getName());
239 canvasManager.linkElements(firstElement, secondElement);
243 public void addDeploymentArtifactInCompositionScreenTest() throws Exception {
244 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
245 ServiceUIUtils.createService(serviceMetadata);
247 ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
248 ArtifactInfo artifact = new ArtifactInfo(filePath, HEAT_FILE_YAML_NAME, DESCRIPTION, ARTIFACT_LABEL, "OTHER");
249 CompositionPage.showDeploymentArtifactTab();
250 CompositionPage.clickAddArtifactButton();
251 ArtifactUIUtils.fillAndAddNewArtifactParameters(artifact, CompositionPage.artifactPopup());
253 List<WebElement> actualArtifactList = GeneralUIUtils.getWebElementsListBy(By.className(GET_ARTIFACT_LIST_BY_CLASS_NAME));
254 AssertJUnit.assertEquals(1, actualArtifactList.size());
256 for (WebElement actualArtifactFileName : CompositionPage.getAllAddedArtifacts()) {
257 assertTrue(HEAT_FILE_YAML_NAME.equals(actualArtifactFileName.getText()));
263 public void addInformationArtifactInCompositionScreenTest() throws Exception {
264 String descriptionText = DESCRIPTION;
265 List<String> artifactFileNames = new ArrayList<>();
267 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
268 ServiceUIUtils.createService(serviceMetadata);
270 ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
271 ArtifactInfo artifactInfo = new ArtifactInfo(filePath, HEAT_FILE_YAML_NAME, descriptionText, ARTIFACT_LABEL, "OTHER");
272 CompositionPage.showInformationArtifactTab();
273 List<WebElement> beforeArtifactList = GeneralUIUtils.getWebElementsListBy(By.className(GET_ARTIFACT_LIST_BY_CLASS_NAME));
274 CompositionPage.clickAddArtifactButton();
275 ArtifactUIUtils.fillAndAddNewArtifactParameters(artifactInfo, CompositionPage.artifactPopup());
277 List<WebElement> actualArtifactList = GeneralUIUtils.getWebElementsListBy(By.className(GET_ARTIFACT_LIST_BY_CLASS_NAME));
278 assertThat(actualArtifactList).as("Check number of artifacts").hasSize(beforeArtifactList.size() + 1);
279 int fileNameCounter = 0;
281 for (DataTestIdEnum.InformationalArtifactsService artifact : DataTestIdEnum.InformationalArtifactsService.values()) {
282 fileName = HEAT_FILE_YAML_NAME_PREFIX + fileNameCounter + HEAT_FILE_YAML_NAME_SUFFIX;
283 ArtifactUIUtils.fillPlaceHolderInformationalArtifact(artifact,
284 FileHandling.getFilePath("uniqueFileNames"), fileName, descriptionText);
285 artifactFileNames.add(fileName);
288 artifactFileNames.add(HEAT_FILE_YAML_NAME);
289 int numberOfFiles = CompositionPage.getAllAddedArtifacts().size();
290 assertThat(numberOfFiles).as("Check number of artifacts").isEqualTo(beforeArtifactList.size() + 1);
293 for (WebElement actualArtifact : CompositionPage.getAllAddedArtifacts()) {
294 assertThat(actualArtifact.getText()).isEqualTo(artifactFileNames.get(fileNameCounter));
300 public void addAPIArtifactInCompositionScreenTest() throws Exception {
301 String fileName = HEAT_FILE_YAML_NAME,
302 descriptionText = DESCRIPTION,
303 url = "http://kuku.com";
304 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
305 ServiceUIUtils.createService(serviceMetadata);
307 ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
308 new ArtifactInfo(filePath, fileName, descriptionText, ARTIFACT_LABEL, "OTHER");
309 CompositionPage.showAPIArtifactTab();
311 for (DataTestIdEnum.APIArtifactsService artifact : DataTestIdEnum.APIArtifactsService.values()) {
312 ArtifactUIUtils.fillPlaceHolderAPIArtifact(artifact, filePath, fileName, descriptionText, url);
314 int numberOfFiles = CompositionPage.getAllAddedArtifacts().size(),
315 numberOfPlacehoders = DataTestIdEnum.APIArtifactsService.values().length;
316 assertTrue(String.format("Wrong file count, should be %s files", numberOfPlacehoders), numberOfPlacehoders == numberOfFiles);
318 for (WebElement actualArtifactFileName : CompositionPage.getAllAddedArtifacts()) {
319 assertTrue(fileName.equals(actualArtifactFileName.getText()));
324 public void ManagmentWorkflowTest() throws Exception {
325 String descriptionText = DESCRIPTION,
326 descriptionTextEdit = "kuku2";
328 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
329 ServiceUIUtils.createService(serviceMetadata);
331 ServiceGeneralPage.getServiceLeftMenu().moveToManagmentWorkflow();
332 ServiceGeneralPage.fillAndAddNewWorkflow(descriptionText, descriptionText);
333 ServiceVerificator.verifyManagmentWorkflow(descriptionText, descriptionText);
335 ServiceGeneralPage.clickAddWorkflow();
336 ServiceGeneralPage.fillAndAddNewWorkflow(descriptionTextEdit, descriptionTextEdit);
340 public void deleteChangeVersionTest() throws Exception {
341 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
342 ServiceUIUtils.createService(serviceMetadata);
344 ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
346 ArtifactInfo artifact = new ArtifactInfo(filePath, HEAT_FILE_YAML_NAME, DESCRIPTION, ARTIFACT_LABEL, "OTHER");
347 CompositionPage.showDeploymentArtifactTab();
348 CompositionPage.clickAddArtifactButton();
349 ArtifactUIUtils.fillAndAddNewArtifactParameters(artifact, CompositionPage.artifactPopup());
351 ResourceGeneralPage.clickCheckinButton(serviceMetadata.getName());
352 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
353 GeneralPageElements.clickCheckoutButton();
355 changeDeleteAndValidateVersionOnGeneralPage("0.1", "0.2", serviceMetadata.getName());
357 GeneralPageElements.clickCheckoutButton();
358 ResourceGeneralPage.clickSubmitForTestingButton(serviceMetadata.getName());
360 reloginWithNewRole(UserRoleEnum.TESTER);
361 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
362 TesterOperationPage.certifyComponent(serviceMetadata.getName());
364 reloginWithNewRole(UserRoleEnum.DESIGNER);
365 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
366 ResourceGeneralPage.clickCheckoutButton();
368 changeDeleteAndValidateVersionOnGeneralPage("1.0", "1.1", serviceMetadata.getName());
372 public void compositionScreenRightSideButtonsTest() throws Exception {
374 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
375 ServiceUIUtils.createService(serviceMetadata);
377 ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
379 CompositionPage.showInformationTab();
380 ServiceVerificator.verifyOpenTabTitle(CompositionScreenEnum.INFORMATION);
382 //feature removed from UI
383 // CompositionPage.showCompositionTab();
384 // ServiceVerificator.verifyOpenTabTitle(CompositionScreenEnum.COMPOSITION);
386 CompositionPage.showDeploymentArtifactTab();
387 ServiceVerificator.verifyOpenTabTitle(CompositionScreenEnum.DEPLOYMENT_ARTIFACT_TAB);
389 CompositionPage.showInputsTab();
390 assertTrue(CompositionPage.getOpenTabTitle().size() == 0);
392 CompositionPage.showAPIArtifactTab();
393 ServiceVerificator.verifyOpenTabTitle(CompositionScreenEnum.API);
395 CompositionPage.showInformationArtifactTab();
396 ServiceVerificator.verifyOpenTabTitle(CompositionScreenEnum.INFORMATION_ARTIFACTS);
401 public void addDeploymentArtifactToVFInstanceTest() throws Exception {
403 ResourceReqDetails atomicResourceMetaData = ElementFactory.getDefaultResourceByTypeNormTypeAndCatregory(ResourceTypeEnum.VF, NormativeTypesEnum.ROOT, ResourceCategoryEnum.NETWORK_L2_3_ROUTERS, getUser());
404 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
405 ArtifactInfo artifact = new ArtifactInfo(filePath, HEAT_FILE_YAML_NAME, DESCRIPTION, ARTIFACT_LABEL, ArtifactTypeEnum.SNMP_POLL.getType());
407 CanvasElement computeElement = createServiceWithRiArtifact(atomicResourceMetaData, serviceMetadata, artifact);
408 checkArtifactIfAdded(1, HEAT_FILE_YAML_NAME);
409 checkInService(serviceMetadata);
410 clickOncanvasElement(computeElement);
411 CompositionPage.showDeploymentArtifactTab();
412 checkArtifactIfAdded(1, HEAT_FILE_YAML_NAME);
416 public void deleteDeploymentArtifactFromVFInstanceTest() throws Exception {
418 ResourceReqDetails atomicResourceMetaData = ElementFactory.getDefaultResourceByTypeNormTypeAndCatregory(ResourceTypeEnum.VF, NormativeTypesEnum.ROOT, ResourceCategoryEnum.NETWORK_L2_3_ROUTERS, getUser());
419 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
420 ArtifactInfo artifact = new ArtifactInfo(filePath, HEAT_FILE_YAML_NAME, DESCRIPTION, ARTIFACT_LABEL, ArtifactTypeEnum.SNMP_POLL.getType());
422 createServiceWithRiArtifact(atomicResourceMetaData, serviceMetadata, artifact);
423 checkArtifactIfAdded(1, HEAT_FILE_YAML_NAME);
424 List<WebElement> actualArtifactList = GeneralUIUtils.getWebElementsListBy(By.className(GET_ARTIFACT_LIST_BY_CLASS_NAME));
425 deleteAndVerifyArtifact(actualArtifactList);
430 public void deleteDeploymentArtifactFromVFInstanceNextVersionTest() throws Exception {
433 // throw new SkipException("Open bug 342260");
436 ResourceReqDetails atomicResourceMetaData = ElementFactory.getDefaultResourceByTypeNormTypeAndCatregory(ResourceTypeEnum.VF, NormativeTypesEnum.ROOT, ResourceCategoryEnum.NETWORK_L2_3_ROUTERS, getUser());
437 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
438 ArtifactInfo artifact = new ArtifactInfo(filePath, HEAT_FILE_YAML_NAME, DESCRIPTION, ARTIFACT_LABEL, ArtifactTypeEnum.SNMP_POLL.getType());
440 CanvasElement computeElement = createServiceWithRiArtifact(atomicResourceMetaData, serviceMetadata, artifact);
441 checkArtifactIfAdded(1, HEAT_FILE_YAML_NAME);
442 checkInService(serviceMetadata);
443 ResourceGeneralPage.clickCheckoutButton();
444 clickOncanvasElement(computeElement);
445 CompositionPage.showDeploymentArtifactTab();
446 List<WebElement> actualArtifactList = GeneralUIUtils.getWebElementsListBy(By.className(GET_ARTIFACT_LIST_BY_CLASS_NAME));
447 deleteAndVerifyArtifact(actualArtifactList);
448 // change container version
449 GeneralUIUtils.clickOnElementByTestId(DataTestIdEnum.GeneralElementsEnum.VERSION_HEADER.getValue());
450 GeneralPageElements.selectVersion("V0.1");
451 clickOncanvasElement(computeElement);
452 CompositionPage.showDeploymentArtifactTab();
453 checkArtifactIfAdded(1, HEAT_FILE_YAML_NAME);
457 // service version V0.1 default artifact, service version V0.2 updated artifact
459 public void updateDeploymentArtifactOnVFInstanceNextVersionTest() throws Exception {
462 // throw new SkipException("Open bug 322930");
465 ResourceReqDetails atomicResourceMetaData = ElementFactory.getDefaultResourceByTypeNormTypeAndCatregory(ResourceTypeEnum.VF, NormativeTypesEnum.ROOT, ResourceCategoryEnum.NETWORK_L2_3_ROUTERS, getUser());
466 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
467 ArtifactInfo artifact = new ArtifactInfo(filePath, HEAT_FILE_YAML_NAME, DESCRIPTION, ARTIFACT_LABEL, ArtifactTypeEnum.SNMP_POLL.getType());
468 ArtifactInfo artifactUpdate = new ArtifactInfo(filePath, HEAT_FILE_YAML_UPDATE_NAME, DESCRIPTION, ARTIFACT_LABEL_UPDATE, ArtifactTypeEnum.DCAE_INVENTORY_DOC.getType());
470 CanvasElement computeElement = createServiceWithRiArtifact(atomicResourceMetaData, serviceMetadata, artifact);
471 checkArtifactIfAdded(1, HEAT_FILE_YAML_NAME);
472 checkInService(serviceMetadata);
473 ResourceGeneralPage.clickCheckoutButton();
474 clickOncanvasElement(computeElement);
475 CompositionPage.showDeploymentArtifactTab();
476 List<WebElement> actualArtifactList = GeneralUIUtils.getWebElementsListBy(By.className(GET_ARTIFACT_LIST_BY_CLASS_NAME));
477 deleteAndVerifyArtifact(actualArtifactList);
478 // upload new artifact
479 addDeploymentArtifact(artifactUpdate, CanvasManager.getCanvasManager(), computeElement);
480 checkArtifactIfAdded(1, HEAT_FILE_YAML_UPDATE_NAME);
481 // change container version
482 GeneralUIUtils.clickOnElementByTestId(DataTestIdEnum.GeneralElementsEnum.VERSION_HEADER.getValue());
483 GeneralPageElements.selectVersion("V0.1");
484 clickOncanvasElement(computeElement);
485 CompositionPage.showDeploymentArtifactTab();
486 checkArtifactIfAdded(1, HEAT_FILE_YAML_NAME);
490 public void clickOncanvasElement(CanvasElement computeElement) {
491 CanvasManager canvasManager = CanvasManager.getCanvasManager();
492 canvasManager.clickOnCanvaElement(computeElement);
495 public void checkInService(ServiceReqDetails serviceMetadata) throws Exception {
496 ResourceGeneralPage.clickCheckinButton(serviceMetadata.getName());
497 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
498 DeploymentArtifactPage.getLeftMenu().moveToCompositionScreen();
501 public static void deleteAndVerifyArtifact(List<WebElement> actualArtifactList) {
502 if (actualArtifactList.size() > 0) {
503 GeneralUIUtils.hoverOnAreaByTestId(DataTestIdEnum.DeploymentArtifactCompositionRightMenu.ARTIFACT_ITEM.getValue() + ARTIFACT_LABEL);
504 SetupCDTest.getExtendTest().log(Status.INFO, "Going to delete " + HEAT_FILE_YAML_NAME + " artifact" + " and check if deleted");
505 GeneralUIUtils.clickOnElementByTestId(DataTestIdEnum.DeploymentArtifactCompositionRightMenu.DELETE.getValue() + ARTIFACT_LABEL);
506 GeneralPageElements.clickOKButton();
507 assertTrue("Artifact does not deleted", !GeneralUIUtils.waitForElementInVisibilityByTestId(By.className(GET_ARTIFACT_LIST_BY_CLASS_NAME)));
512 public void checkArtifactIfAdded(Integer expectedNumOfARtifacts, String expectedArtifactName) {
514 List<WebElement> actualArtifactList;
515 actualArtifactList = GeneralUIUtils.getWebElementsListBy(By.className(GET_ARTIFACT_LIST_BY_CLASS_NAME));
516 assertTrue("Expected artifact count is: " + expectedNumOfARtifacts + ", but was " + actualArtifactList.size(), expectedNumOfARtifacts == actualArtifactList.size());
518 if (expectedNumOfARtifacts != 0) {
519 for (WebElement actualArtifactFileName : CompositionPage.getAllAddedArtifacts()) {
520 assertTrue("Artifact name does not match, expected " + expectedArtifactName + ", but was " + actualArtifactFileName.getText(), expectedArtifactName.equals(actualArtifactFileName.getText()));
527 public CanvasElement createServiceWithRiArtifact(ResourceReqDetails atomicResourceMetaData, ServiceReqDetails serviceMetadata, ArtifactInfo artifact) throws Exception, AWTException {
528 ResourceUIUtils.createVF(atomicResourceMetaData, getUser());
529 //TODO Andrey should click on certify button
530 ResourceGeneralPage.clickCertifyButton(atomicResourceMetaData.getName());
532 ServiceUIUtils.createService(serviceMetadata);
534 DeploymentArtifactPage.getLeftMenu().moveToCompositionScreen();
535 CanvasManager canvasManager = CanvasManager.getCanvasManager();
536 CompositionPage.searchForElement(atomicResourceMetaData.getName());
537 CanvasElement computeElement = canvasManager.createElementOnCanvas(atomicResourceMetaData.getName());
538 addDeploymentArtifact(artifact, canvasManager, computeElement);
540 return computeElement;
544 public void addDeploymentArtifact(ArtifactInfo artifact, CanvasManager canvasManager, CanvasElement computeElement) throws Exception {
545 canvasManager.clickOnCanvaElement(computeElement);
546 CompositionPage.showDeploymentArtifactTab();
547 CompositionPage.clickAddArtifactButton();
548 ArtifactUIUtils.fillAndAddNewArtifactParameters(artifact, CompositionPage.artifactPopup());
552 public void isDisabledAndReadOnlyInCheckin() throws Exception {
553 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
554 ServiceUIUtils.createService(serviceMetadata);
555 GeneralPageElements.clickCheckinButton(serviceMetadata.getName());
556 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
558 ServiceMetadataEnum[] fieldsForCheck = {ServiceMetadataEnum.SERVICE_NAME,
559 ServiceMetadataEnum.CONTACT_ID,
560 ServiceMetadataEnum.DESCRIPTION,
561 ServiceMetadataEnum.PROJECT_CODE,
562 ServiceMetadataEnum.TAGS};
563 for (ServiceMetadataEnum field : fieldsForCheck) {
564 assertTrue(GeneralUIUtils.isElementReadOnly(field.getValue()));
567 assertTrue(GeneralUIUtils.isElementDisabled(ServiceMetadataEnum.CATEGORY.getValue()));
568 assertTrue(GeneralUIUtils.isElementDisabled(DataTestIdEnum.LifeCyleChangeButtons.CREATE.getValue()));
571 // future removed from ui
572 @Test(enabled = false)
573 public void inputsTest() throws Exception {
574 String fileName = "service_input_test_VF2.csar";
576 ResourceReqDetails resourceMetaData = ElementFactory.getDefaultResourceByType(ResourceTypeEnum.VF, getUser());
577 ResourceUIUtils.importVfFromCsar(resourceMetaData, filePath, fileName, getUser());
578 GeneralPageElements.clickCheckinButton(resourceMetaData.getName());
580 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
581 ServiceUIUtils.createService(serviceMetadata);
583 String selectedInstanceName = addResourceToServiceInCanvas(resourceMetaData);
585 GeneralUIUtils.clickOnElementByTestId("breadcrumbs-button-1");
586 DeploymentArtifactPage.getLeftMenu().moveToInputsScreen();
588 InputsPage.addInputToService(selectedInstanceName, "volume_id");
589 InputsPage.deleteServiceInput(selectedInstanceName, "volume_id");
591 // Trying to find deleted service input
593 InputsPage.getServiceInput(selectedInstanceName, "volume_id");
595 } catch (TestException e) {
600 public void deploymentViewServiceTest() throws Exception {
602 User user = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
603 String fileName2 = "vSeGWNew.csar";
605 ResourceReqDetails resourceMetaData = ElementFactory.getDefaultResourceByType("ciRes", NormativeTypesEnum.ROOT, ResourceCategoryEnum.APPLICATION_L4_DATABASE, getUser().getUserId(), ResourceTypeEnum.VF.toString());
606 ResourceUIUtils.importVfFromCsar(resourceMetaData, filePath, fileName2, getUser());
607 Resource resource = AtomicOperationUtils.getResourceObjectByNameAndVersion(UserRoleEnum.DESIGNER, resourceMetaData.getName(), "0.1");
609 // update group property max_vf_module_instances of VF Module to 100
610 List<GroupDefinition> groups = resource.getGroups();
611 for (GroupDefinition group : groups) {
612 if (group.getType().equals("org.openecomp.groups.VfModule")) {
613 for (PropertyDataDefinition property : group.getProperties()) {
614 if (property.getName().equals("max_vf_module_instances")) {
615 // property.setValue("100");
616 // List<PropertyDataDefinition> propertyList = new ArrayList<>();
617 // propertyList.add(property);
618 // todo pass to method correct object instaed of value for custom json
619 AtomicOperationUtils.updateGroupPropertyOnResource("100", resource, group.getUniqueId(), user, true);
626 ResourceGeneralPage.clickCheckinButton(resourceMetaData.getName());
627 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
628 ServiceUIUtils.createService(serviceMetadata);
629 addResourceToServiceInCanvas(resourceMetaData);
630 GeneralUIUtils.clickOnElementByTestId("breadcrumbs-button-1");
631 DeploymentArtifactPage.getLeftMenu().moveToDeploymentViewScreen();
632 serviceMetadata.setVersion("0.1");
633 List<WebElement> instanceRowsFromTable = GeneralUIUtils.getElementsByCSS("div[data-tests-id^='hierarchy-instance'] span[class^='expand-collapse-title-text']");
634 for (WebElement instanceRow : instanceRowsFromTable) {
635 String instanceRowText = instanceRow.getText();
636 List<WebElement> instanceModulesList = DeploymentPage.getInstanceModulesList(instanceRowText);
637 for (WebElement instanceModule : instanceModulesList) {
638 String instanceModuleText = instanceModule.getText();
639 ResourceUIUtils.clickOnElementByText(instanceModuleText, "instance");
640 ServiceVerificator.verifyDeploymentPageSubElements(instanceModuleText.split("\\.\\.")[2], new DeploymentViewVerificator(filePath + fileName2));
641 ServiceVerificator.verifyDisabledServiceProperties();
642 SetupCDTest.getExtendTest().log(Status.INFO, "Sent email to Edith Ronen, waiting for answer");
643 String isBaseValue = ServiceVerificator.getVFModulePropertyValue(serviceMetadata, "isBase", instanceModuleText);
644 if (isBaseValue.equals("false")) {
645 ServiceVerificator.verifyEnabledServiceProperties();
647 ResourceUIUtils.clickOnElementByText(instanceModuleText, "instance");
653 public void vfModuleCustomizationUUIDServiceTest() throws Exception {
654 String fileName2 = "vSeGW.csar";
655 ResourceReqDetails resourceMetaData = ElementFactory.getDefaultResourceByType("ciRes", NormativeTypesEnum.ROOT, ResourceCategoryEnum.APPLICATION_L4_DATABASE, getUser().getUserId(), ResourceTypeEnum.VF.toString());
656 ResourceUIUtils.importVfFromCsar(resourceMetaData, filePath, fileName2, getUser());
657 ResourceGeneralPage.clickCheckinButton(resourceMetaData.getName());
659 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
660 ServiceUIUtils.createService(serviceMetadata);
662 addResourceToServiceInCanvas(resourceMetaData);
664 serviceMetadata.setVersion("0.1");
665 ServiceVerificator.verifyVFModuleCustomizationUUID(serviceMetadata);
669 public void checkoutCertifyRemainSameCustomizationUUIDServiceTest() throws Exception {
670 String fileName2 = "vSeGW.csar";
671 ResourceReqDetails resourceMetaData = ElementFactory.getDefaultResourceByType("ciRes", NormativeTypesEnum.ROOT, ResourceCategoryEnum.APPLICATION_L4_DATABASE, getUser().getUserId(), ResourceTypeEnum.VF.toString());
672 ResourceUIUtils.importVfFromCsar(resourceMetaData, filePath, fileName2, getUser());
673 //TODO Andrey should click on certify button
674 ResourceGeneralPage.clickCertifyButton(resourceMetaData.getName());
676 /*reloginWithNewRole(UserRoleEnum.TESTER);
677 GeneralUIUtils.findComponentAndClick(resourceMetaData.getName());
678 TesterOperationPage.certifyComponent(resourceMetaData.getName());
680 reloginWithNewRole(UserRoleEnum.DESIGNER);*/
682 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
683 ServiceUIUtils.createService(serviceMetadata);
685 addResourceToServiceInCanvas(resourceMetaData);
687 serviceMetadata.setVersion("0.1");
688 ServiceVerificator.verifyVFModuleCustomizationUUID(serviceMetadata);
689 List<String> allVFModuleCustomizationUUIDs = ServiceVerificator.getAllVFModuleCustomizationUUIDs(serviceMetadata);
691 ResourceGeneralPage.clickCheckinButton(serviceMetadata.getName());
692 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
693 GeneralPageElements.clickCheckoutButton();
695 serviceMetadata.setVersion("0.2");
696 assertTrue(ServiceVerificator.isEqualCustomizationUUIDsAfterChanges(allVFModuleCustomizationUUIDs, ServiceVerificator.getAllVFModuleCustomizationUUIDs(serviceMetadata)));
698 ResourceGeneralPage.clickSubmitForTestingButton(serviceMetadata.getName());
700 reloginWithNewRole(UserRoleEnum.TESTER);
701 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
702 TesterOperationPage.certifyComponent(serviceMetadata.getName());
704 reloginWithNewRole(UserRoleEnum.DESIGNER);
705 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
706 ResourceGeneralPage.clickCheckoutButton();
708 serviceMetadata.setVersion("1.1");
709 serviceMetadata.setUniqueId(null);
710 assertTrue(ServiceVerificator.isEqualCustomizationUUIDsAfterChanges(allVFModuleCustomizationUUIDs, ServiceVerificator.getAllVFModuleCustomizationUUIDs(serviceMetadata)));
714 public void createServiceWithALaCarteInstanTypeAndCheckItsTosca() throws Exception {
715 getExtendTest().log(Status.INFO, "Starting the test: createServiceWithALaCarteInstanTypeAndCheckItsTosca.");
716 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
717 ServiceUIUtils.createServiceWithDefaultTagAndUserId(serviceMetadata, getUser());
718 getExtendTest().log(Status.INFO, "Done creating service over the UI, "
719 + "about to move into Tosca Artifacts section.");
720 ResourceGeneralPage.moveToToscaArtifactsSectionAndDownloadTosca();
721 getExtendTest().log(Status.INFO, "Downloaded Template YAML File.");
722 AssertJUnit.assertTrue(ServiceGeneralPage.parseToscaFileIntoServiceAndValidateProperties(serviceMetadata));
723 getExtendTest().log(Status.INFO, "Test is successful.");
727 public void createServiceWithALaCarteInstanTypeAndVerifyChosenValue() throws Exception {
728 getExtendTest().log(Status.INFO, "Starting the test: createServiceWithALaCarteInstanTypeAndVerifyChosenValue.");
729 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
730 ServiceUIUtils.createServiceWithDefaultTagAndUserId(serviceMetadata, getUser());
731 getExtendTest().log(Status.INFO, "Done creating service over the UI, "
732 + "about to move into Home page.");
733 HomePage.navigateToHomePage();
734 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
735 assertTrue(serviceMetadata.getInstantiationType().equals(ServiceGeneralPage.getInstantiationTypeChosenValue()));
739 public static synchronized String addResourceToServiceInCanvas(ResourceReqDetails resourceMetaData) throws Exception {
740 DeploymentArtifactPage.getLeftMenu().moveToCompositionScreen();
741 if (computeElement == null) {
742 computeElement = createCanvasElement(resourceMetaData);
744 CanvasManager.getCanvasManager().clickOnCanvaElement(computeElement);
745 return CompositionPage.getSelectedInstanceName();
748 private static synchronized CanvasElement createCanvasElement(ResourceReqDetails resourceMetaData) throws Exception {
749 CompositionPage.searchForElement(resourceMetaData.getName());
750 return CanvasManager.getCanvasManager().createElementOnCanvas(resourceMetaData.getName());
753 public static void changeDeleteAndValidateVersionOnGeneralPage(String previousVersion, String currentVersion, String serviceName) throws Exception {
754 GeneralPageElements.selectVersion("V" + previousVersion);
755 ServiceVerificator.verifyVersionUI(previousVersion);
756 GeneralUIUtils.clickJSOnElementByText("latest version");
757 ServiceVerificator.verifyVersionUI(currentVersion);
758 GeneralPageElements.clickTrashButtonAndConfirm();
759 GeneralUIUtils.findComponentAndClick(serviceName);
760 ServiceVerificator.verifyVersionUI(previousVersion);
764 protected UserRoleEnum getRole() {
765 return UserRoleEnum.DESIGNER;