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