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