f2b743a5a8a32261d5600117c0a746a730e140d0
[sdc.git] /
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.onap.sdc.frontend.ci.tests.US;
22
23 import org.apache.commons.io.FileUtils;
24 import org.onap.sdc.backend.ci.tests.datatypes.http.RestResponse;
25 import org.onap.sdc.frontend.ci.tests.pages.CompositionPage;
26 import org.onap.sdc.frontend.ci.tests.pages.DeploymentArtifactPage;
27 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
28 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
29 import org.onap.sdc.frontend.ci.tests.datatypes.ArtifactInfo;
30 import org.onap.sdc.frontend.ci.tests.datatypes.CanvasElement;
31 import org.onap.sdc.frontend.ci.tests.datatypes.CanvasManager;
32 import org.onap.sdc.frontend.ci.tests.datatypes.DataTestIdEnum;
33 import org.onap.sdc.backend.ci.tests.datatypes.ResourceReqDetails;
34 import org.onap.sdc.backend.ci.tests.datatypes.ServiceReqDetails;
35 import org.onap.sdc.backend.ci.tests.datatypes.enums.UserRoleEnum;
36 import org.onap.sdc.frontend.ci.tests.execute.setup.SetupCDTest;
37 import org.onap.sdc.frontend.ci.tests.pages.ResourceGeneralPage;
38 import org.onap.sdc.frontend.ci.tests.pages.UploadArtifactPopup;
39 import org.onap.sdc.frontend.ci.tests.utilities.ArtifactUIUtils;
40 import org.onap.sdc.frontend.ci.tests.utilities.FileHandling;
41 import org.onap.sdc.frontend.ci.tests.utilities.GeneralUIUtils;
42 import org.onap.sdc.frontend.ci.tests.utilities.ResourceUIUtils;
43 import org.onap.sdc.frontend.ci.tests.utilities.ServiceUIUtils;
44 import org.onap.sdc.backend.ci.tests.utils.general.AtomicOperationUtils;
45 import org.onap.sdc.backend.ci.tests.utils.general.ElementFactory;
46 import org.onap.sdc.backend.ci.tests.utils.rest.ArtifactRestUtils;
47 import org.testng.Assert;
48 import org.testng.annotations.DataProvider;
49 import org.testng.annotations.Test;
50
51 import java.io.File;
52 import java.util.ArrayList;
53 import java.util.List;
54
55 import static org.testng.AssertJUnit.assertTrue;
56
57
58 public class MIBsArtifactsOnResourceInstance extends SetupCDTest {
59
60     private String folder = "";
61
62     @DataProvider(name = "mibsArtifactCRUDUi")
63     public static Object[][] dataProviderMibsArtifactCRUDUi() {
64         return new Object[][]{
65                 {"mibsvFW_VFC.yml", ResourceTypeEnum.VFC},
66                 {"mibsVL.yml", ResourceTypeEnum.VL},
67                 {"mibsCP.yml", ResourceTypeEnum.CP}
68         };
69     }
70
71     // US820414
72     // Artifact UI CRUD on VFC/VL/CP
73     // TODO: Change download validation from download artifact via external API to UI
74     @Test(dataProvider = "mibsArtifactCRUDUi")
75     public void mibsArtifactCRUDUi(String fileName, ResourceTypeEnum resourceTypeEnum) throws Exception {
76         setLog(fileName);
77         String filePath = FileHandling.getFilePath(folder);
78
79         // import Resource
80         ResourceReqDetails resourceMetaData = ElementFactory.getDefaultResourceByType(resourceTypeEnum, getUser());
81         ResourceUIUtils.importVfc(resourceMetaData, filePath, fileName, getUser());
82
83         // get resourceUUID from BE
84         String resourceUUID = AtomicOperationUtils.getResourceObjectByNameAndVersion(UserRoleEnum.DESIGNER, resourceMetaData.getName(), "0.1").getUUID();
85
86         // 2. Upload MIBs artifacts - SNMP_TRAP & SNMP_POLL.
87         ResourceGeneralPage.getLeftMenu().moveToDeploymentArtifactScreen();
88
89         List<ArtifactInfo> deploymentArtifactList = new ArrayList<>();
90         deploymentArtifactList.add(new ArtifactInfo(filePath, "asc_heat 0 2.yaml", "kuku", "artifact1", "SNMP_TRAP"));
91         deploymentArtifactList.add(new ArtifactInfo(filePath, "sample-xml-alldata-1-1.xml", "cuku", "artifact2", "SNMP_POLL"));
92         for (ArtifactInfo deploymentArtifact : deploymentArtifactList) {
93             DeploymentArtifactPage.clickAddNewArtifact();
94             ArtifactUIUtils.fillAndAddNewArtifactParameters(deploymentArtifact, new UploadArtifactPopup(true));
95
96             assertTrue("Only created artifact need to be exist", DeploymentArtifactPage.checkElementsCountInTable(1));
97
98             String artifactUUID = GeneralUIUtils.getWebElementByTestID(DataTestIdEnum.ArtifactPageEnum.UUID.getValue() + deploymentArtifact.getArtifactLabel()).getText();
99             ArtifactUIUtils.validateExistArtifactOnDeploymentInformationPage(deploymentArtifact.getArtifactLabel(), null, "1", deploymentArtifact.getArtifactType(), true, true, true, false);
100
101             // Verify that uploaded correct file by download artifact via external api
102             RestResponse restResponse = ArtifactRestUtils.getResourceDeploymentArtifactExternalAPI(resourceUUID, artifactUUID, ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER), ComponentTypeEnum.RESOURCE.toString());
103             File file = new File(deploymentArtifact.getFilepath() + deploymentArtifact.getFilename());
104
105             String readFileToString = FileUtils.readFileToString(file);
106             Assert.assertEquals(restResponse.getResponse(), readFileToString);
107
108             DeploymentArtifactPage.clickEditArtifact(deploymentArtifact.getArtifactLabel());
109             UploadArtifactPopup artifactPopup = new UploadArtifactPopup(true);
110             artifactPopup.loadFile(filePath, "CP.yml");
111             artifactPopup.clickDoneButton();
112
113             assertTrue("Only updated artifact need to be exist", DeploymentArtifactPage.checkElementsCountInTable(1));
114             Assert.assertNotEquals(GeneralUIUtils.getWebElementByTestID(DataTestIdEnum.ArtifactPageEnum.UUID.getValue() + deploymentArtifact.getArtifactLabel()).getText(), artifactUUID);
115             ArtifactUIUtils.validateExistArtifactOnDeploymentInformationPage(deploymentArtifact.getArtifactLabel(), null, "2", deploymentArtifact.getArtifactType(), true, true, true, false);
116
117             // Verify that updated correct file by download artifact via external api
118             artifactUUID = GeneralUIUtils.getWebElementByTestID(DataTestIdEnum.ArtifactPageEnum.UUID.getValue() + deploymentArtifact.getArtifactLabel()).getText();
119             restResponse = ArtifactRestUtils.getResourceDeploymentArtifactExternalAPI(resourceUUID, artifactUUID, ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER), ComponentTypeEnum.RESOURCE.toString());
120             file = new File(deploymentArtifact.getFilepath() + "CP.yml");
121             readFileToString = FileUtils.readFileToString(file);
122             Assert.assertEquals(restResponse.getResponse(), readFileToString);
123
124             DeploymentArtifactPage.clickDeleteArtifact(deploymentArtifact.getArtifactLabel());
125             DeploymentArtifactPage.clickOK();
126
127             assertTrue("No artifact need to be exist", DeploymentArtifactPage.checkElementsCountInTable(0));
128         }
129
130     }
131
132     @DataProvider(name = "mibsArtifacsOnResourceInstanceShouldOnlyHaveDownloadOption")
133     public static Object[][] dataProviderMibsArtifacsOnResourceInstanceShouldOnlyHaveDownloadOption() {
134         return new Object[][]{
135 //                      {"mibs1vFW_VFC.yml", ResourceTypeEnum.VFC},
136                 // TODO: delete comment below when we will have support for VL on canvas
137 //                      {"mibs1VL.yml", ResourceTypeEnum.VL},
138                 {"mibs1CP.yml", ResourceTypeEnum.CP}
139         };
140     }
141
142     // US820414
143     // Import VFC/VL/CP, upload MIBs artifacts then drag it on VF & verify that deployment artifact have only download option
144     @Test(dataProvider = "mibsArtifacsOnResourceInstanceShouldOnlyHaveDownloadOption")
145     public void mibsArtifacsOnResourceInstanceShouldOnlyHaveDownloadOption(String fileName, ResourceTypeEnum resourceTypeEnum) throws Exception {
146
147 //              if(resourceTypeEnum.equals(ResourceTypeEnum.CP)){
148 //                      throw new SkipException("Open bug 322930");                     
149 //              }
150
151         setLog(fileName);
152
153         String filePath = FileHandling.getFilePath(folder);
154
155         // import Resource
156         ResourceReqDetails resourceMetaData = ElementFactory.getDefaultResourceByType(resourceTypeEnum, getUser());
157         ResourceUIUtils.importVfc(resourceMetaData, filePath, fileName, getUser());
158
159         // 2. Upload MIBs artifacts - SNMP_TRAP & SNMP_POLL.
160         ResourceGeneralPage.getLeftMenu().moveToDeploymentArtifactScreen();
161
162         List<ArtifactInfo> deploymentArtifactList = new ArrayList<ArtifactInfo>();
163         deploymentArtifactList.add(new ArtifactInfo(filePath, "asc_heat 0 2.yaml", "kuku", "artifact1", "SNMP_TRAP"));
164         deploymentArtifactList.add(new ArtifactInfo(filePath, "sample-xml-alldata-1-1.xml", "cuku", "artifact2", "SNMP_POLL"));
165         for (ArtifactInfo deploymentArtifact : deploymentArtifactList) {
166             DeploymentArtifactPage.clickAddNewArtifact();
167             ArtifactUIUtils.fillAndAddNewArtifactParameters(deploymentArtifact, new UploadArtifactPopup(true));
168         }
169         assertTrue("artifact table does not contain artifacts uploaded", DeploymentArtifactPage.checkElementsCountInTable(deploymentArtifactList.size()));
170
171         // 3. Check-in DataProvider resource.
172         ResourceGeneralPage.clickCheckinButton(resourceMetaData.getName());
173
174         // 4. Create VF.
175         ResourceReqDetails vfMetaData = ElementFactory.getDefaultResourceByType(ResourceTypeEnum.VF, getUser());
176         ResourceUIUtils.createVF(vfMetaData, getUser());
177
178         // 5. Click on composition.
179         ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
180
181         // 6. Drag created DataProvider resource to canvas.
182         CanvasManager vfCanvasManager = CanvasManager.getCanvasManager();
183         CompositionPage.searchForElement(resourceMetaData.getName());
184         CanvasElement resourceInstance = vfCanvasManager.createElementOnCanvas(resourceMetaData.getName());
185
186         // 7. Click on DataProvider resource.
187         vfCanvasManager.clickOnCanvaElement(resourceInstance);
188
189         // 8. Click on deployment artifacts in right menu.
190         CompositionPage.showDeploymentArtifactTab();
191
192         // 9. Verify that each uploaded MIBs artifacts shows in deployment artifacts.
193         // 10. Verify that only have download option.
194         for (ArtifactInfo deploymentArtifact : deploymentArtifactList) {
195             // Hover over webelement -> check that only dowload button displayed
196             GeneralUIUtils.hoverOnAreaByTestId(DataTestIdEnum.DeploymentArtifactCompositionRightMenu.ARTIFACT_DISPLAY_NAME.getValue() + deploymentArtifact.getArtifactLabel());
197             Assert.assertEquals(GeneralUIUtils.getWebElementByTestID(DataTestIdEnum.DeploymentArtifactCompositionRightMenu.DOWNLOAD.getValue() + deploymentArtifact.getArtifactLabel()).isDisplayed(), true);
198             Assert.assertEquals(GeneralUIUtils.isWebElementExistByTestId(DataTestIdEnum.DeploymentArtifactCompositionRightMenu.DELETE.getValue() + deploymentArtifact.getArtifactLabel()), false);
199             GeneralUIUtils.clickOnElementByTestId(DataTestIdEnum.DeploymentArtifactCompositionRightMenu.ARTIFACT_DISPLAY_NAME.getValue() + deploymentArtifact.getArtifactLabel());
200             Assert.assertEquals(GeneralUIUtils.isWebElementExistByTestId(DataTestIdEnum.ArtifactPopup.MODAL_WINDOW.getValue()), false);
201         }
202
203
204     }
205
206     // US820414
207     // Create VF, upload MIBs artifacts then drag it on service & verify that deployment artifact have only download option
208     @Test
209     public void mibsArtifacsOnVFInstanceShouldOnlyHaveDownloadOption() throws Exception {
210         String filePath = FileHandling.getFilePath(folder);
211
212         // 1. Create VF.
213         ResourceReqDetails resourceMetaData = ElementFactory.getDefaultResourceByType(ResourceTypeEnum.VF, getUser());
214         ResourceUIUtils.createVF(resourceMetaData, getUser());
215
216         // 2. Upload MIBs artifacts - SNMP_TRAP & SNMP_POLL.
217         ResourceGeneralPage.getLeftMenu().moveToDeploymentArtifactScreen();
218
219         List<ArtifactInfo> deploymentArtifactList = new ArrayList<ArtifactInfo>();
220         deploymentArtifactList.add(new ArtifactInfo(filePath, "asc_heat 0 2.yaml", "kuku", "artifact1", "SNMP_TRAP"));
221         deploymentArtifactList.add(new ArtifactInfo(filePath, "sample-xml-alldata-1-1.xml", "cuku", "artifact2", "SNMP_POLL"));
222         for (ArtifactInfo deploymentArtifact : deploymentArtifactList) {
223             DeploymentArtifactPage.clickAddNewArtifact();
224             ArtifactUIUtils.fillAndAddNewArtifactParameters(deploymentArtifact, new UploadArtifactPopup(true));
225         }
226         assertTrue("artifact table does not contain artifacts uploaded", DeploymentArtifactPage.checkElementsCountInTable(deploymentArtifactList.size()));
227
228         // 3. Check-in VF.
229         ResourceGeneralPage.clickCheckinButton(resourceMetaData.getName());
230
231         // 4. Create service.
232         ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
233         ServiceUIUtils.createService(serviceMetadata);
234
235         // 5. Click on composition.
236         ResourceGeneralPage.getLeftMenu().moveToCompositionScreen();
237
238         // 6. Drag created DataProvider s to canvas.
239         CanvasManager canvasManager = CanvasManager.getCanvasManager();
240         CompositionPage.searchForElement(resourceMetaData.getName());
241         CanvasElement resourceInstance = canvasManager.createElementOnCanvas(resourceMetaData.getName());
242
243         // 7. Click on DataProvider resource.
244         canvasManager.clickOnCanvaElement(resourceInstance);
245
246         // 8. Click on deployment artifacts in right menu.
247         CompositionPage.showDeploymentArtifactTab();
248
249         // 9. Verify that each uploaded MIBs artifacts shows in deployment artifacts.
250         // 10. Verify that only have download option.
251         for (ArtifactInfo deploymentArtifact : deploymentArtifactList) {
252             // Hover over webelement -> check that only dowload button displayed
253             GeneralUIUtils.hoverOnAreaByTestId(DataTestIdEnum.DeploymentArtifactCompositionRightMenu.ARTIFACT_DISPLAY_NAME.getValue() + deploymentArtifact.getArtifactLabel());
254             Assert.assertEquals(GeneralUIUtils.getWebElementByTestID(DataTestIdEnum.DeploymentArtifactCompositionRightMenu.DOWNLOAD.getValue() + deploymentArtifact.getArtifactLabel()).isDisplayed(), true);
255             Assert.assertEquals(GeneralUIUtils.isWebElementExistByTestId(DataTestIdEnum.DeploymentArtifactCompositionRightMenu.DELETE.getValue() + deploymentArtifact.getArtifactLabel()), false);
256             GeneralUIUtils.clickOnElementByTestId(DataTestIdEnum.DeploymentArtifactCompositionRightMenu.ARTIFACT_DISPLAY_NAME.getValue() + deploymentArtifact.getArtifactLabel());
257             Assert.assertEquals(GeneralUIUtils.isWebElementExistByTestId(DataTestIdEnum.ArtifactPopup.MODAL_WINDOW.getValue()), false);
258         }
259     }
260
261
262     @Override
263     protected UserRoleEnum getRole() {
264         return UserRoleEnum.DESIGNER;
265     }
266
267 }