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