[SDC-29] rebase continue work to align source
[sdc.git] / ui-ci / src / main / java / org / openecomp / sdc / ci / tests / execute / sanity / ImportDCAE.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.io.File;
26 import java.util.ArrayList;
27 import java.util.Arrays;
28 import java.util.HashMap;
29 import java.util.List;
30 import java.util.Map;
31
32 import org.openecomp.sdc.be.dao.api.ActionStatus;
33 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
34 import org.openecomp.sdc.be.model.LifecycleStateEnum;
35 import org.openecomp.sdc.ci.tests.datatypes.ArtifactInfo;
36 import org.openecomp.sdc.ci.tests.datatypes.CanvasElement;
37 import org.openecomp.sdc.ci.tests.datatypes.CanvasManager;
38 import org.openecomp.sdc.ci.tests.datatypes.DataTestIdEnum;
39 import org.openecomp.sdc.ci.tests.datatypes.LifeCycleStateEnum;
40 import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails;
41 import org.openecomp.sdc.ci.tests.datatypes.DataTestIdEnum.InformationalArtifactsPlaceholders;
42 import org.openecomp.sdc.ci.tests.datatypes.DataTestIdEnum.LeftPanelCanvasItems;
43 import org.openecomp.sdc.ci.tests.datatypes.DataTestIdEnum.ResourceMetadataEnum;
44 import org.openecomp.sdc.ci.tests.datatypes.enums.ArtifactTypeEnum;
45 import org.openecomp.sdc.ci.tests.datatypes.enums.NormativeTypesEnum;
46 import org.openecomp.sdc.ci.tests.datatypes.enums.PropertyTypeEnum;
47 import org.openecomp.sdc.ci.tests.datatypes.enums.ResourceCategoryEnum;
48 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
49 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
50 import org.openecomp.sdc.ci.tests.execute.setup.SetupCDTest;
51 import org.openecomp.sdc.ci.tests.pages.CompositionPage;
52 import org.openecomp.sdc.ci.tests.pages.DeploymentArtifactPage;
53 import org.openecomp.sdc.ci.tests.pages.DeploymentPage;
54 import org.openecomp.sdc.ci.tests.pages.GeneralPageElements;
55 import org.openecomp.sdc.ci.tests.pages.InformationalArtifactPage;
56 import org.openecomp.sdc.ci.tests.pages.InputsPage;
57 import org.openecomp.sdc.ci.tests.pages.PropertiesPage;
58 import org.openecomp.sdc.ci.tests.pages.ResourceGeneralPage;
59 import org.openecomp.sdc.ci.tests.pages.TesterOperationPage;
60 import org.openecomp.sdc.ci.tests.pages.ToscaArtifactsPage;
61 import org.openecomp.sdc.ci.tests.utilities.ArtifactUIUtils;
62 import org.openecomp.sdc.ci.tests.utilities.FileHandling;
63 import org.openecomp.sdc.ci.tests.utilities.GeneralUIUtils;
64 import org.openecomp.sdc.ci.tests.utilities.PropertiesUIUtils;
65 import org.openecomp.sdc.ci.tests.utilities.ResourceUIUtils;
66 import org.openecomp.sdc.ci.tests.utilities.RestCDUtils;
67 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
68 import org.openecomp.sdc.ci.tests.utils.rest.ResourceRestUtils;
69 import org.openecomp.sdc.ci.tests.utils.rest.ResponseParser;
70 import org.openecomp.sdc.ci.tests.utils.validation.ErrorValidationUtils;
71 import org.openecomp.sdc.ci.tests.verificator.ServiceVerificator;
72 import org.openecomp.sdc.ci.tests.verificator.VfVerificator;
73 import org.openqa.selenium.By;
74 import org.openqa.selenium.WebElement;
75 import org.testng.Assert;
76 import org.testng.SkipException;
77 import org.testng.annotations.BeforeMethod;
78 import org.testng.annotations.Test;
79
80 import com.aventstack.extentreports.Status;
81
82 public class ImportDCAE extends SetupCDTest {
83
84         private String filePath;
85         @BeforeMethod
86         public void beforeTest(){
87                 filePath = System.getProperty("filepath");
88         
89                 if (filePath == null && System.getProperty("os.name").contains("Windows")) {
90                         filePath = FileHandling.getResourcesFilesPath();
91                 }
92                 
93                 else if(filePath.isEmpty() && !System.getProperty("os.name").contains("Windows")){
94                         filePath = FileHandling.getBasePath() + File.separator + "Files" + File.separator;
95                 }
96         }
97         
98         @Test
99         public void updateDCAEAsset() throws Exception {
100          ResourceReqDetails resourceMetaData = createDCAEAsset();
101
102                 // update Resource
103                 ResourceReqDetails updatedResource = new ResourceReqDetails();
104                 updatedResource.setName("ciUpdatedNameImportDCAE");
105                 updatedResource.setDescription("kuku");
106                 updatedResource.setVendorName("updatedVendor");
107                 updatedResource.setVendorRelease("updatedRelease");
108                 updatedResource.setContactId("ab0001");
109                 updatedResource.setCategories(resourceMetaData.getCategories());
110                 updatedResource.setVersion("0.1");
111                 List<String> newTags = resourceMetaData.getTags();
112                 newTags.remove(resourceMetaData.getName());
113                 newTags.add(updatedResource.getName());
114                 updatedResource.setTags(newTags);
115                 ResourceUIUtils.updateResource(updatedResource, getUser());
116
117                 VfVerificator.verifyVFMetadataInUI(updatedResource);
118                 VfVerificator.verifyVFUpdated(updatedResource, getUser());
119         }
120         
121         @Test
122         public void vfcLinkedToComputeInDCAEAssetFlowTest() throws Exception {
123                 String fileName = "importVFC_VFC14.yml";
124                 ResourceReqDetails atomicResourceMetaData = ElementFactory.getDefaultResourceByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.NETWORK_L2_3_ROUTERS, getUser());
125                 
126                 try{
127                         ResourceUIUtils.importVfc(atomicResourceMetaData, filePath, fileName, getUser());
128                         ResourceGeneralPage.clickSubmitForTestingButton(atomicResourceMetaData.getName());
129                         
130                         reloginWithNewRole(UserRoleEnum.TESTER);
131                         GeneralUIUtils.findComponentAndClick(atomicResourceMetaData.getName());
132                         TesterOperationPage.certifyComponent(atomicResourceMetaData.getName());
133         
134                         reloginWithNewRole(UserRoleEnum.DESIGNER);
135                         ResourceReqDetails resourceMetaData = createDCAEAsset();
136         
137                         DeploymentArtifactPage.getLeftMenu().moveToCompositionScreen();
138                         CanvasManager canvasManager = CanvasManager.getCanvasManager();
139                         CanvasElement computeElement = canvasManager.createElementOnCanvas(LeftPanelCanvasItems.COMPUTE);
140                         CompositionPage.searchForElement(atomicResourceMetaData.getName());
141                         CanvasElement cpElement = canvasManager.createElementOnCanvas(atomicResourceMetaData.getName());
142                         Assert.assertNotNull(cpElement);
143                         ServiceVerificator.verifyNumOfComponentInstances(resourceMetaData, "0.1", 4, getUser());
144                         
145                         canvasManager.linkElements(cpElement, computeElement);
146         
147                         resourceMetaData.setVersion("0.1");
148                         VfVerificator.verifyLinkCreated(resourceMetaData, getUser(), 1);
149                 }
150                 finally{
151                         ResourceRestUtils.deleteResourceByNameAndVersion(atomicResourceMetaData.getName(), "1.0");
152                 }
153
154         }
155         
156         @Test
157         public void addUpdateDeleteDeploymentArtifactToDCAEAssetTest() throws Exception {
158                 createDCAEAsset();
159                 ResourceGeneralPage.getLeftMenu().moveToDeploymentArtifactScreen();
160
161                 List<ArtifactInfo> deploymentArtifactList = new ArrayList<ArtifactInfo>();
162                 deploymentArtifactList.add(new ArtifactInfo(filePath, "asc_heat 0 2.yaml", "kuku", "artifact1", "OTHER"));
163                 deploymentArtifactList.add(new ArtifactInfo(filePath, "sample-xml-alldata-1-1.xml", "cuku", "artifact2", "YANG_XML"));
164                 for (ArtifactInfo deploymentArtifact : deploymentArtifactList) {
165                         DeploymentArtifactPage.clickAddNewArtifact();
166                         ArtifactUIUtils.fillAndAddNewArtifactParameters(deploymentArtifact);
167                 }
168                 assertTrue("artifact table does not contain artifacts uploaded", DeploymentArtifactPage.checkElementsCountInTable(deploymentArtifactList.size()));
169                 
170                 String newDescription = "new description";
171                 DeploymentArtifactPage.clickEditArtifact(deploymentArtifactList.get(0).getArtifactLabel());
172                 DeploymentArtifactPage.artifactPopup().insertDescription(newDescription);
173                 DeploymentArtifactPage.artifactPopup().clickDoneButton();
174                 String actualArtifactDescription = DeploymentArtifactPage.getArtifactDescription(deploymentArtifactList.get(0).getArtifactLabel());
175                 assertTrue("artifact description is not updated", newDescription.equals(actualArtifactDescription));
176                 
177                 DeploymentArtifactPage.clickDeleteArtifact(deploymentArtifactList.get(0).getArtifactLabel());
178                 DeploymentArtifactPage.clickOK();
179                 assertTrue("artifact "+ deploymentArtifactList.get(0).getArtifactLabel() + "is not deleted", DeploymentArtifactPage.checkElementsCountInTable(deploymentArtifactList.size() - 1));
180                 
181                 assertTrue("artifact "+ deploymentArtifactList.get(1).getArtifactLabel() + "is not displayed", DeploymentArtifactPage.clickOnArtifactDescription(deploymentArtifactList.get(1).getArtifactLabel()).isDisplayed());
182         }
183         
184         @Test
185         public void addUpdateDeleteInformationalArtifactDCAEAssetTest() throws Exception {
186                 createDCAEAsset();
187                 ResourceGeneralPage.getLeftMenu().moveToInformationalArtifactScreen();
188                 
189                 ArtifactInfo informationalArtifact = new ArtifactInfo(filePath, "asc_heat 0 2.yaml", "kuku", "artifact1", "OTHER");
190                 InformationalArtifactPage.clickAddNewArtifact();
191                 ArtifactUIUtils.fillAndAddNewArtifactParameters(informationalArtifact);
192                 
193                 assertTrue("artifact table does not contain artifacts uploaded", InformationalArtifactPage.checkElementsCountInTable(1));
194                 
195                 String newDescription = "new description";
196                 InformationalArtifactPage.clickEditArtifact(informationalArtifact.getArtifactLabel());
197                 InformationalArtifactPage.artifactPopup().insertDescription(newDescription);
198                 InformationalArtifactPage.artifactPopup().clickDoneButton();
199                 String actualArtifactDescription = InformationalArtifactPage.getArtifactDescription(informationalArtifact.getArtifactLabel());
200                 assertTrue("artifact description is not updated", newDescription.equals(actualArtifactDescription));
201                 
202                 InformationalArtifactPage.clickDeleteArtifact(informationalArtifact.getArtifactLabel());
203                 InformationalArtifactPage.clickOK();
204                 assertTrue("artifact "+ informationalArtifact.getArtifactLabel() + "is not deleted", InformationalArtifactPage.checkElementsCountInTable(0));
205         }
206         
207         @Test
208         public void addPropertiesToVfcInstanceInDCAEAssetTest() throws Exception {
209                 String fileName = "importVFC_VFC15.yml";
210                 ResourceReqDetails atomicResourceMetaData = ElementFactory.getDefaultResourceByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.NETWORK_L2_3_ROUTERS, getUser());
211                 
212                 try{
213                         ResourceUIUtils.importVfc(atomicResourceMetaData, filePath, fileName, getUser());
214                         ResourceGeneralPage.clickCheckinButton(atomicResourceMetaData.getName());
215         
216                         createDCAEAsset();
217         
218                         ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
219                         CanvasManager vfCanvasManager = CanvasManager.getCanvasManager();
220                         CompositionPage.searchForElement(atomicResourceMetaData.getName());
221                         CanvasElement vfcElement = vfCanvasManager.createElementOnCanvas(atomicResourceMetaData.getName());
222         
223                         vfCanvasManager.clickOnCanvaElement(vfcElement);
224                         CompositionPage.showPropertiesAndAttributesTab();
225                         List<WebElement> properties = CompositionPage.getProperties();
226                         String propertyValue = "abc123";
227                         for (int i = 0; i < 2; i++) {
228                                 WebElement findElement = properties.get(i).findElement(By.className("i-sdc-designer-sidebar-section-content-item-property-and-attribute-label"));
229                                 findElement.click();
230                                 PropertiesPage.getPropertyPopup().insertPropertyDefaultValue(propertyValue);
231                                 PropertiesPage.getPropertyPopup().clickSave();                          
232                                 
233                                 findElement = properties.get(i).findElement(By.className("i-sdc-designer-sidebar-section-content-item-property-value"));
234                                 assertTrue(findElement.getText().equals(propertyValue));
235                         }
236                 }
237                 finally{
238                         ResourceRestUtils.deleteResourceByNameAndVersion(atomicResourceMetaData.getName(), "0.1");
239                 }
240         }
241         
242         @Test
243         public void changeInstanceVersionDCAEAssetTest() throws Exception{
244                 ResourceReqDetails atomicResourceMetaData = null;
245                 ResourceReqDetails vfMetaData = null;
246                 CanvasManager vfCanvasManager;
247                 CanvasElement vfcElement = null;
248                 String fileName = "importVFC_VFC16.yml";
249                 try{
250                         atomicResourceMetaData = ElementFactory.getDefaultResourceByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.NETWORK_L2_3_ROUTERS, getUser());
251                         ResourceUIUtils.importVfc(atomicResourceMetaData, filePath, fileName, getUser());
252                         ResourceGeneralPage.clickSubmitForTestingButton(atomicResourceMetaData.getName());
253                         
254                         vfMetaData = createDCAEAsset();
255                         ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
256                         vfCanvasManager = CanvasManager.getCanvasManager();
257                         CompositionPage.searchForElement(atomicResourceMetaData.getName());
258                         vfcElement = vfCanvasManager.createElementOnCanvas(atomicResourceMetaData.getName());                   
259                 
260                         CompositionPage.clickSubmitForTestingButton(vfMetaData.getName());
261                         assert(false);
262                 }
263                 catch(Exception e){ 
264                         String errorMessage = GeneralUIUtils.getWebElementByClassName("w-sdc-modal-caption").getText();
265                         String checkUIResponseOnError = ErrorValidationUtils.checkUIResponseOnError(ActionStatus.VALIDATED_RESOURCE_NOT_FOUND.name());
266                         Assert.assertTrue(errorMessage.contains(checkUIResponseOnError));
267                         
268                         
269                         reloginWithNewRole(UserRoleEnum.TESTER);
270                         GeneralUIUtils.findComponentAndClick(atomicResourceMetaData.getName());
271                         TesterOperationPage.certifyComponent(atomicResourceMetaData.getName());
272                         
273                         reloginWithNewRole(UserRoleEnum.DESIGNER);
274                         GeneralUIUtils.findComponentAndClick(vfMetaData.getName());
275                         ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
276                         vfCanvasManager = CanvasManager.getCanvasManager();
277                         CompositionPage.changeComponentVersion(vfCanvasManager, vfcElement, "1.0");
278                         
279                         //verfication
280                         VfVerificator.verifyInstanceVersion(vfMetaData, getUser(), atomicResourceMetaData.getName(), "1.0");
281                 }
282                         
283                 finally{
284                         ResourceRestUtils.deleteResourceByNameAndVersion(atomicResourceMetaData.getName(), "1.0");
285                 }
286                 
287         }
288         
289         // future removed from ui
290         @Test(enabled = false)
291         public void addUpdateDeleteSimplePropertiesToDCAEAssetTest() throws Exception{
292                 createDCAEAsset();
293                         
294                 ResourceGeneralPage.getLeftMenu().moveToPropertiesScreen();
295                 List<PropertyTypeEnum> propertyList = Arrays.asList(PropertyTypeEnum.STRING, PropertyTypeEnum.INTEGER);
296                 int propertiesCount = PropertiesPage.getElemenetsFromTable().size();    
297                 for (PropertyTypeEnum prop : propertyList){
298                         PropertiesUIUtils.addNewProperty(prop);
299                 }
300                 assertTrue(GeneralUIUtils.checkElementsCountInTable(propertiesCount + propertyList.size(), () -> PropertiesPage.getElemenetsFromTable()));
301                 VfVerificator.verifyPropertiesInUI(propertyList);
302                 PropertiesPage.verifyTotalProperitesField(propertiesCount + propertyList.size());
303
304                 PropertyTypeEnum prop = propertyList.get(0);
305                 prop.setDescription("updatedDescription");
306                 prop.setValue("value");
307                 PropertiesUIUtils.updateProperty(prop);
308                 
309                 PropertiesPage.clickDeletePropertyArtifact(prop.getName());
310                 assertTrue(GeneralUIUtils.checkElementsCountInTable(propertiesCount + propertyList.size() - 1, () -> PropertiesPage.getElemenetsFromTable()));
311         }
312         
313         // future removed from ui
314         @Test(enabled = false)
315         public void DCAEAssetInstancesInputScreenTest() throws Exception{
316                 createDCAEAsset();
317                 
318                 ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
319                 CanvasManager vfCanvasManager = CanvasManager.getCanvasManager();
320                 
321                 Map<String, String> elementsIntancesMap = new HashMap<String, String>();
322                 for (LeftPanelCanvasItems element : Arrays.asList(LeftPanelCanvasItems.DATABASE)){
323                         CanvasElement elementOnCanvas = vfCanvasManager.createElementOnCanvas(element);
324                         vfCanvasManager.clickOnCanvaElement(elementOnCanvas);
325                         String selectedInstanceName = CompositionPage.getSelectedInstanceName();
326                         elementsIntancesMap.put(selectedInstanceName, element.getValue());
327                 }
328
329                 CompositionPage.moveToInputsScreen();
330                 int canvasElementsSize = vfCanvasManager.getCanvasElements().size() + 2;
331                 List<String> inputsNamesFromTable = InputsPage.getVFCInstancesNamesFromTable();
332                 assertTrue(String.format("Instances count is not as Expected: %s Actual: %s", canvasElementsSize, inputsNamesFromTable.size()), inputsNamesFromTable.size() == canvasElementsSize);
333                 
334                 for (String instanceName :inputsNamesFromTable){
335                         String resourceName = instanceName.split(" ")[0];
336                         ResourceReqDetails resource = new ResourceReqDetails();
337                         resource.setName(resourceName);
338                         resource.setVersion("1.0");
339                         if (resourceName.equals("Port")){
340                                 resource.setResourceType(ResourceTypeEnum.CP.toString());
341                         } else {
342                             resource.setResourceType(ResourceTypeEnum.VFC.toString());
343                         }
344                         RestResponse restResponse = RestCDUtils.getResource(resource, getUser());
345                         Map<String, String> propertiesNameTypeJson = ResponseParser.getPropertiesNameType(restResponse);
346                         
347                         List<WebElement> propertyRowsFromTable = InputsPage.getInstancePropertiesList(resourceName);
348                         assertTrue("Some properties are missing in table. Instance name is : " + resourceName, propertyRowsFromTable.size() == propertiesNameTypeJson.size());
349                         VfVerificator.verifyVfInputs(instanceName, propertiesNameTypeJson, propertyRowsFromTable);
350                         
351                         GeneralUIUtils.clickOnElementByText(resourceName);
352                 }               
353         }
354         
355         @Test
356         public void addAllInformationalArtifactPlaceholdersInDCAEAssetTest() throws Exception{          
357                 createDCAEAsset();
358                 ResourceGeneralPage.getLeftMenu().moveToInformationalArtifactScreen();
359                 
360                 for(InformationalArtifactsPlaceholders informArtifact : InformationalArtifactsPlaceholders.values()){
361                         ArtifactUIUtils.fillPlaceHolderInformationalArtifact(informArtifact, filePath,"asc_heat 0 2.yaml", informArtifact.getValue());
362                 }
363                 
364                 assertTrue(InformationalArtifactPage.checkElementsCountInTable(InformationalArtifactsPlaceholders.values().length));
365         }
366         
367         @Test
368         public void verifyToscaArtifactsExistDCAEAssetTest() throws Exception{
369                 ResourceReqDetails vfMetaData = createDCAEAsset();
370                 
371                 final int numOfToscaArtifacts = 2;
372                 ResourceGeneralPage.getLeftMenu().moveToToscaArtifactsScreen();
373                 assertTrue(ToscaArtifactsPage.checkElementsCountInTable(numOfToscaArtifacts));
374                 
375                 for(int i = 0; i < numOfToscaArtifacts; i++){
376                         String typeFromScreen = ToscaArtifactsPage.getArtifactType(i);
377                         assertTrue(typeFromScreen.equals(ArtifactTypeEnum.TOSCA_CSAR.getType()) || typeFromScreen.equals(ArtifactTypeEnum.TOSCA_TEMPLATE.getType()));
378                 }
379                 
380                 ToscaArtifactsPage.clickSubmitForTestingButton(vfMetaData.getName());
381                 VfVerificator.verifyToscaArtifactsInfo(vfMetaData, getUser());
382         }
383         
384         @Test
385         public void DCAEAssetCertificationTest() throws Exception{
386                 ResourceReqDetails vfMetaData = createDCAEAsset();
387                 
388                 String vfName = vfMetaData.getName();
389                 
390                 ResourceGeneralPage.clickCheckinButton(vfName);
391                 GeneralUIUtils.findComponentAndClick(vfName);
392                 ResourceGeneralPage.clickSubmitForTestingButton(vfName);
393                 
394                 reloginWithNewRole(UserRoleEnum.TESTER);
395                 GeneralUIUtils.findComponentAndClick(vfName);
396                 TesterOperationPage.certifyComponent(vfName);
397                 
398                 vfMetaData.setVersion("1.0");
399                 VfVerificator.verifyVFLifecycle(vfMetaData, getUser(), LifecycleStateEnum.CERTIFIED);
400                 
401                 reloginWithNewRole(UserRoleEnum.DESIGNER);
402                 GeneralUIUtils.findComponentAndClick(vfName);
403                 VfVerificator.verifyVfLifecycleInUI(LifeCycleStateEnum.CERTIFIED);
404         }
405         
406         @Test
407         public void deleteDCAEAssetCheckedoutTest() throws Exception{
408                 ResourceReqDetails vfMetaData = createDCAEAsset();
409                 
410                 GeneralPageElements.clickTrashButtonAndConfirm();
411                 
412                 vfMetaData.setVersion("0.1");
413                 VfVerificator.verifyVfDeleted(vfMetaData, getUser());
414         }
415         
416         @Test
417         public void revertDCAEAssetMetadataTest() throws Exception{
418                 ResourceReqDetails vfMetaData = createDCAEAsset();
419                 
420                 ResourceReqDetails vfRevertDetails = new ResourceReqDetails();
421                 vfRevertDetails.setName("ciUpdatedName");
422                 vfRevertDetails.setDescription("kuku");
423                 vfRevertDetails.setCategories(vfMetaData.getCategories());
424                 vfRevertDetails.setVendorName("updatedVendor");
425                 vfRevertDetails.setVendorRelease("updatedRelease");
426                 ResourceUIUtils.fillResourceGeneralInformationPage(vfRevertDetails, getUser(), false);
427                 
428                 GeneralPageElements.clickRevertButton();
429                 
430                 VfVerificator.verifyVFMetadataInUI(vfMetaData);
431         }
432         
433         @Test
434         public void addDeploymentArtifactInCompositionScreenDCAEAssetTest() throws Exception{
435                 createDCAEAsset();
436                 
437                 ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
438                 
439                 ArtifactInfo artifact = new ArtifactInfo(filePath, "Heat-File.yaml", "kuku", "artifact3","OTHER");
440                 CompositionPage.showDeploymentArtifactTab();
441                 CompositionPage.clickAddArtifactButton();
442                 ArtifactUIUtils.fillAndAddNewArtifactParameters(artifact, CompositionPage.artifactPopup());
443                 
444                 List<WebElement> actualArtifactList = GeneralUIUtils.getWebElementsListBy(By.className("i-sdc-designer-sidebar-section-content-item-artifact"));
445                 Assert.assertEquals(1, actualArtifactList.size());
446         }
447         
448         // future removed from ui
449         @Test(enabled = false)
450         public void addPropertyInCompositionScreenDCAEAssetTest() throws Exception{
451                 createDCAEAsset();
452                 
453                 ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
454                 
455                 CompositionPage.showPropertiesAndAttributesTab();
456                 List<PropertyTypeEnum> propertyList = Arrays.asList(PropertyTypeEnum.STRING, PropertyTypeEnum.INTEGER);
457                 int propertiesCount = CompositionPage.getProperties().size();
458                 for (PropertyTypeEnum prop : propertyList){
459                         PropertiesUIUtils.addNewProperty(prop);
460                 }
461                 assertTrue(GeneralUIUtils.checkElementsCountInTable(propertiesCount + propertyList.size(), () -> CompositionPage.getProperties()));
462         }
463         
464         @Test
465         public void addDeploymentArtifactAndVerifyInCompositionScreenDCAEAssetTest() throws Exception{
466                 createDCAEAsset();
467                 
468                 ResourceGeneralPage.getLeftMenu().moveToDeploymentArtifactScreen();
469
470                 ArtifactInfo deploymentArtifact = new ArtifactInfo(filePath, "asc_heat 0 2.yaml", "kuku", "artifact1", "OTHER");
471                 DeploymentArtifactPage.clickAddNewArtifact();
472                 ArtifactUIUtils.fillAndAddNewArtifactParameters(deploymentArtifact);
473                 assertTrue(DeploymentArtifactPage.checkElementsCountInTable(1));
474                 
475                 ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
476                 
477                 CompositionPage.showDeploymentArtifactTab();
478                 List<WebElement> deploymentArtifactsFromScreen = CompositionPage.getDeploymentArtifacts();
479                 assertTrue(1 == deploymentArtifactsFromScreen.size());
480                 
481                 String actualArtifactFileName = deploymentArtifactsFromScreen.get(0).getText();
482                 assertTrue("asc_heat-0-2.yaml".equals(actualArtifactFileName));
483         }
484         
485         @Test
486         public void checkoutDCAEAssetTest() throws Exception{
487                 ResourceReqDetails vfMetaData = createDCAEAsset();
488                 
489                 ResourceGeneralPage.clickCheckinButton(vfMetaData.getName());
490                 GeneralUIUtils.findComponentAndClick(vfMetaData.getName());
491                 GeneralPageElements.clickCheckoutButton();
492                 
493                 vfMetaData.setVersion("0.2");
494                 VfVerificator.verifyVFLifecycle(vfMetaData, getUser(), LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
495                 VfVerificator.verifyVfLifecycleInUI(LifeCycleStateEnum.CHECKOUT);
496                 
497                 ResourceGeneralPage.clickSubmitForTestingButton(vfMetaData.getName());
498                 
499                 reloginWithNewRole(UserRoleEnum.TESTER);
500                 GeneralUIUtils.findComponentAndClick(vfMetaData.getName());
501                 TesterOperationPage.certifyComponent(vfMetaData.getName());
502                 
503                 reloginWithNewRole(UserRoleEnum.DESIGNER);
504                 GeneralUIUtils.findComponentAndClick(vfMetaData.getName());
505                 ResourceGeneralPage.clickCheckoutButton();
506                 
507                 vfMetaData.setVersion("1.1");
508                 vfMetaData.setUniqueId(null);
509                 VfVerificator.verifyVFLifecycle(vfMetaData, getUser(), LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
510                 VfVerificator.verifyVfLifecycleInUI(LifeCycleStateEnum.CHECKOUT);
511         }
512         
513         @Test
514         public void deleteInstanceFromDCAEAssetCanvas() throws Exception{
515                 ResourceReqDetails vfMetaData = createDCAEAsset();
516                 
517                 ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
518                 CanvasManager vfCanvasManager = CanvasManager.getCanvasManager();
519                 CanvasElement computeElement = CompositionPage.addElementToCanvasScreen(LeftPanelCanvasItems.COMPUTE, vfCanvasManager);
520                 
521                 vfCanvasManager.clickOnCanvaElement(computeElement);
522                 vfCanvasManager.deleteElementFromCanvas(computeElement);
523                                 
524                 VfVerificator.verifyNumOfComponentInstances(vfMetaData, 2, getUser());
525         }
526         
527         @Test
528         public void changeInstanceNameInDCAEAssetTest() throws Exception{
529                 createDCAEAsset();
530                 
531                 ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
532                 CanvasManager vfCanvasManager = CanvasManager.getCanvasManager();
533                 CanvasElement computeElement = CompositionPage.addElementToCanvasScreen(LeftPanelCanvasItems.COMPUTE, vfCanvasManager);
534                 
535                 String updatedInstanceName = "updatedName";
536                 vfCanvasManager.updateElementNameInCanvas(computeElement, updatedInstanceName);
537                 
538                 String actualSelectedInstanceName = CompositionPage.getSelectedInstanceName();
539                 assertTrue(updatedInstanceName.equals(actualSelectedInstanceName));
540         }
541         
542         @Test
543         public void submitDCAEAssetForTestingWithNonCertifiedAsset() throws Exception{
544                 String fileName = "importVFC_VFC17.yml";
545
546                 ResourceReqDetails atomicResourceMetaData = ElementFactory.getDefaultResourceByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.NETWORK_L2_3_ROUTERS, getUser());
547                 ResourceUIUtils.importVfc(atomicResourceMetaData, filePath, fileName, getUser());
548                 ResourceGeneralPage.clickSubmitForTestingButton(atomicResourceMetaData.getName());
549                 
550                 ResourceReqDetails vfMetaData = createDCAEAsset();
551                 DeploymentArtifactPage.getLeftMenu().moveToCompositionScreen();
552                 CanvasManager canvasManager = CanvasManager.getCanvasManager();
553                 CompositionPage.addElementToCanvasScreen(atomicResourceMetaData.getName(), canvasManager);
554                 
555                 try{
556                         CompositionPage.clickSubmitForTestingButton(vfMetaData.getName());
557                         assert(false);
558                 }
559                 catch(Exception e){ 
560                         String errorMessage = GeneralUIUtils.getWebElementByClassName("w-sdc-modal-caption").getText();
561                         String checkUIResponseOnError = ErrorValidationUtils.checkUIResponseOnError(ActionStatus.VALIDATED_RESOURCE_NOT_FOUND.name());
562                         Assert.assertTrue(errorMessage.contains(checkUIResponseOnError));       
563                 }
564                 finally{
565                         ResourceRestUtils.deleteResourceByNameAndVersion(atomicResourceMetaData.getName(), "0.1");
566                 }
567         }
568         
569         @Test
570         public void isDisabledAndReadOnlyInCheckinDCAEAssetTest() throws Exception{
571                 ResourceReqDetails vfMetaData = createDCAEAsset();
572                 ResourceGeneralPage.clickCheckinButton(vfMetaData.getName());
573                 GeneralUIUtils.findComponentAndClick(vfMetaData.getName());
574                 
575                 ResourceMetadataEnum[] fieldsForCheck = {ResourceMetadataEnum.RESOURCE_NAME,
576                                                                    ResourceMetadataEnum.DESCRIPTION, 
577                                                                    ResourceMetadataEnum.VENDOR_NAME, 
578                                                                    ResourceMetadataEnum.VENDOR_RELEASE,
579                                                                    ResourceMetadataEnum.CONTACT_ID,
580                                                                    ResourceMetadataEnum.CATEGORY,
581                                                                    ResourceMetadataEnum.TAGS};
582
583                 for (ResourceMetadataEnum field: fieldsForCheck){
584                         VfVerificator.verifyIsElementDisabled(field.getValue(), field.name());
585                 }
586                 VfVerificator.verifyIsElementDisabled(DataTestIdEnum.LifeCyleChangeButtons.CREATE.getValue(), DataTestIdEnum.LifeCyleChangeButtons.CREATE.name());
587         }
588         
589         @Test
590         public void removeFileFromGeneralPageDCAEAssetTest() throws Exception{
591                 String fileName2 = "service_input_test_VF2.csar";               
592                 ResourceReqDetails resourceMetaData = ElementFactory.getDefaultResourceByType("ciRes", NormativeTypesEnum.ROOT, ResourceCategoryEnum.APPLICATION_L4_DATABASE, getUser().getUserId(), ResourceTypeEnum.VF.toString());
593                 ResourceUIUtils.importVfFromCsarNoCreate(resourceMetaData, filePath, fileName2, getUser());
594                 GeneralPageElements.clickDeleteFile();
595                 
596                 try{
597                         GeneralUIUtils.clickOnElementByTestId(DataTestIdEnum.GeneralElementsEnum.CREATE_BUTTON.getValue(), 30);
598                         assert(false);
599                 }
600                 catch(Exception e){
601                         assert(true);   
602                 }
603         }
604         
605         @Test
606         public void activityLogDCAEAssetTest() throws Exception{
607                         createDCAEAsset();
608                         
609                 ResourceGeneralPage.getLeftMenu().moveToInformationalArtifactScreen();
610                         
611                         ArtifactInfo informationalArtifact = new ArtifactInfo(filePath, "asc_heat 0 2.yaml", "kuku", "artifact1", "OTHER");
612                         InformationalArtifactPage.clickAddNewArtifact();
613                         ArtifactUIUtils.fillAndAddNewArtifactParameters(informationalArtifact);
614                         
615                         ResourceGeneralPage.getLeftMenu().moveToActivityLogScreen();
616                         
617                         int numberOfRows = GeneralUIUtils.getElementsByCSS("div[class^='flex-container']").size();
618                         assertTrue("Wrong rows number, should be 2", numberOfRows == 2);
619         }
620         
621         @Test
622         public void checkinCheckoutChangeDeleteVersionDCAEAssetTest() throws Exception{
623                 ResourceReqDetails atomicResourceMetaData = createDCAEAsset();
624                 
625                 ResourceGeneralPage.clickCheckinButton(atomicResourceMetaData.getName());
626                 GeneralUIUtils.findComponentAndClick(atomicResourceMetaData.getName());
627                 GeneralPageElements.clickCheckoutButton();              
628                 VfVerificator.verifyVfLifecycleInUI(LifeCycleStateEnum.CHECKOUT);
629                 
630                 GeneralPageElements.selectVersion("V0.1");
631                 VfVerificator.verifyVfLifecycleInUI(LifeCycleStateEnum.CHECKIN);
632                 GeneralUIUtils.clickJSOnElementByText("latest version");
633                 
634                 GeneralPageElements.clickTrashButtonAndConfirm();
635                 GeneralUIUtils.findComponentAndClick(atomicResourceMetaData.getName());
636                 String actualVersion = GeneralUIUtils.getSelectedElementFromDropDown(DataTestIdEnum.GeneralElementsEnum.VERSION_HEADER.getValue()).getText();
637                 assertTrue("Expected version: V0.1, Actual version: " + actualVersion, actualVersion.equals("V0.1"));
638         }
639         
640         @Test
641         public void badFileDCAEAssetTest() throws Exception {
642                 String customFileName = "badVF.csar";
643                 ResourceReqDetails resourceMetaData = ElementFactory.getDefaultResourceByType("ciRes", NormativeTypesEnum.ROOT, ResourceCategoryEnum.APPLICATION_L4_DATABASE, getUser().getUserId(), ResourceTypeEnum.VF.toString());           
644                 try{
645                         ResourceUIUtils.importVfFromCsar(resourceMetaData, filePath, customFileName, getUser());
646                         assert(false);
647                 }
648                 catch(Exception e){
649                         String errorMessage = GeneralUIUtils.getWebElementByClassName("w-sdc-modal-caption").getText();
650                         String checkUIResponseOnError = ErrorValidationUtils.checkUIResponseOnError(ActionStatus.CSAR_INVALID.name());
651                         SetupCDTest.getExtendTest().log(Status.INFO, String.format("Validating error messdge...")); 
652                         Assert.assertTrue(errorMessage.contains(checkUIResponseOnError));       
653                 }
654         }
655         
656         @Test
657         public void validContactAfterCreateDCAEAssetTest() throws Exception{
658                 String fileName2 = "service_input_test_VF2.csar";
659                 ResourceReqDetails resourceMetaData = ElementFactory.getDefaultResourceByType("ciRes", NormativeTypesEnum.ROOT, ResourceCategoryEnum.APPLICATION_L4_DATABASE, getUser().getUserId(), ResourceTypeEnum.VF.toString());
660                 ResourceUIUtils.importVfFromCsar(resourceMetaData, filePath, fileName2, getUser());
661                 SetupCDTest.getExtendTest().log(Status.INFO, String.format("Validating that userID equal to user that was logged in...")); 
662                 assertTrue("wrong userId", resourceMetaData.getContactId().equals(ResourceGeneralPage.getContactIdText()));
663         }                       
664         
665         public ResourceReqDetails createDCAEAsset() throws Exception{
666                 String fileName2 = "service_input_test_VF2.csar";               
667                 ResourceReqDetails resourceMetaData = ElementFactory.getDefaultResourceByType("ciRes", NormativeTypesEnum.ROOT, ResourceCategoryEnum.APPLICATION_L4_DATABASE, getUser().getUserId(), ResourceTypeEnum.VF.toString());
668                 ResourceUIUtils.importVfFromCsar(resourceMetaData, filePath, fileName2, getUser());
669                 resourceMetaData.setVersion("0.1");
670                 return resourceMetaData;
671         }       
672         
673         @Override
674         protected UserRoleEnum getRole() {
675                 return UserRoleEnum.DESIGNER;
676         }
677
678 }