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