[sdc] update to the current code base
[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                 if(true){
391                         throw new SkipException("Open bug 300513");                     
392                 }
393                 
394                 ResourceReqDetails atomicResourceMetaData = ElementFactory.getDefaultResourceByTypeNormTypeAndCatregory(ResourceTypeEnum.VF, NormativeTypesEnum.ROOT, ResourceCategoryEnum.NETWORK_L2_3_ROUTERS, getUser());
395                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
396                 ArtifactInfo artifact = new ArtifactInfo(filePath, HEAT_FILE_YAML_NAME, DESCRIPTION, ARTIFACT_LABEL,ArtifactTypeEnum.SNMP_POLL.getType());
397                 
398                 CanvasElement computeElement = createServiceWithRiArtifact(atomicResourceMetaData, serviceMetadata, artifact);
399                 checkArtifactIfAdded(1, HEAT_FILE_YAML_NAME);
400                 List<WebElement> actualArtifactList = GeneralUIUtils.getWebElementsListBy(By.className(GET_ARTIFACT_LIST_BY_CLASS_NAME));
401                 deleteAndVerifyArtifact(actualArtifactList);
402                 
403         }
404         
405         @Test
406         public void deleteDeploymentArtifactFromVFInstanceNextVersionTest() throws Exception{
407                 
408                 if(true){
409                         throw new SkipException("Open bug 300513");                     
410                 }
411                 
412                 ResourceReqDetails atomicResourceMetaData = ElementFactory.getDefaultResourceByTypeNormTypeAndCatregory(ResourceTypeEnum.VF, NormativeTypesEnum.ROOT, ResourceCategoryEnum.NETWORK_L2_3_ROUTERS, getUser());
413                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
414                 ArtifactInfo artifact = new ArtifactInfo(filePath, HEAT_FILE_YAML_NAME, DESCRIPTION, ARTIFACT_LABEL,ArtifactTypeEnum.SNMP_POLL.getType());
415                 
416                 CanvasElement computeElement = createServiceWithRiArtifact(atomicResourceMetaData, serviceMetadata, artifact);
417                 checkArtifactIfAdded(1, HEAT_FILE_YAML_NAME);
418                 checkInService(serviceMetadata);
419                 ResourceGeneralPage.clickCheckoutButton();
420                 clickOncanvasElement(computeElement);
421                 CompositionPage.showDeploymentArtifactTab();
422                 List<WebElement> actualArtifactList = GeneralUIUtils.getWebElementsListBy(By.className(GET_ARTIFACT_LIST_BY_CLASS_NAME));
423                 deleteAndVerifyArtifact(actualArtifactList);
424 //              change container version
425                 GeneralUIUtils.clickOnElementByTestId(DataTestIdEnum.GeneralElementsEnum.VERSION_HEADER.getValue());
426                 GeneralPageElements.selectVersion("V0.1");
427                 clickOncanvasElement(computeElement);
428                 CompositionPage.showDeploymentArtifactTab();
429                 checkArtifactIfAdded(1, HEAT_FILE_YAML_NAME);
430                 
431         }
432
433 //      service version V0.1 default artifact, service version V0.2 updated artifact    
434         @Test
435         public void updateDeploymentArtifactOnVFInstanceNextVersionTest() throws Exception{
436                 
437                 if(true){
438                         throw new SkipException("Open bug 300513");                     
439                 }
440                 
441                 ResourceReqDetails atomicResourceMetaData = ElementFactory.getDefaultResourceByTypeNormTypeAndCatregory(ResourceTypeEnum.VF, NormativeTypesEnum.ROOT, ResourceCategoryEnum.NETWORK_L2_3_ROUTERS, getUser());
442                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
443                 ArtifactInfo artifact = new ArtifactInfo(filePath, HEAT_FILE_YAML_NAME, DESCRIPTION, ARTIFACT_LABEL,ArtifactTypeEnum.SNMP_POLL.getType());
444                 ArtifactInfo artifactUpdate = new ArtifactInfo(filePath, HEAT_FILE_YAML_UPDATE_NAME, DESCRIPTION, ARTIFACT_LABEL_UPDATE,ArtifactTypeEnum.DCAE_INVENTORY_DOC.getType());
445                 
446                 CanvasElement computeElement = createServiceWithRiArtifact(atomicResourceMetaData, serviceMetadata, artifact);
447                 checkArtifactIfAdded(1, HEAT_FILE_YAML_NAME);
448                 checkInService(serviceMetadata);
449                 ResourceGeneralPage.clickCheckoutButton();
450                 clickOncanvasElement(computeElement);
451                 CompositionPage.showDeploymentArtifactTab();
452                 List<WebElement> actualArtifactList = GeneralUIUtils.getWebElementsListBy(By.className(GET_ARTIFACT_LIST_BY_CLASS_NAME));
453                 deleteAndVerifyArtifact(actualArtifactList);
454 //              upload new artifact
455                 addDeploymentArtifact(artifactUpdate, CanvasManager.getCanvasManager(), computeElement);
456                 checkArtifactIfAdded(1, HEAT_FILE_YAML_UPDATE_NAME);
457 //              change container version
458                 GeneralUIUtils.clickOnElementByTestId(DataTestIdEnum.GeneralElementsEnum.VERSION_HEADER.getValue());
459                 GeneralPageElements.selectVersion("V0.1");
460                 clickOncanvasElement(computeElement);
461                 CompositionPage.showDeploymentArtifactTab();
462                 checkArtifactIfAdded(1, HEAT_FILE_YAML_NAME);
463                 
464         }
465         
466         public void clickOncanvasElement(CanvasElement computeElement) {
467                 CanvasManager canvasManager = CanvasManager.getCanvasManager();
468                 canvasManager.clickOnCanvaElement(computeElement);
469         }
470
471         public void checkInService(ServiceReqDetails serviceMetadata) throws Exception {
472                 ResourceGeneralPage.clickCheckinButton(serviceMetadata.getName());
473                 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
474                 DeploymentArtifactPage.getLeftMenu().moveToCompositionScreen();
475         }
476
477         public static void deleteAndVerifyArtifact(List<WebElement> actualArtifactList) {
478                 if (actualArtifactList.size()>0){
479                         GeneralUIUtils.hoverOnAreaByTestId(DataTestIdEnum.DeploymentArtifactCompositionRightMenu.ARTIFACT_ITEM.getValue() + ARTIFACT_LABEL);
480                         SetupCDTest.getExtendTest().log(Status.INFO, "Going to delete "  +  HEAT_FILE_YAML_NAME + " artifact" + " and check if deleted");
481                         GeneralUIUtils.clickOnElementByTestId(DataTestIdEnum.DeploymentArtifactCompositionRightMenu.DELETE.getValue() + ARTIFACT_LABEL);
482                         GeneralUIUtils.clickOnElementByTestId(DataTestIdEnum.ModalItems.OK.getValue());
483                         assertTrue("Artifact does not deleted", !GeneralUIUtils.waitForElementInVisibilityByTestId(By.className(GET_ARTIFACT_LIST_BY_CLASS_NAME)));
484                 }
485         }
486
487
488         public void checkArtifactIfAdded(Integer expectedNumOfARtifacts, String expectedArtifactName) {
489                 
490                 List<WebElement> actualArtifactList;
491                 actualArtifactList = GeneralUIUtils.getWebElementsListBy(By.className(GET_ARTIFACT_LIST_BY_CLASS_NAME));
492                 assertTrue("Expected artifact count is: " + expectedNumOfARtifacts + ", but was " + actualArtifactList.size(),expectedNumOfARtifacts==actualArtifactList.size());
493                 
494                 if(expectedNumOfARtifacts != 0){
495                         for(WebElement actualArtifactFileName : CompositionPage.getAllAddedArtifacts()){
496                                 assertTrue("Artifact name does not match, expected " + expectedArtifactName + ", but was " + actualArtifactFileName.getText(), expectedArtifactName.equals(actualArtifactFileName.getText()));
497                         }
498                 }
499                 
500         }
501
502
503         public CanvasElement createServiceWithRiArtifact(ResourceReqDetails atomicResourceMetaData, ServiceReqDetails serviceMetadata, ArtifactInfo artifact) throws Exception, AWTException {
504                 ResourceUIUtils.createResource(atomicResourceMetaData, getUser());
505                 ResourceGeneralPage.clickSubmitForTestingButton(atomicResourceMetaData.getName());
506                 
507                 ServiceUIUtils.createService(serviceMetadata, getUser());
508                 
509                 DeploymentArtifactPage.getLeftMenu().moveToCompositionScreen();
510                 CanvasManager canvasManager = CanvasManager.getCanvasManager();
511                 CompositionPage.searchForElement(atomicResourceMetaData.getName());
512                 CanvasElement computeElement = canvasManager.createElementOnCanvas(atomicResourceMetaData.getName());
513                 addDeploymentArtifact(artifact, canvasManager, computeElement);
514                 
515                 return computeElement;
516         }
517
518
519         public void addDeploymentArtifact(ArtifactInfo artifact, CanvasManager canvasManager, CanvasElement computeElement) throws Exception {
520                 canvasManager.clickOnCanvaElement(computeElement);
521                 CompositionPage.showDeploymentArtifactTab();
522                 CompositionPage.clickAddArtifactButton();
523                 ArtifactUIUtils.fillAndAddNewArtifactParameters(artifact, CompositionPage.artifactPopup());
524         }
525         
526         @Test
527         public void isDisabledAndReadOnlyInCheckin() throws Exception{
528                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
529                 ServiceUIUtils.createService(serviceMetadata, getUser());
530                 GeneralPageElements.clickCheckinButton(serviceMetadata.getName());
531                 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
532                 
533                 ServiceMetadataEnum[] fieldsForCheck = {ServiceMetadataEnum.SERVICE_NAME,
534                                                         ServiceMetadataEnum.CONTACT_ID,
535                                                         ServiceMetadataEnum.DESCRIPTION,
536                                                         ServiceMetadataEnum.PROJECT_CODE,
537                                                         ServiceMetadataEnum.TAGS};
538                 for (ServiceMetadataEnum field: fieldsForCheck){
539                         assertTrue(GeneralUIUtils.isElementReadOnly(field.getValue()));
540                 }
541                 
542                 assertTrue(GeneralUIUtils.isElementDisabled(ServiceMetadataEnum.CATEGORY.getValue()));
543                 assertTrue(GeneralUIUtils.isElementDisabled(DataTestIdEnum.LifeCyleChangeButtons.CREATE.getValue()));
544         }
545         
546         // future removed from ui
547     @Test(enabled = false)
548         public void inputsTest() throws Exception{
549                 String fileName = "service_input_test_VF2.csar";
550                 
551                 ResourceReqDetails resourceMetaData = ElementFactory.getDefaultResourceByType(ResourceTypeEnum.VF, getUser());          
552                 ResourceUIUtils.importVfFromCsar(resourceMetaData, filePath, fileName, getUser());
553                 GeneralPageElements.clickCheckinButton(resourceMetaData.getName());
554                 
555                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
556                 ServiceUIUtils.createService(serviceMetadata, getUser());
557                 
558                 String selectedInstanceName = addResourceToServiceInCanvas(resourceMetaData);
559                 
560                 GeneralUIUtils.clickOnElementByTestId("breadcrumbs-button-1");
561                 DeploymentArtifactPage.getLeftMenu().moveToInputsScreen();
562                 
563                 InputsPage.addInputToService(selectedInstanceName, "volume_id");
564                 InputsPage.deleteServiceInput(selectedInstanceName, "volume_id");
565                 
566                 // Trying to find deleted service input
567                 try{
568                         InputsPage.getServiceInput(selectedInstanceName, "volume_id");
569                         assert(false);
570                 }
571                 catch(TestException e){ 
572                 }
573         }
574         
575         @Test
576         public void deploymentViewServiceTest() throws Exception{                               
577                 String fileName2 = "vSeGW.csar";
578                 
579                 ResourceReqDetails resourceMetaData = ElementFactory.getDefaultResourceByType("ciRes", NormativeTypesEnum.ROOT, ResourceCategoryEnum.APPLICATION_L4_DATABASE, getUser().getUserId(), ResourceTypeEnum.VF.toString());
580                 ResourceUIUtils.importVfFromCsar(resourceMetaData, filePath, fileName2, getUser());
581                 ResourceGeneralPage.clickCheckinButton(resourceMetaData.getName());
582                 
583                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
584                 ServiceUIUtils.createService(serviceMetadata, getUser());
585                 
586                 addResourceToServiceInCanvas(resourceMetaData);
587         
588                 GeneralUIUtils.clickOnElementByTestId("breadcrumbs-button-1");
589                 DeploymentArtifactPage.getLeftMenu().moveToDeploymentViewScreen();
590                 
591                 serviceMetadata.setVersion("0.1");
592                 List<WebElement> instanceRowsFromTable = GeneralUIUtils.getElementsByCSS("div[data-tests-id^='hierarchy-instance'] span[class^='expand-collapse-title-text']");
593                 for(WebElement instanceRow: instanceRowsFromTable){
594                         String instanceRowText = instanceRow.getText();
595                         List<WebElement> instanceModulesList = DeploymentPage.getInstanceModulesList(instanceRowText);
596                         for (WebElement instanceModule: instanceModulesList){
597                                 String instanceModuleText = instanceModule.getText();
598                                 ResourceUIUtils.clickOnElementByText(instanceModuleText, "instance");
599                                                                 
600                                 ServiceVerificator.verifyDeploymentPageSubElements(instanceModuleText.split("\\.\\.")[2], new DeploymentViewVerificator(filePath + fileName2));
601                                 
602                                 ServiceVerificator.verifyDisabledServiceProperties();
603                                 String isBaseValue = ServiceVerificator.getVFModulePropertieValue(serviceMetadata, "isBase", instanceModuleText);
604                                 if (isBaseValue.equals("false"))
605                                         ServiceVerificator.verifyEnabledServiceProperties();
606                                 
607                                 ResourceUIUtils.clickOnElementByText(instanceModuleText, "instance");
608                         }                                                                                               
609                 }                       
610         }
611         
612         @Test
613         public void vfModuleCustomizationUUIDServiceTest() throws Exception{
614                 String fileName2 = "vSeGW.csar";
615                 ResourceReqDetails resourceMetaData = ElementFactory.getDefaultResourceByType("ciRes", NormativeTypesEnum.ROOT, ResourceCategoryEnum.APPLICATION_L4_DATABASE, getUser().getUserId(), ResourceTypeEnum.VF.toString());
616                 ResourceUIUtils.importVfFromCsar(resourceMetaData, filePath, fileName2, getUser());
617                 ResourceGeneralPage.clickCheckinButton(resourceMetaData.getName());
618                 
619                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
620                 ServiceUIUtils.createService(serviceMetadata, getUser());
621                 
622                 addResourceToServiceInCanvas(resourceMetaData);
623             
624                 serviceMetadata.setVersion("0.1");
625                 ServiceVerificator.verifyVFModuleCustomizationUUID(serviceMetadata);            
626         }
627         
628         @Test
629         public void checkoutCertifyRemainSameCustomizationUUIDServiceTest() throws Exception{
630                 String fileName2 = "vSeGW.csar";
631                 ResourceReqDetails resourceMetaData = ElementFactory.getDefaultResourceByType("ciRes", NormativeTypesEnum.ROOT, ResourceCategoryEnum.APPLICATION_L4_DATABASE, getUser().getUserId(), ResourceTypeEnum.VF.toString());
632                 ResourceUIUtils.importVfFromCsar(resourceMetaData, filePath, fileName2, getUser());
633                 ResourceGeneralPage.clickSubmitForTestingButton(resourceMetaData.getName());
634                 
635                 reloginWithNewRole(UserRoleEnum.TESTER);
636                 GeneralUIUtils.findComponentAndClick(resourceMetaData.getName());
637                 TesterOperationPage.certifyComponent(resourceMetaData.getName());
638                 
639                 reloginWithNewRole(UserRoleEnum.DESIGNER);
640                 
641                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
642                 ServiceUIUtils.createService(serviceMetadata, getUser());
643                 
644                 addResourceToServiceInCanvas(resourceMetaData);
645             
646                 serviceMetadata.setVersion("0.1");
647                 ServiceVerificator.verifyVFModuleCustomizationUUID(serviceMetadata);
648                 List<String> allVFModuleCustomizationUUIDs = ServiceVerificator.getAllVFModuleCustomizationUUIDs(serviceMetadata);
649                 
650                 ResourceGeneralPage.clickCheckinButton(serviceMetadata.getName());
651                 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
652                 GeneralPageElements.clickCheckoutButton();
653                 
654                 serviceMetadata.setVersion("0.2");
655                 assertTrue(ServiceVerificator.isEqualCustomizationUUIDsAfterChanges(allVFModuleCustomizationUUIDs, ServiceVerificator.getAllVFModuleCustomizationUUIDs(serviceMetadata)));
656                 
657                 ResourceGeneralPage.clickSubmitForTestingButton(serviceMetadata.getName());
658                 
659                 reloginWithNewRole(UserRoleEnum.TESTER);
660                 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
661                 TesterOperationPage.certifyComponent(serviceMetadata.getName());
662                 
663                 reloginWithNewRole(UserRoleEnum.DESIGNER);
664                 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
665                 ResourceGeneralPage.clickCheckoutButton();
666                 
667                 serviceMetadata.setVersion("1.1");
668                 serviceMetadata.setUniqueId(null);
669                 assertTrue(ServiceVerificator.isEqualCustomizationUUIDsAfterChanges(allVFModuleCustomizationUUIDs, ServiceVerificator.getAllVFModuleCustomizationUUIDs(serviceMetadata)));
670         }
671
672
673         public synchronized String addResourceToServiceInCanvas(ResourceReqDetails resourceMetaData) throws Exception {
674                 DeploymentArtifactPage.getLeftMenu().moveToCompositionScreen();
675                 CanvasManager canvasManager = CanvasManager.getCanvasManager();
676                 CompositionPage.searchForElement(resourceMetaData.getName());
677                 CanvasElement computeElement = canvasManager.createElementOnCanvas(resourceMetaData.getName());
678                 canvasManager.clickOnCanvaElement(computeElement);
679                 String selectedInstanceName = CompositionPage.getSelectedInstanceName();
680                 return selectedInstanceName;
681         }
682                 
683         public static void changeDeleteAndValidateVersionOnGeneralPage(String previousVersion, String currentVersion, String serviceName) throws Exception{
684                 GeneralPageElements.selectVersion("V" + previousVersion);
685                 ServiceVerificator.verifyVersionUI(previousVersion);
686                 GeneralUIUtils.clickJSOnElementByText("latest version");
687                 ServiceVerificator.verifyVersionUI(currentVersion);
688                 GeneralPageElements.clickTrashButtonAndConfirm();
689                 GeneralUIUtils.findComponentAndClick(serviceName);
690                 ServiceVerificator.verifyVersionUI(previousVersion);            
691         }       
692
693         @Override
694         protected UserRoleEnum getRole() {
695                 return UserRoleEnum.DESIGNER;
696         }
697
698 }