Fix for radio buttons
[sdc.git] / ui-ci / src / main / java / org / openecomp / sdc / ci / tests / execute / sanity / Onboard.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 static org.testng.AssertJUnit.assertNotNull;
24 import static org.testng.AssertJUnit.assertTrue;
25
26 import java.awt.AWTException;
27 import java.io.File;
28 import java.io.IOException;
29 import java.util.ArrayList;
30 import java.util.Arrays;
31 import java.util.HashMap;
32 import java.util.List;
33 import java.util.Map;
34 import java.util.stream.Collectors;
35
36 import org.openecomp.sdc.ci.tests.dataProvider.OnbordingDataProviders;
37 import org.openecomp.sdc.ci.tests.datatypes.AmdocsLicenseMembers;
38 import org.openecomp.sdc.ci.tests.datatypes.CanvasElement;
39 import org.openecomp.sdc.ci.tests.datatypes.CanvasManager;
40 import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails;
41 import org.openecomp.sdc.ci.tests.datatypes.ServiceReqDetails;
42 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
43 import org.openecomp.sdc.ci.tests.execute.setup.ArtifactsCorrelationManager;
44 import org.openecomp.sdc.ci.tests.execute.setup.ExtentTestActions;
45 import org.openecomp.sdc.ci.tests.execute.setup.SetupCDTest;
46 import org.openecomp.sdc.ci.tests.pages.CompositionPage;
47 import org.openecomp.sdc.ci.tests.pages.DeploymentArtifactPage;
48 import org.openecomp.sdc.ci.tests.pages.GovernorOperationPage;
49 import org.openecomp.sdc.ci.tests.pages.HomePage;
50 import org.openecomp.sdc.ci.tests.pages.OpsOperationPage;
51 import org.openecomp.sdc.ci.tests.pages.ResourceGeneralPage;
52 import org.openecomp.sdc.ci.tests.pages.ServiceGeneralPage;
53 import org.openecomp.sdc.ci.tests.pages.TesterOperationPage;
54 import org.openecomp.sdc.ci.tests.utilities.FileHandling;
55 import org.openecomp.sdc.ci.tests.utilities.GeneralUIUtils;
56 import org.openecomp.sdc.ci.tests.utilities.OnboardingUiUtils;
57 import org.openecomp.sdc.ci.tests.utilities.ServiceUIUtils;
58 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
59 import org.openecomp.sdc.ci.tests.utils.general.OnboardingUtils;
60 import org.openecomp.sdc.ci.tests.verificator.ServiceVerificator;
61 import org.openqa.selenium.WebElement;
62 import org.testng.AssertJUnit;
63 import org.testng.annotations.BeforeMethod;
64 import org.testng.annotations.Optional;
65 import org.testng.annotations.Parameters;
66 import org.testng.annotations.Test;
67
68 import com.aventstack.extentreports.Status;
69 import com.clearspring.analytics.util.Pair;
70
71 public class Onboard extends SetupCDTest {
72         
73         protected static String filePath = FileHandling.getVnfRepositoryPath();
74         protected String makeDistributionValue;
75         
76         @Parameters({ "makeDistribution" })
77         @BeforeMethod
78         public void beforeTestReadParams(@Optional("true") String makeDistributionReadValue) {
79                 makeDistributionValue = makeDistributionReadValue;                             
80         }
81         
82         @Test
83         public void onboardVNFTestSanityOneFile() throws Exception, Throwable {
84 //              List<String> fileNamesFromFolder = OnboardingUiUtils.getVnfNamesFileList();
85 //              String vnfFile = fileNamesFromFolder.get(0).toString();
86                 String vnfFile = "2017-302_vNSO.zip";
87 //              String vnfFile = "1-Fn-vprobe-be-11-2-5-1-vf-(MOBILITY)_v5.0.zip";
88                 ResourceReqDetails resourceReqDetails = ElementFactory.getDefaultResource();//getResourceReqDetails(ComponentConfigurationTypeEnum.DEFAULT);
89                 ServiceReqDetails serviceReqDetails = ElementFactory.getDefaultService();//getServiceReqDetails(ComponentConfigurationTypeEnum.DEFAULT);
90                 runOnboardToDistributionFlow(resourceReqDetails, serviceReqDetails, filePath, vnfFile);
91         }
92         
93         @Test
94         public void onboardVNFTestSanity() throws Exception, Throwable {
95                 List<String> fileNamesFromFolder = OnboardingUtils.getVnfNamesFileList();
96                 String vnfFile = fileNamesFromFolder.get(0).toString();
97                 ResourceReqDetails resourceReqDetails = ElementFactory.getDefaultResource();//getResourceReqDetails(ComponentConfigurationTypeEnum.DEFAULT);
98                 ServiceReqDetails serviceReqDetails = ElementFactory.getDefaultService();//getServiceReqDetails(ComponentConfigurationTypeEnum.DEFAULT);
99                 runOnboardToDistributionFlow(resourceReqDetails, serviceReqDetails, filePath, vnfFile);
100         }
101
102         
103         public void runOnboardToDistributionFlow(ResourceReqDetails resourceReqDetails, ServiceReqDetails serviceMetadata, String filePath, String vnfFile) throws Exception, AWTException {
104                 getExtendTest().log(Status.INFO, "Going to create resource with category: " + resourceReqDetails.getCategories().get(0).getName()
105                                 + " subCategory: " +  resourceReqDetails.getCategories().get(0).getSubcategories().get(0).getName()
106                                 + " and service category: " + serviceMetadata.getCategory());
107                 String vspName = onboardAndCertify(resourceReqDetails, filePath, vnfFile);
108
109                 reloginWithNewRole(UserRoleEnum.DESIGNER);
110                 // create service
111 //              ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
112                 ServiceUIUtils.createService(serviceMetadata, getUser());
113
114                 ServiceGeneralPage.getLeftMenu().moveToCompositionScreen();
115                 CompositionPage.searchForElement(vspName);
116                 CanvasManager serviceCanvasManager = CanvasManager.getCanvasManager();
117                 CanvasElement vfElement = serviceCanvasManager.createElementOnCanvas(vspName);
118                 ArtifactsCorrelationManager.addVNFtoServiceArtifactCorrelation(serviceMetadata.getName(), vspName);
119                 
120                 assertNotNull(vfElement);
121                 ServiceVerificator.verifyNumOfComponentInstances(serviceMetadata, "0.1", 1, getUser());
122                 ExtentTestActions.addScreenshot(Status.INFO, "ServiceComposition_" + vnfFile ,"The service topology is as follows: ");
123
124                 ServiceGeneralPage.clickSubmitForTestingButton(serviceMetadata.getName());
125
126                 reloginWithNewRole(UserRoleEnum.TESTER);
127                 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
128                 TesterOperationPage.certifyComponent(serviceMetadata.getName());
129
130                 reloginWithNewRole(UserRoleEnum.GOVERNOR);
131                 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
132                 GovernorOperationPage.approveSerivce(serviceMetadata.getName());
133
134                 if (makeDistributionValue.equals("true")){
135                         
136                 
137                 reloginWithNewRole(UserRoleEnum.OPS);
138                 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
139                 OpsOperationPage.distributeService();
140                 OpsOperationPage.displayMonitor();
141
142                 List<WebElement> rowsFromMonitorTable = OpsOperationPage.getRowsFromMonitorTable();
143                 AssertJUnit.assertEquals(1, rowsFromMonitorTable.size());
144
145                 OpsOperationPage.waitUntilArtifactsDistributed(0);
146                 
147 //              validateInputArtsVSouput(serviceMetadata.getName());
148
149                 }
150                 
151                 getExtendTest().log(Status.INFO, String.format("The onboarding %s test is passed ! ", vnfFile));
152         }
153
154         public String onboardAndCertify(ResourceReqDetails resourceReqDetails, String filePath, String vnfFile) throws Exception, IOException {
155                 Pair<String,Map<String,String>> onboardAndValidate = OnboardingUiUtils.onboardAndValidate(resourceReqDetails, filePath, vnfFile, getUser());
156                 String vspName = onboardAndValidate.left;
157                 
158                 DeploymentArtifactPage.getLeftPanel().moveToCompositionScreen();
159                 ExtentTestActions.addScreenshot(Status.INFO, "TopologyTemplate_" + vnfFile ,"The topology template for " + vnfFile + " is as follows : ");
160                 
161                 DeploymentArtifactPage.clickSubmitForTestingButton(vspName);
162
163                 reloginWithNewRole(UserRoleEnum.TESTER);
164                 GeneralUIUtils.findComponentAndClick(vspName);
165                 TesterOperationPage.certifyComponent(vspName);
166                 return vspName;
167         }
168         
169         
170         @Test(dataProviderClass = OnbordingDataProviders.class, dataProvider = "VNF_List")
171         public void onboardVNFTest(String filePath, String vnfFile) throws Exception, Throwable {
172                 setLog(vnfFile);
173                 System.out.println("printttttttttttttt - >" + makeDistributionValue);
174                 ResourceReqDetails resourceReqDetails = ElementFactory.getRandomCategoryResource();
175                 ServiceReqDetails serviceReqDetails = ElementFactory.getRandomCategoryService();
176                 runOnboardToDistributionFlow(resourceReqDetails, serviceReqDetails, filePath, vnfFile);
177         }
178         
179         @Test(dataProviderClass = OnbordingDataProviders.class, dataProvider = "VNF_List")
180         public void onboardVNFShotFlow(String filePath, String vnfFile) throws Exception, Throwable {
181                 setLog(vnfFile);
182                 System.out.println("printttttttttttttt - >" + makeDistributionValue);
183                 ResourceReqDetails resourceReqDetails = ElementFactory.getDefaultResource();//getResourceReqDetails(ComponentConfigurationTypeEnum.DEFAULT);
184                 onboardAndCertify(resourceReqDetails, filePath, vnfFile);
185         }
186
187         @Test(dataProviderClass = OnbordingDataProviders.class, dataProvider = "randomVNF_List")
188         public void onboardRandomVNFsTest(String filePath, String vnfFile) throws Exception, Throwable {
189                 setLog(vnfFile);
190                 System.out.println("printttttttttttttt - >" + makeDistributionValue);
191                 System.out.println("Vnf File name is: " + vnfFile);
192                 ResourceReqDetails resourceReqDetails = ElementFactory.getRandomCategoryResource();
193                 ServiceReqDetails serviceReqDetails = ElementFactory.getRandomCategoryService();
194                 runOnboardToDistributionFlow(resourceReqDetails, serviceReqDetails, filePath, vnfFile);
195         }
196         
197         
198         @Test
199         public void onboardUpdateVNFTest() throws Exception, Throwable {
200 //              Object[] fileNamesFromFolder = FileHandling.getZipFileNamesFromFolder(filePath);
201                 List<String> fileNamesFromFolder = FileHandling.getZipFileNamesFromFolder(filePath);
202 //              String vnfFile = fileNamesFromFolder[0].toString();
203                 String vnfFile = fileNamesFromFolder.get(0);
204                 ResourceReqDetails resourceReqDetails = ElementFactory.getDefaultResource();//getResourceReqDetails(ComponentConfigurationTypeEnum.DEFAULT);
205                 Pair<String,Map<String,String>> vsp = OnboardingUiUtils.onboardAndValidate(resourceReqDetails, filePath, vnfFile, getUser());
206                 String vspName = vsp.left;
207                 ResourceGeneralPage.clickSubmitForTestingButton(vspName);
208
209                 reloginWithNewRole(UserRoleEnum.TESTER);
210                 GeneralUIUtils.findComponentAndClick(vspName);
211                 TesterOperationPage.certifyComponent(vspName);
212
213                 reloginWithNewRole(UserRoleEnum.DESIGNER);
214                 // create service
215                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
216                 ServiceUIUtils.createService(serviceMetadata, getUser());
217
218                 ServiceGeneralPage.getLeftMenu().moveToCompositionScreen();
219                 CompositionPage.searchForElement(vspName);
220                 CanvasManager serviceCanvasManager = CanvasManager.getCanvasManager();
221                 CanvasElement vfElement = serviceCanvasManager.createElementOnCanvas(vspName);
222                 assertNotNull(vfElement);
223                 ServiceVerificator.verifyNumOfComponentInstances(serviceMetadata, "0.1", 1, getUser());
224
225                 HomePage.navigateToHomePage();
226                 
227                 ///update flow
228 //              String updatedVnfFile = fileNamesFromFolder[1].toString();
229                 String updatedVnfFile = fileNamesFromFolder.get(1);
230
231                 getExtendTest().log(Status.INFO, String.format("Going to update the VNF with %s......", updatedVnfFile));
232                 // update VendorSoftwareProduct
233                 OnboardingUiUtils.updateVnfAndValidate(filePath, vsp, updatedVnfFile, getUser());
234                 
235                 ResourceGeneralPage.clickSubmitForTestingButton(vspName);
236
237                 reloginWithNewRole(UserRoleEnum.TESTER);
238                 GeneralUIUtils.findComponentAndClick(vspName);
239                 TesterOperationPage.certifyComponent(vspName);
240
241                 reloginWithNewRole(UserRoleEnum.DESIGNER);
242                 
243                 // replace exiting VFI in service with new updated
244                 
245                 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
246                 ServiceGeneralPage.getLeftMenu().moveToCompositionScreen();
247                 serviceCanvasManager = CanvasManager.getCanvasManager();
248                 CompositionPage.changeComponentVersion(serviceCanvasManager, vfElement, "2.0");
249                 ServiceVerificator.verifyNumOfComponentInstances(serviceMetadata, "0.1", 1, getUser());
250
251                 ServiceGeneralPage.clickSubmitForTestingButton(serviceMetadata.getName());
252
253                 reloginWithNewRole(UserRoleEnum.TESTER);
254                 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
255                 TesterOperationPage.certifyComponent(serviceMetadata.getName());
256
257                 reloginWithNewRole(UserRoleEnum.GOVERNOR);
258                 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
259                 GovernorOperationPage.approveSerivce(serviceMetadata.getName());
260                 
261
262                         
263                                 reloginWithNewRole(UserRoleEnum.OPS);
264                                 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
265                                 OpsOperationPage.distributeService();
266                                 OpsOperationPage.displayMonitor();
267                 
268                                 List<WebElement> rowsFromMonitorTable = OpsOperationPage.getRowsFromMonitorTable();
269                                 AssertJUnit.assertEquals(1, rowsFromMonitorTable.size());
270                 
271                                 OpsOperationPage.waitUntilArtifactsDistributed(0);
272                 
273                 
274                 getExtendTest().log(Status.INFO, String.format("Onboarding %s test is passed ! ", vnfFile));
275                 
276                 
277         }
278
279         @Test
280         public void threeVMMSCsInServiceTest() throws Exception{
281
282                 String pathFile = FileHandling.getFilePath("VmmscArtifacts");
283                 List<String> vmmscList = new ArrayList<String>();
284                 vmmscList = Arrays.asList(new File(pathFile).list()).stream().filter(e -> e.contains("vmmsc") && e.endsWith(".zip")).collect(Collectors.toList());
285                 assertTrue("Did not find vMMSCs", vmmscList.size() > 0);
286                 
287                 Map<String, String> vspNames = new HashMap<String, String>(); 
288                 for (String vnfFile : vmmscList){
289                         getExtendTest().log(Status.INFO, String.format("Going to onboard the VNF %s......", vnfFile));
290                         System.out.println(String.format("Going to onboard the VNF %s......", vnfFile));
291
292                         AmdocsLicenseMembers amdocsLicenseMembers = OnboardingUiUtils.createVendorLicense(getUser());
293                         ResourceReqDetails resourceReqDetails = ElementFactory.getDefaultResource();//getResourceReqDetails(ComponentConfigurationTypeEnum.DEFAULT);
294                         Pair<String,Map<String,String>> createVendorSoftwareProduct = OnboardingUtils.createVendorSoftwareProduct(resourceReqDetails, vnfFile, pathFile, getUser(), amdocsLicenseMembers);
295
296                         getExtendTest().log(Status.INFO, String.format("Searching for onboarded %s", vnfFile));
297                         HomePage.showVspRepository();
298                         getExtendTest().log(Status.INFO,String.format("Going to import %s......", vnfFile.substring(0, vnfFile.indexOf("."))));
299                         OnboardingUiUtils.importVSP(createVendorSoftwareProduct);
300                         
301                         ResourceGeneralPage.getLeftMenu().moveToDeploymentArtifactScreen();
302                         DeploymentArtifactPage.verifyArtifactsExistInTable(pathFile, vnfFile);
303                         
304                         String vspName = createVendorSoftwareProduct.left;
305                         DeploymentArtifactPage.clickSubmitForTestingButton(vspName);
306                         
307                         vspNames.put(vnfFile, vspName);
308                 }
309                 
310                 reloginWithNewRole(UserRoleEnum.TESTER);
311                 for (String vsp : vspNames.values()){
312                         GeneralUIUtils.findComponentAndClick(vsp);
313                         TesterOperationPage.certifyComponent(vsp);
314                 }
315                 
316                 reloginWithNewRole(UserRoleEnum.DESIGNER);
317                 // create service
318                 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
319                 ServiceUIUtils.createService(serviceMetadata, getUser());
320                 ServiceGeneralPage.getLeftMenu().moveToCompositionScreen();
321                 CanvasManager serviceCanvasManager = CanvasManager.getCanvasManager();
322
323                 for (String vsp : vspNames.values()){
324                         CompositionPage.searchForElement(vsp);
325                         CanvasElement vfElement = serviceCanvasManager.createElementOnCanvas(vsp);
326                         assertNotNull(vfElement);
327                 }
328                 ServiceVerificator.verifyNumOfComponentInstances(serviceMetadata, "0.1", vspNames.values().size(), getUser());
329                 File imageFilePath = GeneralUIUtils.takeScreenshot(null, SetupCDTest.getScreenshotFolder(), "Info_" + getExtendTest().getModel().getName());
330                 final String absolutePath = new File(SetupCDTest.getReportFolder()).toURI().relativize(imageFilePath.toURI()).getPath();
331                 SetupCDTest.getExtendTest().log(Status.INFO, "Three kinds of vMMSC are in canvas now." + getExtendTest().addScreenCaptureFromPath(absolutePath));
332                 
333                 ServiceGeneralPage.clickSubmitForTestingButton(serviceMetadata.getName());
334
335                 reloginWithNewRole(UserRoleEnum.TESTER);
336                 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
337                 TesterOperationPage.certifyComponent(serviceMetadata.getName());
338
339                 reloginWithNewRole(UserRoleEnum.GOVERNOR);
340                 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
341                 GovernorOperationPage.approveSerivce(serviceMetadata.getName());
342
343                 reloginWithNewRole(UserRoleEnum.OPS);
344                 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
345                 OpsOperationPage.distributeService();
346                 OpsOperationPage.displayMonitor();
347
348                 List<WebElement> rowsFromMonitorTable = OpsOperationPage.getRowsFromMonitorTable();
349                 AssertJUnit.assertEquals(1, rowsFromMonitorTable.size());
350
351                 OpsOperationPage.waitUntilArtifactsDistributed(0);
352
353         }
354         
355         
356         @Override
357         protected UserRoleEnum getRole() {
358                 return UserRoleEnum.DESIGNER;
359         }
360
361 }