[SDC-29] rebase continue work to align source
[sdc.git] / ui-ci-dev / src / main / java / org / openecomp / sdc / uici / tests / execute / vf / VfBasicTests.java
1 package org.openecomp.sdc.uici.tests.execute.vf;
2
3 import static org.openecomp.sdc.common.datastructure.FunctionalInterfaces.retryMethodOnException;
4 import static org.testng.AssertJUnit.assertEquals;
5 import static org.testng.AssertJUnit.assertTrue;
6
7 import java.io.IOException;
8 import java.util.Map;
9 import java.util.concurrent.Callable;
10
11 import org.apache.http.HttpStatus;
12 import org.openecomp.sdc.uici.tests.datatypes.CanvasElement;
13 import org.openecomp.sdc.uici.tests.datatypes.CanvasManager;
14 import org.openecomp.sdc.uici.tests.datatypes.CreateAndUpdateStepsEnum;
15 import org.openecomp.sdc.uici.tests.datatypes.DataTestIdEnum;
16 import org.openecomp.sdc.uici.tests.datatypes.DataTestIdEnum.LeftPanelCanvasItems;
17 import org.openecomp.sdc.uici.tests.execute.base.SetupCDTest;
18 import org.openecomp.sdc.uici.tests.utilities.ArtifactUIUtils;
19 import org.openecomp.sdc.uici.tests.utilities.FileHandling;
20 import org.openecomp.sdc.uici.tests.utilities.GeneralUIUtils;
21 import org.openecomp.sdc.uici.tests.utilities.ResourceUIUtils;
22 import org.openecomp.sdc.uici.tests.utilities.RestCDUtils;
23 import org.openecomp.sdc.uici.tests.utilities.ServiceUIUtils;
24 import org.openecomp.sdc.uici.tests.verificator.ServiceVerificator;
25 import org.openecomp.sdc.uici.tests.verificator.VfVerificator;
26 import org.openqa.selenium.WebElement;
27 import org.testng.annotations.Test;
28
29 import org.openecomp.sdc.be.model.LifecycleStateEnum;
30 import org.openecomp.sdc.be.model.User;
31 import org.openecomp.sdc.ci.tests.datatypes.ArtifactReqDetails;
32 import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails;
33 import org.openecomp.sdc.ci.tests.datatypes.ResourceRespJavaObject;
34 import org.openecomp.sdc.ci.tests.datatypes.ServiceReqDetails;
35 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
36 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
37 import org.openecomp.sdc.ci.tests.utils.general.Convertor;
38 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
39 import org.openecomp.sdc.ci.tests.utils.rest.ResponseParser;
40
41 public class VfBasicTests extends SetupCDTest {
42
43         @Test
44         public void testImportVfTableColumns() {
45                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.OnBoardingTable.OPEN_MODAL_BUTTON.getValue()).click();
46
47                 assertTrue(GeneralUIUtils
48                                 .getWebElementWaitForVisible(DataTestIdEnum.OnBoardingTable.VENDOR_HEADER_COL.getValue()) != null);
49                 assertTrue(GeneralUIUtils
50                                 .getWebElementWaitForVisible(DataTestIdEnum.OnBoardingTable.NAME_HEADER_COL.getValue()) != null);
51                 assertTrue(GeneralUIUtils
52                                 .getWebElementWaitForVisible(DataTestIdEnum.OnBoardingTable.CATEGORY_HEADER_COL.getValue()) != null);
53
54                 assertTrue(GeneralUIUtils
55                                 .getWebElementWaitForVisible(DataTestIdEnum.OnBoardingTable.VERSION_HEADER_COL.getValue()) != null);
56         }
57         
58         private void testsToChangeSomeParametersValues(){
59                 //open parameters form
60                 GeneralUIUtils.moveToHTMLElementByDataTestId(DataTestIdEnum.Artifatcs.BASE_CMUI_LAB1_ARTIFACT_ITEM.getValue());
61                 GeneralUIUtils.getWebElementWaitForClickable(DataTestIdEnum.Artifatcs.OPEN_EDIT_PROPERTIES_FORM_OF_BASE_CMUI_LAB1.getValue()).click();
62                 //edit values for parameter without default value and for parameter with default
63                 String valueForFirstParam="111";
64                 String newValueForSecondParam="222";
65                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.EnvParametersForm.VALUE_FIELD_OF_AVAILABILITY_ZONE_0.getValue()).sendKeys(valueForFirstParam);
66                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.EnvParametersForm.VALUE_FIELD_OF_CMAUI_FLAVOR.getValue()).clear();
67                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.EnvParametersForm.VALUE_FIELD_OF_CMAUI_FLAVOR.getValue()).sendKeys(newValueForSecondParam);
68                 //save changes
69                 GeneralUIUtils.getWebElementWaitForClickable(DataTestIdEnum.EnvParametersForm.SAVE_BUTTON.getValue()).click();
70                 GeneralUIUtils.waitForLoader();
71                 //open form again
72                 GeneralUIUtils.moveToHTMLElementByDataTestId(DataTestIdEnum.Artifatcs.BASE_CMUI_LAB1_ARTIFACT_ITEM.getValue());
73                 GeneralUIUtils.getWebElementWaitForClickable(DataTestIdEnum.Artifatcs.OPEN_EDIT_PROPERTIES_FORM_OF_BASE_CMUI_LAB1.getValue()).click();
74                 //check if values were changed
75                 assertTrue("The parameter value without default was not changed.",
76                                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.EnvParametersForm.VALUE_FIELD_OF_AVAILABILITY_ZONE_0.getValue()).getAttribute("value").equals(valueForFirstParam));
77                 assertTrue("The parameter value with default was not changed.",
78                                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.EnvParametersForm.VALUE_FIELD_OF_CMAUI_FLAVOR.getValue()).getAttribute("value").equals(newValueForSecondParam));
79                 //delete the value of the parameter without default
80                 GeneralUIUtils.getWebElementWaitForClickable(DataTestIdEnum.EnvParametersForm.DELETE_AVAILABILITY_ZONE_0.getValue()).click();
81                 boolean isThereDefaultValue=!GeneralUIUtils.getWebElementWaitForClickable(DataTestIdEnum.EnvParametersForm.DEFAULT_VALUE_COLMN_OF_CMAUI_FLAVOR.getValue()).getText().isEmpty();
82                 if(isThereDefaultValue){
83                         //revert the value of the parameter with default
84                         GeneralUIUtils.getWebElementWaitForClickable(DataTestIdEnum.EnvParametersForm.REVERET_CMAUI_FLAVOR.getValue()).click();
85                 }
86                 //save changes
87                 GeneralUIUtils.getWebElementWaitForClickable(DataTestIdEnum.EnvParametersForm.SAVE_BUTTON.getValue()).click();
88                 GeneralUIUtils.waitForLoader();
89                 //open form again
90                 GeneralUIUtils.moveToHTMLElementByDataTestId(DataTestIdEnum.Artifatcs.BASE_CMUI_LAB1_ARTIFACT_ITEM.getValue());
91                 GeneralUIUtils.getWebElementWaitForClickable(DataTestIdEnum.Artifatcs.OPEN_EDIT_PROPERTIES_FORM_OF_BASE_CMUI_LAB1.getValue()).click();
92                 //check if values were changed
93                 assertTrue("The parameter value without default was not deleted.",
94                                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.EnvParametersForm.VALUE_FIELD_OF_AVAILABILITY_ZONE_0.getValue()).getAttribute("value").equals(""));
95                 if(isThereDefaultValue){
96                         String theDefaultValue="m1.large";
97                         assertTrue("The parameter value with default was not reverted.",
98                                         GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.EnvParametersForm.VALUE_FIELD_OF_CMAUI_FLAVOR.getValue()).getAttribute("value").equals(theDefaultValue));
99                 }
100         }
101         
102         @Test
103         public void testVFiUpdateHeatENVParameters() throws Exception {
104                 // create vf
105                 String filePath = FileHandling.getResourcesFilesPath();
106                 String fileName = "vmmc_work.csar";
107                 ResourceReqDetails importVfResourceInUI = ResourceUIUtils.importVfInUIWithoutCheckin(getUser(), filePath,
108                                 fileName);
109                 GeneralUIUtils.closeNotificatin();
110                 GeneralUIUtils.checkIn();
111                 GeneralUIUtils.closeNotificatin();
112                 //create service
113                 ServiceReqDetails createServiceInUI = ServiceUIUtils.createServiceInUI(getUser());
114                 ServiceVerificator.verifyServiceCreated(createServiceInUI, getUser());
115                 //go to composition
116                 GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.COMPOSITION);
117                 //drag vf into canvas
118                 CanvasManager canvasManager = CanvasManager.getCanvasManager();
119                 CanvasElement canvasElement = canvasManager.createElementOnCanvas(importVfResourceInUI.getName());
120                 canvasManager.selectElementFromCanvas(canvasElement);
121                 GeneralUIUtils.waitForLoader();
122                 //go to deployment artifacts tab
123                 GeneralUIUtils.getWebElementWaitForClickable(DataTestIdEnum.RightBar.DEPLOYMENT_ARTIFACTS.getValue()).click();
124                 //test change parameters
125                 testsToChangeSomeParametersValues();
126         }
127         
128         @Test
129         public void testVFUpdateHeatENVParameters() throws Exception {
130                 // create vf
131                 String filePath = FileHandling.getResourcesFilesPath();
132                 String fileName = "vmmc_work.csar";
133                 ResourceReqDetails importVfResourceInUI = ResourceUIUtils.importVfInUIWithoutCheckin(getUser(), filePath,
134                                 fileName);
135                 //go to deployment artifacts
136                 GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.DEPLOYMENT_ARTIFACT);
137                 //test change parameters
138                 testsToChangeSomeParametersValues();    
139         }
140
141         @Test
142         public void testUpdateVfCreatedFromCsar() throws Exception {
143                 // create vf
144                 String filePath = FileHandling.getResourcesFilesPath();
145                 String fileName = "Sample_CSAR.csar";
146                 ResourceReqDetails importVfResourceInUI = ResourceUIUtils.importVfInUIWithoutCheckin(getUser(), filePath,
147                                 fileName);
148                 // update csar
149                 fileName = "Sample_CSAR2.csar";
150                 ResourceUIUtils.updateVfCsar(filePath, fileName);
151                 VfVerificator.verifyNumOfComponentInstances(importVfResourceInUI, 4);
152         }
153
154         @Test
155         public void testImportVf() {
156                 String filePath = FileHandling.getResourcesFilesPath();
157                 String fileName = "Sample_CSAR.csar";
158                 ResourceReqDetails importVfResourceInUI = ResourceUIUtils.importVfInUI(getUser(), filePath, fileName);
159                 GeneralUIUtils.waitForLoader();
160                 assertTrue(RestCDUtils.getResource(importVfResourceInUI).getErrorCode() == HttpStatus.SC_OK);
161         }
162
163         @Test
164         public void testCreateVf() {
165                 ResourceReqDetails createResourceInUI = ResourceUIUtils.createResourceInUI(getUser());
166                 assertTrue(RestCDUtils.getResource(createResourceInUI).getErrorCode() == HttpStatus.SC_OK);
167         }
168
169         @Test
170         public void testDeleteInstanceFromCanvas() {
171                 ResourceReqDetails createResourceInUI = ResourceUIUtils.createResourceInUI(getUser());
172                 GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.COMPOSITION);
173
174                 CanvasManager canvasManager = CanvasManager.getCanvasManager();
175
176                 canvasManager.createElementOnCanvas(LeftPanelCanvasItems.BLOCK_STORAGE);
177                 CanvasElement computeElement = canvasManager.createElementOnCanvas(LeftPanelCanvasItems.COMPUTE);
178                 VfVerificator.verifyNumOfComponentInstances(createResourceInUI, 2);
179                 canvasManager.deleteElementFromCanvas(computeElement);
180                 VfVerificator.verifyNumOfComponentInstances(createResourceInUI, 1);
181
182         }
183
184         @Test
185         public void testUpdateInstanceAttributeValue() {
186                 // creare vfc with attrs
187                 String filePath = FileHandling.getResourcesFilesPath();
188                 String fileName = "VFCWithAttributes.yml";
189                 ResourceReqDetails importVfcResourceInUI = ResourceUIUtils.importVfcInUI(getUser(), filePath, fileName);
190                 GeneralUIUtils.checkIn();
191                 // create vf
192                 ResourceReqDetails createResourceInUI = ResourceUIUtils.createResourceInUI(getUser());
193                 GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.COMPOSITION);
194                 // add vfc to canvas
195                 CanvasManager canvasManager = CanvasManager.getCanvasManager();
196                 CanvasElement canvasElement = canvasManager.createElementOnCanvas(importVfcResourceInUI.getName());
197                 canvasManager.selectElementFromCanvas(canvasElement);
198                 // edit value of vfc attr
199                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.RightBar.PROPERTIES_AND_ATTRIBUTES.getValue())
200                                 .click();
201                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.RightBar.MYATTR_ATTR_FROM_LIST.getValue()).click();
202
203                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.AttributeForm.DEFAULT_VAL_FIELD.getValue())
204                                 .sendKeys("2");
205                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.AttributeForm.DONE_BUTTON.getValue()).click();
206                 String newValue = GeneralUIUtils
207                                 .getWebElementWaitForVisible(DataTestIdEnum.RightBar.MYATTR_ATTR_VALUE_FROM_LIST.getValue()).getText();
208                 assertEquals("2", newValue);
209         }
210
211         @Test(enabled = false)
212         public void testAddInfomratinalArtifact() throws Exception {
213                 ResourceReqDetails createResourceInUI = ResourceUIUtils.createResourceInUI(getUser());
214
215                 GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.INFORMATION_ARTIFACT);
216
217                 ArtifactReqDetails informationalArtifact = ElementFactory.getDefaultArtifact();
218                 final String FILE_PATH = System.getProperty("user.dir") + "\\src\\main\\resources\\Files\\";
219                 final String FILE_NAME = "Valid_tosca_Mycompute.yml";
220
221                 ArtifactUIUtils.addInformationArtifact(informationalArtifact, FILE_PATH + FILE_NAME,
222                                 DataTestIdEnum.InformationalArtifatcs.FEATURES);
223                 ArtifactUIUtils.addInformationArtifact(informationalArtifact, FILE_PATH + FILE_NAME,
224                                 DataTestIdEnum.InformationalArtifatcs.CAPACITY);
225
226                 RestResponse getResourceResponse = RestCDUtils.getResource(createResourceInUI);
227                 assertEquals("Did not succeed to get resource after create", HttpStatus.SC_OK,
228                                 getResourceResponse.getErrorCode().intValue());
229
230                 Map<String, Map<String, Object>> artifactsListFromResponse = ArtifactUIUtils
231                                 .getArtifactsListFromResponse(getResourceResponse.getResponse(), "artifacts");
232                 Map<String, Object> map = artifactsListFromResponse.get("Features");
233
234                 assertTrue(artifactsListFromResponse.size() >= 2);
235
236         }
237
238         @Test
239         public void testVfCertification() throws IOException {
240                 // Create VF
241                 ResourceReqDetails createResourceInUI = ResourceUIUtils.createResourceInUI(getUser());
242                 assertTrue(RestCDUtils.getResource(createResourceInUI).getErrorCode() == HttpStatus.SC_OK);
243
244                 // Submit For Testing Process
245                 GeneralUIUtils.submitForTestingElement(createResourceInUI.getName());
246
247                 // Tester
248                 quitAndReLogin(UserRoleEnum.TESTER);
249                 ResourceUIUtils.testAndAcceptElement(createResourceInUI);
250
251                 // Verification
252                 GeneralUIUtils.waitForLoader();
253                 VfVerificator.verifyResourceIsCertified(createResourceInUI);
254
255         }
256
257         @Test
258         public void testDeploymentArtifactForVFi() {
259                 User user = getUser();
260                 // create vf
261                 ResourceReqDetails createResourceInUI = ResourceUIUtils.createResourceInUI(user);
262                 GeneralUIUtils.checkIn();
263                 GeneralUIUtils.waitForLoader();
264                 // create service
265                 GeneralUIUtils.clickOnCreateEntityFromDashboard(DataTestIdEnum.Dashboard.BUTTON_ADD_SERVICE.getValue());
266                 ResourceUIUtils.defineResourceName("serv");
267                 GeneralUIUtils.defineDescription("description");
268                 GeneralUIUtils.waitForLoader();
269                 ResourceUIUtils.defineResourceCategory("Mobility", "selectGeneralCategory");
270                 ResourceUIUtils.defineProjectCode("012345");
271                 GeneralUIUtils.clickSaveButton();
272                 GeneralUIUtils.waitForLoader();
273                 GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.COMPOSITION);
274                 GeneralUIUtils.waitForLoader();
275                 // add vf to canvas
276                 CanvasManager canvasManager = CanvasManager.getCanvasManager();
277                 CanvasElement canvasElement = canvasManager.createElementOnCanvas(createResourceInUI.getName());
278                 canvasManager.selectElementFromCanvas(canvasElement);
279                 GeneralUIUtils.waitForLoader();
280                 // add artifact
281                 GeneralUIUtils.getWebElementWaitForClickable(DataTestIdEnum.RightBar.DEPLOYMENT_ARTIFACTS.getValue()).click();
282                 GeneralUIUtils.getWebElementWaitForClickable(DataTestIdEnum.RightBar.ADD_ARTIFACT_BUTTON.getValue()).click();
283                 String newArtifactLabel = "newArtifact";
284                 ArtifactReqDetails details = new ArtifactReqDetails("new_atifact", "DCAE_INVENTORY_EVENT", "desc", "",
285                                 newArtifactLabel);
286                 ResourceUIUtils.fillinDeploymentArtifactFormAndClickDone(details,
287                                 FileHandling.getResourcesFilesPath() + "yamlSample.yml");
288                 assertTrue(GeneralUIUtils.isElementPresent("artifact_Display_Name-" + newArtifactLabel));
289                 // edit artifact
290                 GeneralUIUtils.getWebElementWaitForClickable("artifact_Display_Name-" + newArtifactLabel).click();
291                 String newFileName = "yamlSample2.yml";
292                 retryMethodOnException(
293                                 () -> GeneralUIUtils.getWebElementByDataTestId(DataTestIdEnum.GeneralSection.BROWSE_BUTTON.getValue())
294                                                 .sendKeys(FileHandling.getResourcesFilesPath() + newFileName));
295                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.ModalItems.DONE.getValue()).click();
296                 GeneralUIUtils.waitForLoader();
297                 assertEquals(newFileName,
298                                 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.RightBar.ARTIFACT_NAME.getValue()).getText());
299                 // delete artifact
300                 GeneralUIUtils.moveToHTMLElementByDataTestId("artifact_Display_Name-" + newArtifactLabel);
301                 GeneralUIUtils.getWebElementWaitForClickable(DataTestIdEnum.RightBar.DELETE_ARTIFACT_BUTTON.getValue()).click();
302                 GeneralUIUtils.getWebElementWaitForClickable(DataTestIdEnum.ModalItems.OK.getValue()).click();
303                 GeneralUIUtils.waitForLoader();
304                 assertTrue(!GeneralUIUtils.isElementPresent("artifact_Display_Name-" + newArtifactLabel));
305         }
306         
307         @Test
308         public void testDisplayVfModuleProperies() {
309                 //create vf with components instances properties
310                 ResourceReqDetails importedVf = ResourceUIUtils.importVfInUI(getUser(), FileHandling.getResourcesFilesPath(),
311                                 "vmmc_work.csar");
312                 GeneralUIUtils.waitForLoader(40);
313                 GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.DEPLOYMENT);
314                 GeneralUIUtils.getWebElementWaitForClickable("hierarchy-module-0-title").click();
315                 assertTrue(GeneralUIUtils.isElementPresent(DataTestIdEnum.DeploymentSection.MODULE_PROPERTIES_HEADER_LIST.getValue()));
316         }
317
318         protected ArtifactReqDetails defineInformationalArtifact() throws IOException, Exception {
319                 return ElementFactory.getDefaultArtifact();
320         }
321
322         protected ResourceRespJavaObject buildResourceJavaObject(ResourceReqDetails resource, RestResponse restResponse,
323                         User user) {
324                 ResourceRespJavaObject resourceObject = new ResourceRespJavaObject();
325                 resourceObject = Convertor.constructFieldsForRespValidation(resource, resource.getVersion(), user);
326                 resourceObject.setLifecycleState((LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT).toString());
327                 resourceObject.setAbstractt("false");
328                 resourceObject.setIcon(resource.getIcon().replace(" ", ""));
329                 resourceObject.setUniqueId(ResponseParser.getUniqueIdFromResponse(restResponse));
330                 return resourceObject;
331         }
332
333 }