Catalog alignment
[sdc.git] / ui-ci / src / main / java / org / openecomp / sdc / ci / tests / execute / sanity / Service.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.openecomp.sdc.ci.tests.execute.sanity;
22
23 import com.aventstack.extentreports.Status;
24 import 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;
75
76 import java.awt.*;
77 import java.util.ArrayList;
78 import java.util.Arrays;
79 import java.util.List;
80
81 import static org.assertj.core.api.Assertions.assertThat;
82 import static org.testng.AssertJUnit.assertTrue;
83
84 public class Service extends SetupCDTest {
85
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;
94
95     public static CanvasElement getComputeElement() {
96         return computeElement;
97     }
98
99     @BeforeMethod
100     public void beforeTest() {
101         filePath = FileHandling.getFilePath("");
102     }
103
104
105     @Test
106     public void createService() throws Exception {
107         ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
108         ServiceUIUtils.createService(serviceMetadata);
109     }
110
111     @Test
112     public void validDefaultContactAndTagAfterCreateService() throws Exception {
113         ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
114         ServiceUIUtils.createServiceWithDefaultTagAndUserId(serviceMetadata, getUser());
115
116         assertTrue("wrong userId", getUser().getUserId().equals(ResourceGeneralPage.getContactIdText()));
117
118         List<String> actualTags = Arrays.asList(ServiceGeneralPage.getTags());
119         assertTrue("wrong tags", (actualTags.size() == 1) && actualTags.get(0).equals(serviceMetadata.getName()));
120     }
121
122     @Test
123     public void updateService() throws Exception {
124         // Create Service
125         ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
126         ServiceUIUtils.createService(serviceMetadata);
127
128         // Update Service
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();
138
139         ServiceVerificator.verifyServiceUpdatedInUI(serviceMetadata);
140     }
141
142     @Test
143     public void deleteService() throws Exception {
144
145         // create service
146         ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
147         ServiceUIUtils.createService(serviceMetadata);
148
149         // Delete service
150         //GeneralUIUtils.HighlightMyElement(GeneralUIUtils.getWebButton("delete_version"));
151         GeneralPageElements.clickTrashButtonAndConfirm();
152
153         // Verification
154         CatalogUIUtilitis.clickTopMenuButton(TopMenuButtonsEnum.CATALOG);
155         CatalogUIUtilitis.catalogSearchBox(serviceMetadata.getName());
156         ServiceVerificator.verifyServiceDeletedInUI(serviceMetadata);
157     }
158
159     @Test
160     public void checkoutServiceTest() throws Exception {
161         ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
162         ServiceUIUtils.createService(serviceMetadata);
163
164         ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
165
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());
170
171         ResourceGeneralPage.clickCheckinButton(serviceMetadata.getName());
172         GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
173         GeneralPageElements.clickCheckoutButton();
174
175         serviceMetadata.setVersion("0.2");
176         ServiceVerificator.verifyServiceLifecycle(serviceMetadata, getUser(), LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
177         VfVerificator.verifyVfLifecycleInUI(LifeCycleStateEnum.CHECKOUT);
178         ServiceVerificator.verifyVersionUI(serviceMetadata.getVersion());
179
180         ResourceGeneralPage.clickSubmitForTestingButton(serviceMetadata.getName());
181
182         reloginWithNewRole(UserRoleEnum.TESTER);
183         GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
184         TesterOperationPage.certifyComponent(serviceMetadata.getName());
185
186         reloginWithNewRole(UserRoleEnum.DESIGNER);
187         GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
188         ResourceGeneralPage.clickCheckoutButton();
189
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());
195     }
196
197     @Test
198     public void submitServiceForTestingWithNonCertifiedAsset() throws Exception {
199
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());
204
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());
211
212         try {
213             CompositionPage.clickSubmitForTestingButton(serviceMetadata.getName());
214             assert (false);
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));
219         } finally {
220             ResourceRestUtils.deleteResourceByNameAndVersion(atomicResourceMetaData.getName(), "0.1");
221         }
222
223     }
224
225     @Test
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());
231
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);
240     }
241
242     @Test
243     public void addDeploymentArtifactInCompositionScreenTest() throws Exception {
244         ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
245         ServiceUIUtils.createService(serviceMetadata);
246
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());
252
253         List<WebElement> actualArtifactList = GeneralUIUtils.getWebElementsListBy(By.className(GET_ARTIFACT_LIST_BY_CLASS_NAME));
254         AssertJUnit.assertEquals(1, actualArtifactList.size());
255
256         for (WebElement actualArtifactFileName : CompositionPage.getAllAddedArtifacts()) {
257             assertTrue(HEAT_FILE_YAML_NAME.equals(actualArtifactFileName.getText()));
258         }
259
260     }
261
262     @Test
263     public void addInformationArtifactInCompositionScreenTest() throws Exception {
264         String descriptionText = DESCRIPTION;
265         List<String> artifactFileNames = new ArrayList<>();
266
267         ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
268         ServiceUIUtils.createService(serviceMetadata);
269
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());
276
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;
280         String fileName;
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);
286             fileNameCounter++;
287         }
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);
291
292         fileNameCounter = 0;
293         for (WebElement actualArtifact : CompositionPage.getAllAddedArtifacts()) {
294             assertThat(actualArtifact.getText()).isEqualTo(artifactFileNames.get(fileNameCounter));
295             fileNameCounter++;
296         }
297     }
298
299     @Test
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);
306
307         ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
308         new ArtifactInfo(filePath, fileName, descriptionText, ARTIFACT_LABEL, "OTHER");
309         CompositionPage.showAPIArtifactTab();
310
311         for (DataTestIdEnum.APIArtifactsService artifact : DataTestIdEnum.APIArtifactsService.values()) {
312             ArtifactUIUtils.fillPlaceHolderAPIArtifact(artifact, filePath, fileName, descriptionText, url);
313         }
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);
317
318         for (WebElement actualArtifactFileName : CompositionPage.getAllAddedArtifacts()) {
319             assertTrue(fileName.equals(actualArtifactFileName.getText()));
320         }
321     }
322
323     @Test
324     public void ManagmentWorkflowTest() throws Exception {
325         String descriptionText = DESCRIPTION,
326                 descriptionTextEdit = "kuku2";
327
328         ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
329         ServiceUIUtils.createService(serviceMetadata);
330
331         ServiceGeneralPage.getServiceLeftMenu().moveToManagmentWorkflow();
332         ServiceGeneralPage.fillAndAddNewWorkflow(descriptionText, descriptionText);
333         ServiceVerificator.verifyManagmentWorkflow(descriptionText, descriptionText);
334
335         ServiceGeneralPage.clickAddWorkflow();
336         ServiceGeneralPage.fillAndAddNewWorkflow(descriptionTextEdit, descriptionTextEdit);
337     }
338
339     @Test
340     public void deleteChangeVersionTest() throws Exception {
341         ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
342         ServiceUIUtils.createService(serviceMetadata);
343
344         ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
345
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());
350
351         ResourceGeneralPage.clickCheckinButton(serviceMetadata.getName());
352         GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
353         GeneralPageElements.clickCheckoutButton();
354
355         changeDeleteAndValidateVersionOnGeneralPage("0.1", "0.2", serviceMetadata.getName());
356
357         GeneralPageElements.clickCheckoutButton();
358         ResourceGeneralPage.clickSubmitForTestingButton(serviceMetadata.getName());
359
360         reloginWithNewRole(UserRoleEnum.TESTER);
361         GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
362         TesterOperationPage.certifyComponent(serviceMetadata.getName());
363
364         reloginWithNewRole(UserRoleEnum.DESIGNER);
365         GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
366         ResourceGeneralPage.clickCheckoutButton();
367
368         changeDeleteAndValidateVersionOnGeneralPage("1.0", "1.1", serviceMetadata.getName());
369     }
370
371     @Test
372     public void compositionScreenRightSideButtonsTest() throws Exception {
373
374         ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
375         ServiceUIUtils.createService(serviceMetadata);
376
377         ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
378
379         CompositionPage.showInformationTab();
380         ServiceVerificator.verifyOpenTabTitle(CompositionScreenEnum.INFORMATION);
381
382         //feature removed from UI
383 //              CompositionPage.showCompositionTab();
384 //              ServiceVerificator.verifyOpenTabTitle(CompositionScreenEnum.COMPOSITION);
385
386         CompositionPage.showDeploymentArtifactTab();
387         ServiceVerificator.verifyOpenTabTitle(CompositionScreenEnum.DEPLOYMENT_ARTIFACT_TAB);
388
389         CompositionPage.showInputsTab();
390         assertTrue(CompositionPage.getOpenTabTitle().size() == 0);
391
392         CompositionPage.showAPIArtifactTab();
393         ServiceVerificator.verifyOpenTabTitle(CompositionScreenEnum.API);
394
395         CompositionPage.showInformationArtifactTab();
396         ServiceVerificator.verifyOpenTabTitle(CompositionScreenEnum.INFORMATION_ARTIFACTS);
397
398     }
399
400     @Test
401     public void addDeploymentArtifactToVFInstanceTest() throws Exception {
402
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());
406
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);
413     }
414
415     @Test
416     public void deleteDeploymentArtifactFromVFInstanceTest() throws Exception {
417
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());
421
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);
426
427     }
428
429     @Test
430     public void deleteDeploymentArtifactFromVFInstanceNextVersionTest() throws Exception {
431
432 //              if(true){
433 //                      throw new SkipException("Open bug 342260");                     
434 //              }
435
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());
439
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);
454
455     }
456
457     //  service version V0.1 default artifact, service version V0.2 updated artifact
458     @Test
459     public void updateDeploymentArtifactOnVFInstanceNextVersionTest() throws Exception {
460
461 //              if(true){
462 //                      throw new SkipException("Open bug 322930");                     
463 //              }
464
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());
469
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);
487
488     }
489
490     public void clickOncanvasElement(CanvasElement computeElement) {
491         CanvasManager canvasManager = CanvasManager.getCanvasManager();
492         canvasManager.clickOnCanvaElement(computeElement);
493     }
494
495     public void checkInService(ServiceReqDetails serviceMetadata) throws Exception {
496         ResourceGeneralPage.clickCheckinButton(serviceMetadata.getName());
497         GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
498         DeploymentArtifactPage.getLeftMenu().moveToCompositionScreen();
499     }
500
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)));
508         }
509     }
510
511
512     public void checkArtifactIfAdded(Integer expectedNumOfARtifacts, String expectedArtifactName) {
513
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());
517
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()));
521             }
522         }
523
524     }
525
526
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());
531
532         ServiceUIUtils.createService(serviceMetadata);
533
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);
539
540         return computeElement;
541     }
542
543
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());
549     }
550
551     @Test
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());
557
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()));
565         }
566
567         assertTrue(GeneralUIUtils.isElementDisabled(ServiceMetadataEnum.CATEGORY.getValue()));
568         assertTrue(GeneralUIUtils.isElementDisabled(DataTestIdEnum.LifeCyleChangeButtons.CREATE.getValue()));
569     }
570
571     // future removed from ui
572     @Test(enabled = false)
573     public void inputsTest() throws Exception {
574         String fileName = "service_input_test_VF2.csar";
575
576         ResourceReqDetails resourceMetaData = ElementFactory.getDefaultResourceByType(ResourceTypeEnum.VF, getUser());
577         ResourceUIUtils.importVfFromCsar(resourceMetaData, filePath, fileName, getUser());
578         GeneralPageElements.clickCheckinButton(resourceMetaData.getName());
579
580         ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
581         ServiceUIUtils.createService(serviceMetadata);
582
583         String selectedInstanceName = addResourceToServiceInCanvas(resourceMetaData);
584
585         GeneralUIUtils.clickOnElementByTestId("breadcrumbs-button-1");
586         DeploymentArtifactPage.getLeftMenu().moveToInputsScreen();
587
588         InputsPage.addInputToService(selectedInstanceName, "volume_id");
589         InputsPage.deleteServiceInput(selectedInstanceName, "volume_id");
590
591         // Trying to find deleted service input
592         try {
593             InputsPage.getServiceInput(selectedInstanceName, "volume_id");
594             assert (false);
595         } catch (TestException e) {
596         }
597     }
598
599     @Test()
600     public void deploymentViewServiceTest() throws Exception {
601
602         User user = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
603         String fileName2 = "vSeGWNew.csar";
604
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");
608
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);
620                         break;
621                     }
622                 }
623             }
624         }
625
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();
646                 }
647                 ResourceUIUtils.clickOnElementByText(instanceModuleText, "instance");
648             }
649         }
650     }
651
652     @Test
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());
658
659         ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
660         ServiceUIUtils.createService(serviceMetadata);
661
662         addResourceToServiceInCanvas(resourceMetaData);
663
664         serviceMetadata.setVersion("0.1");
665         ServiceVerificator.verifyVFModuleCustomizationUUID(serviceMetadata);
666     }
667
668     @Test
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());
675                 
676                 /*reloginWithNewRole(UserRoleEnum.TESTER);
677                 GeneralUIUtils.findComponentAndClick(resourceMetaData.getName());
678                 TesterOperationPage.certifyComponent(resourceMetaData.getName());
679                 
680                 reloginWithNewRole(UserRoleEnum.DESIGNER);*/
681
682         ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
683         ServiceUIUtils.createService(serviceMetadata);
684
685         addResourceToServiceInCanvas(resourceMetaData);
686
687         serviceMetadata.setVersion("0.1");
688         ServiceVerificator.verifyVFModuleCustomizationUUID(serviceMetadata);
689         List<String> allVFModuleCustomizationUUIDs = ServiceVerificator.getAllVFModuleCustomizationUUIDs(serviceMetadata);
690
691         ResourceGeneralPage.clickCheckinButton(serviceMetadata.getName());
692         GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
693         GeneralPageElements.clickCheckoutButton();
694
695         serviceMetadata.setVersion("0.2");
696         assertTrue(ServiceVerificator.isEqualCustomizationUUIDsAfterChanges(allVFModuleCustomizationUUIDs, ServiceVerificator.getAllVFModuleCustomizationUUIDs(serviceMetadata)));
697
698         ResourceGeneralPage.clickSubmitForTestingButton(serviceMetadata.getName());
699
700         reloginWithNewRole(UserRoleEnum.TESTER);
701         GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
702         TesterOperationPage.certifyComponent(serviceMetadata.getName());
703
704         reloginWithNewRole(UserRoleEnum.DESIGNER);
705         GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
706         ResourceGeneralPage.clickCheckoutButton();
707
708         serviceMetadata.setVersion("1.1");
709         serviceMetadata.setUniqueId(null);
710         assertTrue(ServiceVerificator.isEqualCustomizationUUIDsAfterChanges(allVFModuleCustomizationUUIDs, ServiceVerificator.getAllVFModuleCustomizationUUIDs(serviceMetadata)));
711     }
712
713     @Test
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.");
724     }
725
726     @Test
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()));
736     }
737
738
739     public static synchronized String addResourceToServiceInCanvas(ResourceReqDetails resourceMetaData) throws Exception {
740         DeploymentArtifactPage.getLeftMenu().moveToCompositionScreen();
741         if (computeElement == null) {
742             computeElement = createCanvasElement(resourceMetaData);
743         }
744         CanvasManager.getCanvasManager().clickOnCanvaElement(computeElement);
745         return CompositionPage.getSelectedInstanceName();
746     }
747
748     private static synchronized CanvasElement createCanvasElement(ResourceReqDetails resourceMetaData) throws Exception {
749         CompositionPage.searchForElement(resourceMetaData.getName());
750         return CanvasManager.getCanvasManager().createElementOnCanvas(resourceMetaData.getName());
751     }
752
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);
761     }
762
763     @Override
764     protected UserRoleEnum getRole() {
765         return UserRoleEnum.DESIGNER;
766     }
767
768 }