[SDC] rebase 1710 code
[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 static org.testng.AssertJUnit.assertTrue;
24
25 import java.awt.AWTException;
26 import java.io.File;
27 import java.util.Arrays;
28 import java.util.List;
29
30 import org.openecomp.sdc.be.dao.api.ActionStatus;
31 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
32 import org.openecomp.sdc.be.model.LifecycleStateEnum;
33 import org.openecomp.sdc.ci.tests.datatypes.ArtifactInfo;
34 import org.openecomp.sdc.ci.tests.datatypes.TopMenuButtonsEnum;
35 import org.openecomp.sdc.ci.tests.datatypes.CanvasElement;
36 import org.openecomp.sdc.ci.tests.datatypes.CanvasManager;
37 import org.openecomp.sdc.ci.tests.datatypes.DataTestIdEnum;
38 import org.openecomp.sdc.ci.tests.datatypes.DataTestIdEnum.CompositionScreenEnum;
39 import org.openecomp.sdc.ci.tests.datatypes.DataTestIdEnum.ServiceMetadataEnum;
40 import org.openecomp.sdc.ci.tests.datatypes.LifeCycleStateEnum;
41 import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails;
42 import org.openecomp.sdc.ci.tests.datatypes.ServiceReqDetails;
43 import org.openecomp.sdc.ci.tests.datatypes.enums.ArtifactTypeEnum;
44 import org.openecomp.sdc.ci.tests.datatypes.enums.NormativeTypesEnum;
45 import org.openecomp.sdc.ci.tests.datatypes.enums.ResourceCategoryEnum;
46 import org.openecomp.sdc.ci.tests.datatypes.enums.ServiceCategoriesEnum;
47 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
48 import org.openecomp.sdc.ci.tests.execute.setup.SetupCDTest;
49 import org.openecomp.sdc.ci.tests.pages.CompositionPage;
50 import org.openecomp.sdc.ci.tests.pages.DeploymentArtifactPage;
51 import org.openecomp.sdc.ci.tests.pages.DeploymentPage;
52 import org.openecomp.sdc.ci.tests.pages.GeneralPageElements;
53 import org.openecomp.sdc.ci.tests.pages.InputsPage;
54 import org.openecomp.sdc.ci.tests.pages.ResourceGeneralPage;
55 import org.openecomp.sdc.ci.tests.pages.ServiceGeneralPage;
56 import org.openecomp.sdc.ci.tests.pages.TesterOperationPage;
57 import org.openecomp.sdc.ci.tests.utilities.ArtifactUIUtils;
58 import org.openecomp.sdc.ci.tests.utilities.CatalogUIUtilitis;
59 import org.openecomp.sdc.ci.tests.utilities.FileHandling;
60 import org.openecomp.sdc.ci.tests.utilities.GeneralUIUtils;
61 import org.openecomp.sdc.ci.tests.utilities.ResourceUIUtils;
62 import org.openecomp.sdc.ci.tests.utilities.ServiceUIUtils;
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.SkipException;
73 import org.testng.TestException;
74 import org.testng.annotations.BeforeMethod;
75 import org.testng.annotations.Test;
76
77 import com.aventstack.extentreports.Status;
78
79 public class Service extends SetupCDTest {
80         
81         private static final String DESCRIPTION = "kuku";
82         private static final String ARTIFACT_LABEL = "artifact3";
83         private static final String ARTIFACT_LABEL_UPDATE = "artifactUpdate";
84         private static final String GET_ARTIFACT_LIST_BY_CLASS_NAME = "i-sdc-designer-sidebar-section-content-item-artifact";
85         private static final String HEAT_FILE_YAML_NAME = "Heat-File.yaml";
86         private static final String HEAT_FILE_YAML_UPDATE_NAME = "Heat-File-Update.yaml";
87         private String filePath;
88         
89         @BeforeMethod
90         public void beforeTest(){
91                 filePath = FileHandling.getFilePath("");
92         }
93
94         
95         @Test
96         public void createService() throws Exception {          
97                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
98                 ServiceUIUtils.createService(serviceMetadata, getUser());       
99         }
100         
101         @Test
102         public void validDefaultContactAndTagAfterCreateService() throws Exception{
103                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
104                 ServiceUIUtils.createServiceWithDefaultTagAndUserId(serviceMetadata, getUser());
105                 
106                 assertTrue("wrong userId", getUser().getUserId().equals(ResourceGeneralPage.getContactIdText()));
107                 
108                 List<String> actualTags = Arrays.asList(ServiceGeneralPage.getTags());
109                 assertTrue("wrong tags", (actualTags.size() == 1) && actualTags.get(0).equals(serviceMetadata.getName()));
110         }
111         
112         @Test
113         public void updateService() throws Exception {
114                 // Create Service
115                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
116                 ServiceUIUtils.createService(serviceMetadata, getUser());
117                 
118         // Update Service
119                 ServiceGeneralPage.deleteOldTags(serviceMetadata);
120                 serviceMetadata.setName("ciUpdatedNameSanity");
121                 serviceMetadata.setDescription("updatedDescriptionSanity");
122                 serviceMetadata.setProjectCode("654321");
123                 serviceMetadata.setContactId("cs6543");
124                 serviceMetadata.getTags().addAll(Arrays.asList("updatedTag", "oneMoreUpdatedTag", "lastOne UpdatedTag"));
125                 ServiceUIUtils.setServiceCategory(serviceMetadata, ServiceCategoriesEnum.VOIP);
126                 ServiceUIUtils.fillServiceGeneralPage(serviceMetadata, getUser());
127                 GeneralPageElements.clickCreateButton();
128                 
129                 ServiceVerificator.verifyServiceUpdatedInUI(serviceMetadata);   
130         }
131         
132         @Test
133         public void deleteService() throws Exception {
134                 
135                 // create service
136                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
137                 ServiceUIUtils.createService(serviceMetadata, getUser());
138                 
139                 // Delete service
140                 //GeneralUIUtils.HighlightMyElement(GeneralUIUtils.getWebButton("delete_version"));
141                 GeneralPageElements.clickTrashButtonAndConfirm();
142                 
143                 // Verification
144                 CatalogUIUtilitis.clickTopMenuButton(TopMenuButtonsEnum.CATALOG);
145                 CatalogUIUtilitis.catalogSearchBox(serviceMetadata.getName());
146                 ServiceVerificator.verifyServiceDeletedInUI(serviceMetadata);   
147         }
148         
149         @Test
150         public void checkoutServiceTest() throws Exception{
151                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
152                 ServiceUIUtils.createService(serviceMetadata, getUser());
153                 
154         ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
155                 
156                 ArtifactInfo artifact = new ArtifactInfo(filePath, HEAT_FILE_YAML_NAME, DESCRIPTION, ARTIFACT_LABEL,"OTHER");
157                 CompositionPage.showDeploymentArtifactTab();
158                 CompositionPage.clickAddArtifactButton();
159                 ArtifactUIUtils.fillAndAddNewArtifactParameters(artifact, CompositionPage.artifactPopup());
160                 
161                 ResourceGeneralPage.clickCheckinButton(serviceMetadata.getName());
162                 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
163                 GeneralPageElements.clickCheckoutButton();
164                 
165                 serviceMetadata.setVersion("0.2");
166                 ServiceVerificator.verifyServiceLifecycle(serviceMetadata, getUser(), LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
167                 VfVerificator.verifyVfLifecycleInUI(LifeCycleStateEnum.CHECKOUT);
168                 ServiceVerificator.verifyVersionUI(serviceMetadata.getVersion());
169                 
170                 ResourceGeneralPage.clickSubmitForTestingButton(serviceMetadata.getName());
171                 
172                 reloginWithNewRole(UserRoleEnum.TESTER);
173                 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
174                 TesterOperationPage.certifyComponent(serviceMetadata.getName());
175                 
176                 reloginWithNewRole(UserRoleEnum.DESIGNER);
177                 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
178                 ResourceGeneralPage.clickCheckoutButton();
179                 
180                 serviceMetadata.setVersion("1.1");
181                 serviceMetadata.setUniqueId(null);
182                 ServiceVerificator.verifyServiceLifecycle(serviceMetadata, getUser(), LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
183                 VfVerificator.verifyVfLifecycleInUI(LifeCycleStateEnum.CHECKOUT);
184                 ServiceVerificator.verifyVersionUI(serviceMetadata.getVersion());
185         }
186         
187         @Test
188         public void submitServiceForTestingWithNonCertifiedAsset() throws Exception{
189
190                 ResourceReqDetails atomicResourceMetaData = ElementFactory.getDefaultResourceByTypeNormTypeAndCatregory(ResourceTypeEnum.VF, NormativeTypesEnum.ROOT, ResourceCategoryEnum.NETWORK_L2_3_ROUTERS, getUser());
191                 ResourceUIUtils.createResource(atomicResourceMetaData, getUser());
192                 ResourceGeneralPage.clickSubmitForTestingButton(atomicResourceMetaData.getName());
193                 
194                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
195                 ServiceUIUtils.createService(serviceMetadata, getUser());
196                 DeploymentArtifactPage.getLeftMenu().moveToCompositionScreen();
197                 CanvasManager canvasManager = CanvasManager.getCanvasManager();
198                 CompositionPage.searchForElement(atomicResourceMetaData.getName());
199                 canvasManager.createElementOnCanvas(atomicResourceMetaData.getName());
200                 
201                 try{
202                         CompositionPage.clickSubmitForTestingButton(serviceMetadata.getName());
203                         assert(false);
204                 }
205                 catch(Exception e){
206                         String errorMessage = GeneralUIUtils.getWebElementByClassName("w-sdc-modal-caption").getText();
207                         String checkUIResponseOnError = ErrorValidationUtils.checkUIResponseOnError(ActionStatus.VALIDATED_RESOURCE_NOT_FOUND.name());
208                         assertTrue(errorMessage.contains(checkUIResponseOnError));      
209                 }
210                 finally{
211                         ResourceRestUtils.deleteResourceByNameAndVersion(atomicResourceMetaData.getName(), "0.1");
212                 }
213                 
214         }
215         
216         @Test
217         public void addDeploymentArtifactInCompositionScreenTest() throws Exception{
218                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
219                 ServiceUIUtils.createService(serviceMetadata, getUser());
220                 
221                 ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
222                 ArtifactInfo artifact = new ArtifactInfo(filePath, HEAT_FILE_YAML_NAME, DESCRIPTION, ARTIFACT_LABEL,"OTHER");
223                 CompositionPage.showDeploymentArtifactTab();
224                 CompositionPage.clickAddArtifactButton();
225                 ArtifactUIUtils.fillAndAddNewArtifactParameters(artifact, CompositionPage.artifactPopup());
226                 
227                 List<WebElement> actualArtifactList = GeneralUIUtils.getWebElementsListBy(By.className(GET_ARTIFACT_LIST_BY_CLASS_NAME));
228                 AssertJUnit.assertEquals(1, actualArtifactList.size());
229                 
230                 for(WebElement actualArtifactFileName : CompositionPage.getAllAddedArtifacts()){
231                         assertTrue(HEAT_FILE_YAML_NAME.equals(actualArtifactFileName.getText()));
232                 }                               
233                 
234         }
235         
236         @Test
237         public void addInformationArtifactInCompositionScreenTest() throws Exception{
238                 String fileName        = HEAT_FILE_YAML_NAME;
239                 String descriptionText = DESCRIPTION;
240                 
241                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
242                 ServiceUIUtils.createService(serviceMetadata, getUser());
243                 
244                 ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
245                 ArtifactInfo artifactInfo = new ArtifactInfo(filePath, fileName, descriptionText, ARTIFACT_LABEL,"OTHER");
246                 CompositionPage.showInformationArtifactTab();
247                 List<WebElement> beforeArtifactList = GeneralUIUtils.getWebElementsListBy(By.className(GET_ARTIFACT_LIST_BY_CLASS_NAME));
248                 CompositionPage.clickAddArtifactButton();
249                 ArtifactUIUtils.fillAndAddNewArtifactParameters(artifactInfo, CompositionPage.artifactPopup());
250                 
251                 List<WebElement> actualArtifactList = GeneralUIUtils.getWebElementsListBy(By.className(GET_ARTIFACT_LIST_BY_CLASS_NAME));
252                 assertTrue(String.format("Wrong number of artifacts, Expected: %s Actual: %s", beforeArtifactList.size() + 1, actualArtifactList.size()),
253                                                                                                   (beforeArtifactList.size() + 1) == actualArtifactList.size());
254                 for(DataTestIdEnum.InformationalArtifactsService artifact: DataTestIdEnum.InformationalArtifactsService.values()){
255                         ArtifactUIUtils.fillPlaceHolderInformationalArtifact(artifact, filePath, fileName, descriptionText);
256                 }
257             int numberOfFiles = CompositionPage.getAllAddedArtifacts().size();
258             assertTrue(String.format("Wrong number of artifacts, Expected: %s Actual: %s", (beforeArtifactList.size() + 1), numberOfFiles), (beforeArtifactList.size() + 1) == numberOfFiles);
259             
260             for(WebElement actualArtifactFileName : CompositionPage.getAllAddedArtifacts()){
261                         assertTrue(fileName.equals(actualArtifactFileName.getText()));
262                 }
263             
264         }
265         
266         @Test
267         public void addAPIArtifactInCompositionScreenTest() throws Exception{
268                 
269                 if(true){
270                         throw new SkipException("Open bug 292017");                     
271                 }
272                 
273                 String fileName        = HEAT_FILE_YAML_NAME,
274                            descriptionText = DESCRIPTION,
275                        url             = "http://kuku.com";
276                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
277                 ServiceUIUtils.createService(serviceMetadata, getUser());
278                 
279                 ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
280                 ArtifactInfo artifactInfo = new ArtifactInfo(filePath, fileName, descriptionText, ARTIFACT_LABEL,"OTHER");
281                 CompositionPage.showAPIArtifactTab();
282
283                 for(DataTestIdEnum.APIArtifactsService artifact: DataTestIdEnum.APIArtifactsService.values()){
284                         ArtifactUIUtils.fillPlaceHolderAPIArtifact(artifact, filePath, fileName, descriptionText, url);
285                 }
286             int numberOfFiles = CompositionPage.getAllAddedArtifacts().size(),
287             numberOfPlacehoders = DataTestIdEnum.APIArtifactsService.values().length;
288             assertTrue(String.format("Wrong file count, should be %s files", numberOfPlacehoders), numberOfPlacehoders  == numberOfFiles);
289             
290             for(WebElement actualArtifactFileName : CompositionPage.getAllAddedArtifacts()){
291                         assertTrue(fileName.equals(actualArtifactFileName.getText()));
292                 }
293         }
294         
295         @Test
296         public void ManagmentWorkflowTest() throws Exception{           
297                 String descriptionText     = DESCRIPTION,
298                            descriptionTextEdit = "kuku2";
299
300                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
301                 ServiceUIUtils.createService(serviceMetadata, getUser());
302                 
303                 ServiceGeneralPage.getServiceLeftMenu().moveToManagmentWorkflow();
304                 ServiceGeneralPage.fillAndAddNewWorkflow(descriptionText, descriptionText);
305                 ServiceVerificator.verifyManagmentWorkflow(descriptionText, descriptionText);
306                 
307                 ServiceGeneralPage.clickAddWorkflow();
308                 ServiceGeneralPage.fillAndAddNewWorkflow(descriptionTextEdit, descriptionTextEdit);
309         }
310         
311         @Test
312         public void deleteChangeVersionTest() throws Exception{
313                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
314                 ServiceUIUtils.createService(serviceMetadata, getUser());
315                 
316         ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
317                 
318                 ArtifactInfo artifact = new ArtifactInfo(filePath, HEAT_FILE_YAML_NAME, DESCRIPTION, ARTIFACT_LABEL,"OTHER");
319                 CompositionPage.showDeploymentArtifactTab();
320                 CompositionPage.clickAddArtifactButton();
321                 ArtifactUIUtils.fillAndAddNewArtifactParameters(artifact, CompositionPage.artifactPopup());
322                 
323                 ResourceGeneralPage.clickCheckinButton(serviceMetadata.getName());
324                 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
325                 GeneralPageElements.clickCheckoutButton();
326                 
327                 changeDeleteAndValidateVersionOnGeneralPage("0.1", "0.2", serviceMetadata.getName());
328                 
329                 GeneralPageElements.clickCheckoutButton();              
330                 ResourceGeneralPage.clickSubmitForTestingButton(serviceMetadata.getName());
331                 
332                 reloginWithNewRole(UserRoleEnum.TESTER);
333                 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
334                 TesterOperationPage.certifyComponent(serviceMetadata.getName());
335                 
336                 reloginWithNewRole(UserRoleEnum.DESIGNER);
337                 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
338                 ResourceGeneralPage.clickCheckoutButton();
339                 
340                 changeDeleteAndValidateVersionOnGeneralPage("1.0", "1.1", serviceMetadata.getName());
341         }
342         
343         @Test
344         public void compositionScreenRightSideButtonsTest() throws Exception{
345                 
346                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
347                 ServiceUIUtils.createService(serviceMetadata, getUser());
348                 
349                 ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
350                 
351                 CompositionPage.showInformationTab();
352                 ServiceVerificator.verifyOpenTabTitle(CompositionScreenEnum.INFORMATION);
353                 
354                 //feature removed from UI
355 //              CompositionPage.showCompositionTab();
356 //              ServiceVerificator.verifyOpenTabTitle(CompositionScreenEnum.COMPOSITION);
357                 
358                 CompositionPage.showDeploymentArtifactTab();
359                 ServiceVerificator.verifyOpenTabTitle(CompositionScreenEnum.DEPLOYMENT_ARTIFACT_TAB);
360                 
361                 CompositionPage.showInputsTab();
362                 assertTrue(CompositionPage.getOpenTabTitle().size() == 0);                              
363                 
364                 CompositionPage.showAPIArtifactTab();
365                 ServiceVerificator.verifyOpenTabTitle(CompositionScreenEnum.API);
366                 
367                 CompositionPage.showInformationArtifactTab();
368                 ServiceVerificator.verifyOpenTabTitle(CompositionScreenEnum.INFORMATION_ARTIFACTS);
369                 
370         }
371         
372         @Test
373         public void addDeploymentArtifactToVFInstanceTest() throws Exception{
374                 
375                 ResourceReqDetails atomicResourceMetaData = ElementFactory.getDefaultResourceByTypeNormTypeAndCatregory(ResourceTypeEnum.VF, NormativeTypesEnum.ROOT, ResourceCategoryEnum.NETWORK_L2_3_ROUTERS, getUser());
376                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
377                 ArtifactInfo artifact = new ArtifactInfo(filePath, HEAT_FILE_YAML_NAME, DESCRIPTION, ARTIFACT_LABEL,ArtifactTypeEnum.SNMP_POLL.getType());
378                 
379                 CanvasElement computeElement = createServiceWithRiArtifact(atomicResourceMetaData, serviceMetadata, artifact);
380                 checkArtifactIfAdded(1, HEAT_FILE_YAML_NAME);
381                 checkInService(serviceMetadata);
382                 clickOncanvasElement(computeElement);
383                 CompositionPage.showDeploymentArtifactTab();
384                 checkArtifactIfAdded(1, HEAT_FILE_YAML_NAME);                           
385         }
386
387         @Test
388         public void deleteDeploymentArtifactFromVFInstanceTest() throws Exception{
389                 
390                 ResourceReqDetails atomicResourceMetaData = ElementFactory.getDefaultResourceByTypeNormTypeAndCatregory(ResourceTypeEnum.VF, NormativeTypesEnum.ROOT, ResourceCategoryEnum.NETWORK_L2_3_ROUTERS, getUser());
391                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
392                 ArtifactInfo artifact = new ArtifactInfo(filePath, HEAT_FILE_YAML_NAME, DESCRIPTION, ARTIFACT_LABEL,ArtifactTypeEnum.SNMP_POLL.getType());
393                 
394                 CanvasElement computeElement = createServiceWithRiArtifact(atomicResourceMetaData, serviceMetadata, artifact);
395                 checkArtifactIfAdded(1, HEAT_FILE_YAML_NAME);
396                 List<WebElement> actualArtifactList = GeneralUIUtils.getWebElementsListBy(By.className(GET_ARTIFACT_LIST_BY_CLASS_NAME));
397                 deleteAndVerifyArtifact(actualArtifactList);
398                 
399         }
400         
401         @Test
402         public void deleteDeploymentArtifactFromVFInstanceNextVersionTest() throws Exception{
403                 
404                 ResourceReqDetails atomicResourceMetaData = ElementFactory.getDefaultResourceByTypeNormTypeAndCatregory(ResourceTypeEnum.VF, NormativeTypesEnum.ROOT, ResourceCategoryEnum.NETWORK_L2_3_ROUTERS, getUser());
405                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
406                 ArtifactInfo artifact = new ArtifactInfo(filePath, HEAT_FILE_YAML_NAME, DESCRIPTION, ARTIFACT_LABEL,ArtifactTypeEnum.SNMP_POLL.getType());
407                 
408                 CanvasElement computeElement = createServiceWithRiArtifact(atomicResourceMetaData, serviceMetadata, artifact);
409                 checkArtifactIfAdded(1, HEAT_FILE_YAML_NAME);
410                 checkInService(serviceMetadata);
411                 ResourceGeneralPage.clickCheckoutButton();
412                 clickOncanvasElement(computeElement);
413                 CompositionPage.showDeploymentArtifactTab();
414                 List<WebElement> actualArtifactList = GeneralUIUtils.getWebElementsListBy(By.className(GET_ARTIFACT_LIST_BY_CLASS_NAME));
415                 deleteAndVerifyArtifact(actualArtifactList);
416 //              change container version
417                 GeneralUIUtils.clickOnElementByTestId(DataTestIdEnum.GeneralElementsEnum.VERSION_HEADER.getValue());
418                 GeneralPageElements.selectVersion("V0.1");
419                 clickOncanvasElement(computeElement);
420                 CompositionPage.showDeploymentArtifactTab();
421                 checkArtifactIfAdded(1, HEAT_FILE_YAML_NAME);
422                 
423         }
424
425 //      service version V0.1 default artifact, service version V0.2 updated artifact    
426         @Test
427         public void updateDeploymentArtifactOnVFInstanceNextVersionTest() throws Exception{
428                 
429                 ResourceReqDetails atomicResourceMetaData = ElementFactory.getDefaultResourceByTypeNormTypeAndCatregory(ResourceTypeEnum.VF, NormativeTypesEnum.ROOT, ResourceCategoryEnum.NETWORK_L2_3_ROUTERS, getUser());
430                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
431                 ArtifactInfo artifact = new ArtifactInfo(filePath, HEAT_FILE_YAML_NAME, DESCRIPTION, ARTIFACT_LABEL,ArtifactTypeEnum.SNMP_POLL.getType());
432                 ArtifactInfo artifactUpdate = new ArtifactInfo(filePath, HEAT_FILE_YAML_UPDATE_NAME, DESCRIPTION, ARTIFACT_LABEL_UPDATE,ArtifactTypeEnum.DCAE_INVENTORY_DOC.getType());
433                 
434                 CanvasElement computeElement = createServiceWithRiArtifact(atomicResourceMetaData, serviceMetadata, artifact);
435                 checkArtifactIfAdded(1, HEAT_FILE_YAML_NAME);
436                 checkInService(serviceMetadata);
437                 ResourceGeneralPage.clickCheckoutButton();
438                 clickOncanvasElement(computeElement);
439                 CompositionPage.showDeploymentArtifactTab();
440                 List<WebElement> actualArtifactList = GeneralUIUtils.getWebElementsListBy(By.className(GET_ARTIFACT_LIST_BY_CLASS_NAME));
441                 deleteAndVerifyArtifact(actualArtifactList);
442 //              upload new artifact
443                 addDeploymentArtifact(artifactUpdate, CanvasManager.getCanvasManager(), computeElement);
444                 checkArtifactIfAdded(1, HEAT_FILE_YAML_UPDATE_NAME);
445 //              change container version
446                 GeneralUIUtils.clickOnElementByTestId(DataTestIdEnum.GeneralElementsEnum.VERSION_HEADER.getValue());
447                 GeneralPageElements.selectVersion("V0.1");
448                 clickOncanvasElement(computeElement);
449                 CompositionPage.showDeploymentArtifactTab();
450                 checkArtifactIfAdded(1, HEAT_FILE_YAML_NAME);
451                 
452         }
453         
454         public void clickOncanvasElement(CanvasElement computeElement) {
455                 CanvasManager canvasManager = CanvasManager.getCanvasManager();
456                 canvasManager.clickOnCanvaElement(computeElement);
457         }
458
459         public void checkInService(ServiceReqDetails serviceMetadata) throws Exception {
460                 ResourceGeneralPage.clickCheckinButton(serviceMetadata.getName());
461                 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
462                 DeploymentArtifactPage.getLeftMenu().moveToCompositionScreen();
463         }
464
465         public static void deleteAndVerifyArtifact(List<WebElement> actualArtifactList) {
466                 if (actualArtifactList.size()>0){
467                         GeneralUIUtils.hoverOnAreaByTestId(DataTestIdEnum.DeploymentArtifactCompositionRightMenu.ARTIFACT_ITEM.getValue() + ARTIFACT_LABEL);
468                         SetupCDTest.getExtendTest().log(Status.INFO, "Going to delete "  +  HEAT_FILE_YAML_NAME + " artifact" + " and check if deleted");
469                         GeneralUIUtils.clickOnElementByTestId(DataTestIdEnum.DeploymentArtifactCompositionRightMenu.DELETE.getValue() + ARTIFACT_LABEL);
470                         GeneralUIUtils.clickOnElementByTestId(DataTestIdEnum.ModalItems.OK.getValue());
471                         assertTrue("Artifact does not deleted", !GeneralUIUtils.waitForElementInVisibilityByTestId(By.className(GET_ARTIFACT_LIST_BY_CLASS_NAME)));
472                 }
473         }
474
475
476         public void checkArtifactIfAdded(Integer expectedNumOfARtifacts, String expectedArtifactName) {
477                 
478                 List<WebElement> actualArtifactList;
479                 actualArtifactList = GeneralUIUtils.getWebElementsListBy(By.className(GET_ARTIFACT_LIST_BY_CLASS_NAME));
480                 assertTrue("Expected artifact count is: " + expectedNumOfARtifacts + ", but was " + actualArtifactList.size(),expectedNumOfARtifacts==actualArtifactList.size());
481                 
482                 if(expectedNumOfARtifacts != 0){
483                         for(WebElement actualArtifactFileName : CompositionPage.getAllAddedArtifacts()){
484                                 assertTrue("Artifact name does not match, expected " + expectedArtifactName + ", but was " + actualArtifactFileName.getText(), expectedArtifactName.equals(actualArtifactFileName.getText()));
485                         }
486                 }
487                 
488         }
489
490
491         public CanvasElement createServiceWithRiArtifact(ResourceReqDetails atomicResourceMetaData, ServiceReqDetails serviceMetadata, ArtifactInfo artifact) throws Exception, AWTException {
492                 ResourceUIUtils.createResource(atomicResourceMetaData, getUser());
493                 ResourceGeneralPage.clickSubmitForTestingButton(atomicResourceMetaData.getName());
494                 
495                 ServiceUIUtils.createService(serviceMetadata, getUser());
496                 
497                 DeploymentArtifactPage.getLeftMenu().moveToCompositionScreen();
498                 CanvasManager canvasManager = CanvasManager.getCanvasManager();
499                 CompositionPage.searchForElement(atomicResourceMetaData.getName());
500                 CanvasElement computeElement = canvasManager.createElementOnCanvas(atomicResourceMetaData.getName());
501                 addDeploymentArtifact(artifact, canvasManager, computeElement);
502                 
503                 return computeElement;
504         }
505
506
507         public void addDeploymentArtifact(ArtifactInfo artifact, CanvasManager canvasManager, CanvasElement computeElement) throws Exception {
508                 canvasManager.clickOnCanvaElement(computeElement);
509                 CompositionPage.showDeploymentArtifactTab();
510                 CompositionPage.clickAddArtifactButton();
511                 ArtifactUIUtils.fillAndAddNewArtifactParameters(artifact, CompositionPage.artifactPopup());
512         }
513         
514         @Test
515         public void isDisabledAndReadOnlyInCheckin() throws Exception{
516                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
517                 ServiceUIUtils.createService(serviceMetadata, getUser());
518                 GeneralPageElements.clickCheckinButton(serviceMetadata.getName());
519                 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
520                 
521                 ServiceMetadataEnum[] fieldsForCheck = {ServiceMetadataEnum.SERVICE_NAME,
522                                                         ServiceMetadataEnum.CONTACT_ID,
523                                                         ServiceMetadataEnum.DESCRIPTION,
524                                                         ServiceMetadataEnum.PROJECT_CODE,
525                                                         ServiceMetadataEnum.TAGS};
526                 for (ServiceMetadataEnum field: fieldsForCheck){
527                         assertTrue(GeneralUIUtils.isElementReadOnly(field.getValue()));
528                 }
529                 
530                 assertTrue(GeneralUIUtils.isElementDisabled(ServiceMetadataEnum.CATEGORY.getValue()));
531                 assertTrue(GeneralUIUtils.isElementDisabled(DataTestIdEnum.LifeCyleChangeButtons.CREATE.getValue()));
532         }
533         
534         // future removed from ui
535     @Test(enabled = false)
536         public void inputsTest() throws Exception{
537                 String fileName = "service_input_test_VF2.csar";
538                 
539                 ResourceReqDetails resourceMetaData = ElementFactory.getDefaultResourceByType(ResourceTypeEnum.VF, getUser());          
540                 ResourceUIUtils.importVfFromCsar(resourceMetaData, filePath, fileName, getUser());
541                 GeneralPageElements.clickCheckinButton(resourceMetaData.getName());
542                 
543                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
544                 ServiceUIUtils.createService(serviceMetadata, getUser());
545                 
546                 String selectedInstanceName = addResourceToServiceInCanvas(resourceMetaData);
547                 
548                 GeneralUIUtils.clickOnElementByTestId("breadcrumbs-button-1");
549                 DeploymentArtifactPage.getLeftMenu().moveToInputsScreen();
550                 
551                 InputsPage.addInputToService(selectedInstanceName, "volume_id");
552                 InputsPage.deleteServiceInput(selectedInstanceName, "volume_id");
553                 
554                 // Trying to find deleted service input
555                 try{
556                         InputsPage.getServiceInput(selectedInstanceName, "volume_id");
557                         assert(false);
558                 }
559                 catch(TestException e){ 
560                 }
561         }
562         
563         @Test
564         public void deploymentViewServiceTest() throws Exception{                               
565                 String fileName2 = "vSeGW.csar";
566                 
567                 ResourceReqDetails resourceMetaData = ElementFactory.getDefaultResourceByType("ciRes", NormativeTypesEnum.ROOT, ResourceCategoryEnum.APPLICATION_L4_DATABASE, getUser().getUserId(), ResourceTypeEnum.VF.toString());
568                 ResourceUIUtils.importVfFromCsar(resourceMetaData, filePath, fileName2, getUser());
569                 ResourceGeneralPage.clickCheckinButton(resourceMetaData.getName());
570                 
571                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
572                 ServiceUIUtils.createService(serviceMetadata, getUser());
573                 
574                 addResourceToServiceInCanvas(resourceMetaData);
575         
576                 GeneralUIUtils.clickOnElementByTestId("breadcrumbs-button-1");
577                 DeploymentArtifactPage.getLeftMenu().moveToDeploymentViewScreen();
578                 
579                 serviceMetadata.setVersion("0.1");
580                 List<WebElement> instanceRowsFromTable = GeneralUIUtils.getElementsByCSS("div[data-tests-id^='hierarchy-instance'] span[class^='expand-collapse-title-text']");
581                 for(WebElement instanceRow: instanceRowsFromTable){
582                         String instanceRowText = instanceRow.getText();
583                         List<WebElement> instanceModulesList = DeploymentPage.getInstanceModulesList(instanceRowText);
584                         for (WebElement instanceModule: instanceModulesList){
585                                 String instanceModuleText = instanceModule.getText();
586                                 ResourceUIUtils.clickOnElementByText(instanceModuleText, "instance");
587                                                                 
588                                 ServiceVerificator.verifyDeploymentPageSubElements(instanceModuleText.split("\\.\\.")[2], new DeploymentViewVerificator(filePath + fileName2));
589                                 
590                                 ServiceVerificator.verifyDisabledServiceProperties();
591                                 String isBaseValue = ServiceVerificator.getVFModulePropertieValue(serviceMetadata, "isBase", instanceModuleText);
592                                 if (isBaseValue.equals("false"))
593                                         ServiceVerificator.verifyEnabledServiceProperties();
594                                 
595                                 ResourceUIUtils.clickOnElementByText(instanceModuleText, "instance");
596                         }                                                                                               
597                 }                       
598         }
599         
600         @Test
601         public void vfModuleCustomizationUUIDServiceTest() throws Exception{
602                 String fileName2 = "vSeGW.csar";
603                 ResourceReqDetails resourceMetaData = ElementFactory.getDefaultResourceByType("ciRes", NormativeTypesEnum.ROOT, ResourceCategoryEnum.APPLICATION_L4_DATABASE, getUser().getUserId(), ResourceTypeEnum.VF.toString());
604                 ResourceUIUtils.importVfFromCsar(resourceMetaData, filePath, fileName2, getUser());
605                 ResourceGeneralPage.clickCheckinButton(resourceMetaData.getName());
606                 
607                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
608                 ServiceUIUtils.createService(serviceMetadata, getUser());
609                 
610                 addResourceToServiceInCanvas(resourceMetaData);
611             
612                 serviceMetadata.setVersion("0.1");
613                 ServiceVerificator.verifyVFModuleCustomizationUUID(serviceMetadata);            
614         }
615         
616         @Test
617         public void checkoutCertifyRemainSameCustomizationUUIDServiceTest() throws Exception{
618                 String fileName2 = "vSeGW.csar";
619                 ResourceReqDetails resourceMetaData = ElementFactory.getDefaultResourceByType("ciRes", NormativeTypesEnum.ROOT, ResourceCategoryEnum.APPLICATION_L4_DATABASE, getUser().getUserId(), ResourceTypeEnum.VF.toString());
620                 ResourceUIUtils.importVfFromCsar(resourceMetaData, filePath, fileName2, getUser());
621                 ResourceGeneralPage.clickSubmitForTestingButton(resourceMetaData.getName());
622                 
623                 reloginWithNewRole(UserRoleEnum.TESTER);
624                 GeneralUIUtils.findComponentAndClick(resourceMetaData.getName());
625                 TesterOperationPage.certifyComponent(resourceMetaData.getName());
626                 
627                 reloginWithNewRole(UserRoleEnum.DESIGNER);
628                 
629                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
630                 ServiceUIUtils.createService(serviceMetadata, getUser());
631                 
632                 addResourceToServiceInCanvas(resourceMetaData);
633             
634                 serviceMetadata.setVersion("0.1");
635                 ServiceVerificator.verifyVFModuleCustomizationUUID(serviceMetadata);
636                 List<String> allVFModuleCustomizationUUIDs = ServiceVerificator.getAllVFModuleCustomizationUUIDs(serviceMetadata);
637                 
638                 ResourceGeneralPage.clickCheckinButton(serviceMetadata.getName());
639                 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
640                 GeneralPageElements.clickCheckoutButton();
641                 
642                 serviceMetadata.setVersion("0.2");
643                 assertTrue(ServiceVerificator.isEqualCustomizationUUIDsAfterChanges(allVFModuleCustomizationUUIDs, ServiceVerificator.getAllVFModuleCustomizationUUIDs(serviceMetadata)));
644                 
645                 ResourceGeneralPage.clickSubmitForTestingButton(serviceMetadata.getName());
646                 
647                 reloginWithNewRole(UserRoleEnum.TESTER);
648                 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
649                 TesterOperationPage.certifyComponent(serviceMetadata.getName());
650                 
651                 reloginWithNewRole(UserRoleEnum.DESIGNER);
652                 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
653                 ResourceGeneralPage.clickCheckoutButton();
654                 
655                 serviceMetadata.setVersion("1.1");
656                 serviceMetadata.setUniqueId(null);
657                 assertTrue(ServiceVerificator.isEqualCustomizationUUIDsAfterChanges(allVFModuleCustomizationUUIDs, ServiceVerificator.getAllVFModuleCustomizationUUIDs(serviceMetadata)));
658         }
659
660
661         public synchronized String addResourceToServiceInCanvas(ResourceReqDetails resourceMetaData) throws Exception {
662                 DeploymentArtifactPage.getLeftMenu().moveToCompositionScreen();
663                 CanvasManager canvasManager = CanvasManager.getCanvasManager();
664                 CompositionPage.searchForElement(resourceMetaData.getName());
665                 CanvasElement computeElement = canvasManager.createElementOnCanvas(resourceMetaData.getName());
666                 canvasManager.clickOnCanvaElement(computeElement);
667                 String selectedInstanceName = CompositionPage.getSelectedInstanceName();
668                 return selectedInstanceName;
669         }
670                 
671         public static void changeDeleteAndValidateVersionOnGeneralPage(String previousVersion, String currentVersion, String serviceName) throws Exception{
672                 GeneralPageElements.selectVersion("V" + previousVersion);
673                 ServiceVerificator.verifyVersionUI(previousVersion);
674                 GeneralUIUtils.clickJSOnElementByText("latest version");
675                 ServiceVerificator.verifyVersionUI(currentVersion);
676                 GeneralPageElements.clickTrashButtonAndConfirm();
677                 GeneralUIUtils.findComponentAndClick(serviceName);
678                 ServiceVerificator.verifyVersionUI(previousVersion);            
679         }       
680
681         @Override
682         protected UserRoleEnum getRole() {
683                 return UserRoleEnum.DESIGNER;
684         }
685
686 }