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