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