2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * Copyright (C) 2021 Nokia. All rights reserved.
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END=========================================================
22 package org.onap.sdc.frontend.ci.tests.execute.sanity;
24 import com.aventstack.extentreports.ExtentTest;
25 import com.aventstack.extentreports.Status;
26 import org.onap.sdc.backend.ci.tests.data.providers.OnboardingDataProviders;
27 import org.onap.sdc.frontend.ci.tests.dataProvider.OnbordingDataProviders;
28 import org.onap.sdc.backend.ci.tests.datatypes.enums.XnfTypeEnum;
29 import org.onap.sdc.frontend.ci.tests.flow.CheckSoftwareVersionPropertyFlow;
30 import org.onap.sdc.frontend.ci.tests.flow.CreateResourceFlow;
31 import org.onap.sdc.frontend.ci.tests.flow.CreateVspFlow;
32 import org.onap.sdc.frontend.ci.tests.flow.ImportVspFlow;
33 import org.onap.sdc.frontend.ci.tests.flow.exception.UiTestFlowRuntimeException;
34 import org.onap.sdc.frontend.ci.tests.pages.*;
35 import org.onap.sdc.frontend.ci.tests.utilities.FileHandling;
36 import org.onap.sdc.frontend.ci.tests.utilities.GeneralUIUtils;
37 import org.onap.sdc.frontend.ci.tests.utilities.OnboardingUiUtils;
38 import org.onap.sdc.frontend.ci.tests.utilities.ServiceUIUtils;
39 import org.onap.sdc.backend.ci.tests.utils.Utils;
40 import org.onap.sdc.frontend.ci.tests.verificator.ServiceVerificator;
41 import org.openecomp.sdc.be.model.ComponentInstance;
42 import org.openecomp.sdc.be.model.Resource;
43 import org.openecomp.sdc.be.model.Service;
44 import org.onap.sdc.frontend.ci.tests.datatypes.CanvasElement;
45 import org.onap.sdc.frontend.ci.tests.datatypes.CanvasManager;
46 import org.onap.sdc.frontend.ci.tests.datatypes.DataTestIdEnum;
47 import org.onap.sdc.backend.ci.tests.datatypes.ResourceReqDetails;
48 import org.onap.sdc.backend.ci.tests.datatypes.ServiceReqDetails;
49 import org.onap.sdc.backend.ci.tests.datatypes.VendorLicenseModel;
50 import org.onap.sdc.backend.ci.tests.datatypes.VendorSoftwareProductObject;
51 import org.onap.sdc.backend.ci.tests.datatypes.enums.UserRoleEnum;
52 import org.onap.sdc.frontend.ci.tests.execute.setup.DriverFactory;
53 import org.onap.sdc.frontend.ci.tests.execute.setup.ExtentTestActions;
54 import org.onap.sdc.frontend.ci.tests.execute.setup.SetupCDTest;
55 import org.onap.sdc.frontend.ci.tests.pages.CompositionPage;
56 import org.onap.sdc.frontend.ci.tests.pages.DeploymentArtifactPage;
57 import org.onap.sdc.frontend.ci.tests.pages.GovernorOperationPage;
58 import org.onap.sdc.frontend.ci.tests.pages.HomePage;
59 import org.onap.sdc.frontend.ci.tests.pages.OpsOperationPage;
60 import org.onap.sdc.frontend.ci.tests.pages.ResourceCreatePage;
61 import org.onap.sdc.frontend.ci.tests.pages.ResourceGeneralPage;
62 import org.onap.sdc.frontend.ci.tests.pages.ServiceGeneralPage;
63 import org.onap.sdc.frontend.ci.tests.pages.TesterOperationPage;
64 import org.onap.sdc.frontend.ci.tests.pages.TopNavComponent;
65 import org.onap.sdc.frontend.ci.tests.pages.VspValidationPage;
66 import org.onap.sdc.frontend.ci.tests.pages.VspValidationResultsPage;
67 import org.onap.sdc.backend.ci.tests.utils.general.AtomicOperationUtils;
68 import org.onap.sdc.backend.ci.tests.utils.general.ElementFactory;
69 import org.onap.sdc.backend.ci.tests.utils.general.OnboardingUtils;
70 import org.onap.sdc.backend.ci.tests.utils.general.VendorLicenseModelRestUtils;
71 import org.onap.sdc.backend.ci.tests.utils.general.VendorSoftwareProductRestUtils;
72 import org.openqa.selenium.WebDriver;
73 import org.openqa.selenium.WebElement;
74 import org.slf4j.Logger;
75 import org.slf4j.LoggerFactory;
76 import org.testng.Assert;
77 import org.testng.AssertJUnit;
78 import org.testng.annotations.BeforeMethod;
79 import org.testng.annotations.Optional;
80 import org.testng.annotations.Parameters;
81 import org.testng.annotations.Test;
84 import java.util.Arrays;
85 import java.util.HashMap;
86 import java.util.List;
88 import java.util.stream.Collectors;
90 import static org.testng.AssertJUnit.assertEquals;
91 import static org.testng.AssertJUnit.assertFalse;
92 import static org.testng.AssertJUnit.assertNotNull;
93 import static org.testng.AssertJUnit.assertTrue;
94 import static org.testng.AssertJUnit.fail;
96 public class OnboardingFlowsUi extends SetupCDTest {
98 private static final Logger LOGGER = LoggerFactory.getLogger(OnboardingFlowsUi.class);
99 private static final String NO_TESTS_ARE_AVAILABLE = "No Tests are Available";
100 private static final String NEXT_BUTTON_IS_ENABLED_IT_SHOULD_HAVE_BEEN_ENABLED =
101 "Next Button is enabled, it should have been enabled";
102 private static final String NEXT_BUTTON_IS_DISABLED_IT_SHOULD_HAVE_BEEN_ENABLED =
103 "Next Button is disabled, it should have been enabled";
104 private static final String RESULTS_ARE_NOT_AVAILABLE = "Results are not available";
105 private static final String THE_TESTS_ARE_ALREADY_SELECTED_THE_LIST_SHOULD_INITIALLY_BE_EMPTY =
106 "The tests are already selected, the list should initially be empty";
107 private static final String THE_SELECTED_TESTS_ARE_NOT_POPULATED_IN_THE_LIST =
108 "The selected tests are not populated in the list";
109 private static final String THE_SELECTED_TESTS_ARE_NOT_DELETED_FROM_THE_LIST =
110 "The selected tests are not deleted from the list";
111 private static final String NEXT_BUTTON_IS_ENABLED_IT_SHOULD_HAVE_BEEN_DISABLED =
112 "Next Button is enabled, it should have been disabled";
114 protected static String filePath = FileHandling.getVnfRepositoryPath();
115 private Boolean makeDistributionValue;
117 @Parameters({"makeDistribution"})
119 public void beforeTestReadParams(@Optional("true") String makeDistributionReadValue) {
120 LOGGER.debug("makeDistribution parameter is '{}'", makeDistributionReadValue);
121 makeDistributionValue = Boolean.valueOf(makeDistributionReadValue);
125 public void onboardVNFTestSanityOneFile() throws Exception {
126 String vnfFile = "1-VF-vUSP-vCCF-DB_v11.1.zip";
127 ResourceReqDetails resourceReqDetails = ElementFactory.getDefaultResource();
128 ServiceReqDetails serviceReqDetails = ElementFactory.getDefaultService();
129 runOnboardToDistributionFlow(resourceReqDetails, serviceReqDetails, filePath, vnfFile);
133 public void performanceTest() throws Exception {
134 LOGGER.debug("Start test");
135 Long actualTestRunTime = Utils.getActionDuration(() -> {
137 onboardVNFTestSanityOneFile();
138 } catch (final Exception e) {
139 LOGGER.debug("An error has occurred during the performance test", e);
142 long regularTestRunTime = 400L;
144 assertTrue("Expected test run time should be less from " + regularTestRunTime * factor + ", actual time is " + actualTestRunTime, regularTestRunTime * factor > actualTestRunTime);
148 public void onboardVNFTestSanity() throws Exception {
149 List<String> fileNamesFromFolder = OnboardingUtils.getXnfNamesFileList(XnfTypeEnum.VNF);
150 String vnfFile = fileNamesFromFolder.get(0);
151 ResourceReqDetails resourceReqDetails = ElementFactory.getDefaultResource();
152 ServiceReqDetails serviceReqDetails = ElementFactory.getDefaultService();
153 runOnboardToDistributionFlow(resourceReqDetails, serviceReqDetails, filePath, vnfFile);
156 @Test(dataProviderClass = OnboardingDataProviders.class, dataProvider = "Single_VNF")
157 public void onapOnboardVNFflow(String filePath, String vnfFile) throws Exception {
159 ResourceReqDetails resourceReqDetails = ElementFactory.getDefaultResource();
160 ServiceReqDetails serviceReqDetails = ElementFactory.getDefaultService();
161 runOnboardToDistributionFlow(resourceReqDetails, serviceReqDetails, filePath, vnfFile);
164 @Test(dataProviderClass = OnboardingDataProviders.class, dataProvider = "Single_VNF")
165 public void onapOnboardVSPValidationsSanityFlow(String filePath, String vnfFile) throws Exception {
167 String vspName = createNewVSP(filePath, vnfFile);
168 if (OnboardingUiUtils.getVspValidationCongiguration()) {
169 goToVspScreen(true, vspName);
171 //check links are available
172 checkVspValidationLinksVisibility();
174 VspValidationPage.navigateToVspValidationPageUsingNavbar();
175 assertTrue(NEXT_BUTTON_IS_ENABLED_IT_SHOULD_HAVE_BEEN_DISABLED,
176 VspValidationPage.checkNextButtonDisabled());
177 VspValidationResultsPage.navigateToVspValidationResultsPageUsingNavbar();
178 GeneralUIUtils.ultimateWait();
179 assertNotNull(GeneralUIUtils.findByText("No Test Performed"));
181 goToVspScreen(true, vspName);
183 //check links are not available
184 checkVspValidationLinksInvisibility();
188 @Test(dataProviderClass = OnboardingDataProviders.class, dataProvider = "softwareInformationPnf")
189 public void onboardPNFSoftwareInformationFlow(final String rootFolder, final String pnfFile,
190 final List<String> softwareVersionList) {
192 final String resourceName = ElementFactory.addRandomSuffixToName(ElementFactory.getResourcePrefix());
193 runOnboardPnfSoftwareVersion(resourceName, rootFolder, pnfFile, softwareVersionList);
196 @Test(dataProviderClass = OnboardingDataProviders.class, dataProvider = "Single_VNF")
197 public void onapOnboardVSPValidationsConfigurationChangeCheck(String filePath, String vnfFile) throws Exception {
199 String vspName = createNewVSP(filePath, vnfFile);
200 if (OnboardingUiUtils.getVspValidationCongiguration()) {
201 goToVspScreen(true, vspName);
202 //check links are available
203 checkVspValidationLinksVisibility();
206 changeVspValidationConfig(false, vspName, OnboardingUiUtils.getVspValidationCongiguration());
208 //check links are not available
209 checkVspValidationLinksInvisibility();
211 goToVspScreen(true, vspName);
212 //check links are not available
213 checkVspValidationLinksInvisibility();
215 changeVspValidationConfig(false, vspName, OnboardingUiUtils.getVspValidationCongiguration());
217 //check links are available
218 checkVspValidationLinksVisibility();
222 @Test(dataProviderClass = OnboardingDataProviders.class, dataProvider = "Single_VNF")
223 public void onapOnboardVSPCertificationQueryFlow(String filePath, String vnfFile) throws Exception {
225 String vspName = createNewVSP(filePath, vnfFile);
226 if (!OnboardingUiUtils.getVspValidationCongiguration()) {
227 //change config to true to test the feature
228 changeVspValidationConfig(true, vspName, OnboardingUiUtils.getVspValidationCongiguration());
230 goToVspScreen(true, vspName);
232 VspValidationPage.navigateToVspValidationPageUsingNavbar();
233 assertTrue(NEXT_BUTTON_IS_ENABLED_IT_SHOULD_HAVE_BEEN_DISABLED, VspValidationPage.checkNextButtonDisabled());
235 if (VspValidationPage.checkCertificationQueryExists()) {
236 VspValidationPage.clickCertificationQueryAll();
237 GeneralUIUtils.ultimateWait();
238 assertTrue(NEXT_BUTTON_IS_DISABLED_IT_SHOULD_HAVE_BEEN_ENABLED,
239 !VspValidationPage.checkNextButtonDisabled());
240 VspValidationPage.clickOnNextButton();
241 GeneralUIUtils.ultimateWait();
242 VspValidationPage.clickOnSubmitButton();
243 GeneralUIUtils.waitForLoader();
244 assertTrue(RESULTS_ARE_NOT_AVAILABLE, VspValidationResultsPage.checkResultsExist());
246 assertNotNull(GeneralUIUtils.findByText("No Certifications Query are Available"));
251 @Test(dataProviderClass = OnbordingDataProviders.class, dataProvider = "Single_Vsp_Test_Csar")
252 public void onapOnboardVSPComplianceCheckFlow(String filePath, String vnfFile) throws Exception {
254 String vspName = createNewVSP(filePath, vnfFile);
255 if (!OnboardingUiUtils.getVspValidationCongiguration()) {
256 //change config to true to test the feature
257 changeVspValidationConfig(true, vspName, OnboardingUiUtils.getVspValidationCongiguration());
259 goToVspScreen(true, vspName);
262 VspValidationPage.navigateToVspValidationPageUsingNavbar();
263 assertTrue(NEXT_BUTTON_IS_ENABLED_IT_SHOULD_HAVE_BEEN_ENABLED, VspValidationPage.checkNextButtonDisabled());
264 if (VspValidationPage.checkComplianceCheckExists()) {
265 VspValidationPage.clickComplianceChecksAll();
266 GeneralUIUtils.ultimateWait();
267 assertFalse(NEXT_BUTTON_IS_DISABLED_IT_SHOULD_HAVE_BEEN_ENABLED,
268 VspValidationPage.checkNextButtonDisabled());
269 VspValidationPage.clickOnNextButton();
270 GeneralUIUtils.ultimateWait();
271 VspValidationPage.loadVSPFile(filePath, vnfFile);
272 VspValidationPage.clickOnSubmitButton();
273 GeneralUIUtils.ultimateWait();
274 assertTrue(RESULTS_ARE_NOT_AVAILABLE, VspValidationResultsPage.checkResultsExist());
276 assertNotNull(GeneralUIUtils.findByText(NO_TESTS_ARE_AVAILABLE));
281 @Test(dataProviderClass = OnboardingDataProviders.class, dataProvider = "Single_VNF")
282 public void onapOnboardVSPComplianceCheckOperations(String filePath, String vnfFile) throws Exception {
284 String vspName = createNewVSP(filePath, vnfFile);
285 if (!OnboardingUiUtils.getVspValidationCongiguration()) {
286 //change config to true to test the feature
287 changeVspValidationConfig(true, vspName, OnboardingUiUtils.getVspValidationCongiguration());
289 goToVspScreen(true, vspName);
292 VspValidationPage.navigateToVspValidationPageUsingNavbar();
293 assertTrue(NEXT_BUTTON_IS_ENABLED_IT_SHOULD_HAVE_BEEN_ENABLED, VspValidationPage.checkNextButtonDisabled());
294 if (VspValidationPage.checkComplianceCheckExists()) {
295 assertFalse(THE_TESTS_ARE_ALREADY_SELECTED_THE_LIST_SHOULD_INITIALLY_BE_EMPTY,
296 VspValidationPage.checkSelectedComplianceCheckExists());
297 VspValidationPage.clickComplianceChecksAll();
298 GeneralUIUtils.ultimateWait();
299 assertTrue(THE_SELECTED_TESTS_ARE_NOT_POPULATED_IN_THE_LIST,
300 VspValidationPage.checkSelectedComplianceCheckExists());
301 VspValidationPage.clickComplianceChecksAll();
302 GeneralUIUtils.ultimateWait();
303 assertFalse(THE_SELECTED_TESTS_ARE_NOT_DELETED_FROM_THE_LIST,
304 VspValidationPage.checkSelectedComplianceCheckExists());
306 assertNotNull(GeneralUIUtils.findByText(NO_TESTS_ARE_AVAILABLE));
311 @Test(dataProviderClass = OnboardingDataProviders.class, dataProvider = "Single_VNF")
312 public void onapOnboardVSPCertificationQueryOperations(String filePath, String vnfFile) throws Exception {
314 String vspName = createNewVSP(filePath, vnfFile);
315 if (!OnboardingUiUtils.getVspValidationCongiguration()) {
316 //change config to true to test the feature
317 changeVspValidationConfig(true, vspName, OnboardingUiUtils.getVspValidationCongiguration());
319 goToVspScreen(true, vspName);
322 VspValidationPage.navigateToVspValidationPageUsingNavbar();
323 assertTrue(NEXT_BUTTON_IS_ENABLED_IT_SHOULD_HAVE_BEEN_ENABLED, VspValidationPage.checkNextButtonDisabled());
324 if (VspValidationPage.checkCertificationQueryExists()) {
325 assertFalse(THE_TESTS_ARE_ALREADY_SELECTED_THE_LIST_SHOULD_INITIALLY_BE_EMPTY,
326 VspValidationPage.checkSelectedCertificationQueryExists());
327 VspValidationPage.clickCertificationQueryAll();
328 GeneralUIUtils.ultimateWait();
329 assertTrue(THE_SELECTED_TESTS_ARE_NOT_POPULATED_IN_THE_LIST, VspValidationPage.checkSelectedCertificationQueryExists());
330 VspValidationPage.clickCertificationQueryAll();
331 GeneralUIUtils.ultimateWait();
332 assertFalse(THE_SELECTED_TESTS_ARE_NOT_DELETED_FROM_THE_LIST,
333 VspValidationPage.checkSelectedCertificationQueryExists());
335 assertNotNull(GeneralUIUtils.findByText(NO_TESTS_ARE_AVAILABLE));
340 private void checkVspValidationLinksVisibility() {
341 //check links are available
342 assertTrue("Validation Link is not available", GeneralUIUtils.isElementVisibleByTestId(DataTestIdEnum.VspValidationPage.VSP_VALIDATION_PAGE_NAVBAR.getValue()));
343 assertTrue("Validation Results Link is not available", GeneralUIUtils.isElementVisibleByTestId(DataTestIdEnum.VspValidationResultsPage.VSP_VALIDATION_RESULTS_PAGE_NAVBAR.getValue()));
346 private void checkVspValidationLinksInvisibility() {
347 //check links not available
348 assertTrue("Validation Link is still available", GeneralUIUtils.isElementInvisibleByTestId(DataTestIdEnum.VspValidationPage.VSP_VALIDATION_PAGE_NAVBAR.getValue()));
349 assertTrue("Validation Results Link is still available", GeneralUIUtils.isElementInvisibleByTestId(DataTestIdEnum.VspValidationResultsPage.VSP_VALIDATION_RESULTS_PAGE_NAVBAR.getValue()));
352 private void changeVspValidationConfig(boolean isCurrentScreenCatalogPage, String vspName, boolean vspConfig) throws Exception {
354 OnboardingUiUtils.putVspValidationCongiguration(!vspConfig);
355 assertTrue(String.format("Failed to set Congiguration to %s", !vspConfig), OnboardingUiUtils.getVspValidationCongiguration() != vspConfig);
357 if (!isCurrentScreenCatalogPage) {
358 GeneralUIUtils.refreshWebpage();
359 GeneralUIUtils.ultimateWait();
362 goToVspScreen(isCurrentScreenCatalogPage, vspName);
365 OnboardingUiUtils.putVspValidationCongiguration(vspConfig);
366 assertEquals(String.format("Failed to revert Configuration to %s", vspConfig), vspConfig,
367 OnboardingUiUtils.getVspValidationCongiguration());
370 private void goToVspScreen(boolean isCurrentScreenCatalogPage, String vspName) {
371 if (isCurrentScreenCatalogPage) {
372 GeneralUIUtils.clickOnElementByTestId(DataTestIdEnum.MainMenuButtons.ONBOARD_BUTTON.getValue());
374 GeneralUIUtils.clickOnElementByText(vspName);
375 GeneralUIUtils.ultimateWait();
378 private String createNewVSP(String filePath, String vnfFile) throws Exception {
379 ResourceReqDetails resourceReqDetails = ElementFactory.getDefaultResource();
380 return OnboardingUiUtils.createVSP(resourceReqDetails, vnfFile, filePath, getUser()).getName();
383 public void runOnboardPnfSoftwareVersion(final String resourceName, final String rootFolder,
384 final String pnfFile, final List<String> softwareVersionList) {
385 final ExtentTest extendTest = getExtendTest();
387 final String swVersionsToString = String.join(", ", softwareVersionList);
389 extendTest.log(Status.INFO,
390 String.format("Creating VSP '%s' by onboarding package '%s' with software version '%s'",
391 resourceName, pnfFile, swVersionsToString)
393 final WebDriver webDriver = DriverFactory.getDriver();
394 final CreateVspFlow createVspFlow = new CreateVspFlow(webDriver, resourceName, pnfFile, rootFolder);
395 createVspFlow.run(new TopNavComponent(webDriver));
397 final ImportVspFlow importVspFlow = new ImportVspFlow(webDriver, resourceName);
398 final ResourceCreatePage resourceCreatePage =
399 (ResourceCreatePage) importVspFlow.run()
400 .orElseThrow(() -> new UiTestFlowRuntimeException("Missing expected return ResourceCreatePage"));
402 final CreateResourceFlow createResourceFlow = new CreateResourceFlow(webDriver, resourceName);
403 createResourceFlow.run(resourceCreatePage);
405 final CheckSoftwareVersionPropertyFlow checkSoftwareVersionPropertyFlow =
406 new CheckSoftwareVersionPropertyFlow(webDriver, softwareVersionList);
407 checkSoftwareVersionPropertyFlow.run();
409 extendTest.log(Status.INFO,
410 String.format("Successfully onboarded the package '%s' with software version '%s'",
411 pnfFile, swVersionsToString)
415 private void runOnboardToDistributionFlow(ResourceReqDetails resourceReqDetails, ServiceReqDetails serviceMetadata, String filePath, String vnfFile) throws Exception {
416 getExtendTest().log(Status.INFO, "Going to create resource with category: " + resourceReqDetails.getCategories().get(0).getName()
417 + " subCategory: " + resourceReqDetails.getCategories().get(0).getSubcategories().get(0).getName()
418 + " and service category: " + serviceMetadata.getCategory());
419 final String vspName = onboardAndCertify(resourceReqDetails, filePath, vnfFile);
421 ServiceUIUtils.createService(serviceMetadata);
423 ServiceGeneralPage.getLeftMenu().moveToCompositionScreen();
424 Service containerObject = AtomicOperationUtils.getServiceObjectByNameAndVersion(UserRoleEnum.DESIGNER, serviceMetadata.getName(), "0.1");
425 Resource instanceObject = AtomicOperationUtils.getResourceObjectByNameAndVersion(UserRoleEnum.DESIGNER, vspName, "1.0");
426 ComponentInstance componentInstanceDetails = AtomicOperationUtils.addComponentInstanceToComponentContainer(instanceObject, containerObject, UserRoleEnum.DESIGNER, true).left().value();
428 GeneralUIUtils.clickOnAreaJS(DataTestIdEnum.LifeCyleChangeButtons.CERTIFY.getValue());
430 GeneralUIUtils.getWebElementByTestID(DataTestIdEnum.DistributionChangeButtons.APPROVE_MESSAGE.getValue())
431 .sendKeys("service " + serviceMetadata.getName() + " certified successfully");
432 GeneralPageElements.clickOKButton();
433 getExtendTest().log(Status.INFO, String.format("Successfully onboarded the package '%s'", vnfFile));
436 private void runDistributionFlow(final ServiceReqDetails serviceMetadata) throws Exception {
437 if (makeDistributionValue) {
438 reloginWithNewRole(UserRoleEnum.OPS);
439 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
440 OpsOperationPage.distributeService();
441 OpsOperationPage.displayMonitor();
443 final List<WebElement> rowsFromMonitorTable = OpsOperationPage.getRowsFromMonitorTable();
444 AssertJUnit.assertEquals(1, rowsFromMonitorTable.size());
446 OpsOperationPage.waitUntilArtifactsDistributed(0);
450 private String onboardAndCertify(ResourceReqDetails resourceReqDetails, String filePath, String vnfFile) throws Exception {
451 VendorSoftwareProductObject onboardAndValidate = OnboardingUiUtils.onboardAndValidate(resourceReqDetails, filePath, vnfFile, getUser());
452 String vspName = onboardAndValidate.getName();
454 DeploymentArtifactPage.getLeftPanel().moveToCompositionScreen();
455 ExtentTestActions.addScreenshot(Status.INFO, "TopologyTemplate_" + vnfFile, "The topology template for " + vnfFile + " is as follows : ");
457 DeploymentArtifactPage.clickCertifyButton(vspName);
462 @Test(dataProviderClass = OnbordingDataProviders.class, dataProvider = "VNF_List")
463 public void onboardVNFTest(String filePath, String vnfFile) throws Exception {
465 ResourceReqDetails resourceReqDetails = ElementFactory.getRandomCategoryResource();
466 ServiceReqDetails serviceReqDetails = ElementFactory.getRandomCategoryService();
467 runOnboardToDistributionFlow(resourceReqDetails, serviceReqDetails, filePath, vnfFile);
470 @Test(dataProviderClass = OnbordingDataProviders.class, dataProvider = "CNF_List")
471 public void onboardCNFTest(String filePath, String cnfFile) throws Exception {
473 ResourceReqDetails resourceReqDetails = ElementFactory.getDefaultResource();
474 ServiceReqDetails serviceReqDetails = ElementFactory.getDefaultService();
475 runOnboardToDistributionFlow(resourceReqDetails, serviceReqDetails, filePath, cnfFile);
478 @Test(dataProviderClass = OnbordingDataProviders.class, dataProvider = "Invalid_CNF_List")
479 public void onboardCNFTestShouldFailForInvalidHelmPackage(String filePath, String cnfFile) {
481 ResourceReqDetails resourceReqDetails = ElementFactory.getDefaultResource();
482 ServiceReqDetails serviceReqDetails = ElementFactory.getDefaultService();
483 Assert.assertThrows(() -> runOnboardToDistributionFlow(resourceReqDetails, serviceReqDetails, filePath, cnfFile));
486 @Test(dataProviderClass = OnbordingDataProviders.class, dataProvider = "VNF_List")
487 public void onboardVNFShotFlow(String filePath, String vnfFile) throws Exception {
489 ResourceReqDetails resourceReqDetails = ElementFactory.getDefaultResource();
490 onboardAndCertify(resourceReqDetails, filePath, vnfFile);
493 @Test(dataProviderClass = OnbordingDataProviders.class, dataProvider = "randomVNF_List")
494 public void onboardRandomVNFsTest(String filePath, String vnfFile) throws Exception {
496 LOGGER.debug("Vnf File name is: {}", vnfFile);
497 ResourceReqDetails resourceReqDetails = ElementFactory.getRandomCategoryResource();
498 ServiceReqDetails serviceReqDetails = ElementFactory.getRandomCategoryService();
499 runOnboardToDistributionFlow(resourceReqDetails, serviceReqDetails, filePath, vnfFile);
504 public void onboardUpdateVNFTest() throws Exception {
505 List<String> fileNamesFromFolder = FileHandling.getZipFileNamesFromFolder(filePath);
506 String vnfFile = fileNamesFromFolder.get(0);
507 ResourceReqDetails resourceReqDetails = ElementFactory.getDefaultResource();
508 VendorSoftwareProductObject vsp = OnboardingUiUtils.onboardAndValidate(resourceReqDetails, filePath, vnfFile, getUser());
509 String vspName = vsp.getName();
510 ResourceGeneralPage.clickCertifyButton(vspName);
513 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
514 ServiceUIUtils.createService(serviceMetadata);
516 ServiceGeneralPage.getLeftMenu().moveToCompositionScreen();
517 CompositionPage.searchForElement(vspName);
518 CanvasManager serviceCanvasManager = CanvasManager.getCanvasManager();
519 CanvasElement vfElement = serviceCanvasManager.createElementOnCanvas(vspName);
520 assertNotNull(vfElement);
521 ServiceVerificator.verifyNumOfComponentInstances(serviceMetadata, "0.1", 1, getUser());
523 if (!HomePage.navigateToHomePage()) {
524 fail("Could not go to the home page");
528 String updatedVnfFile = fileNamesFromFolder.get(1);
530 getExtendTest().log(Status.INFO, String.format("Going to update the VNF with %s......", updatedVnfFile));
531 // update VendorSoftwareProduct
532 OnboardingUiUtils.updateVnfAndValidate(filePath, vsp, updatedVnfFile, getUser());
533 ResourceGeneralPage.clickCertifyButton(vspName);
535 // replace exiting VFI in service with new updated
537 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
538 ServiceGeneralPage.getLeftMenu().moveToCompositionScreen();
539 serviceCanvasManager = CanvasManager.getCanvasManager();
540 CompositionPage.changeComponentVersion(serviceCanvasManager, vfElement, "2.0");
541 ServiceVerificator.verifyNumOfComponentInstances(serviceMetadata, "0.1", 1, getUser());
543 ServiceGeneralPage.clickSubmitForTestingButton(serviceMetadata.getName());
545 reloginWithNewRole(UserRoleEnum.TESTER);
546 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
547 TesterOperationPage.certifyComponent(serviceMetadata.getName());
549 reloginWithNewRole(UserRoleEnum.GOVERNOR);
550 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
551 GovernorOperationPage.approveService(serviceMetadata.getName());
554 reloginWithNewRole(UserRoleEnum.OPS);
555 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
556 OpsOperationPage.distributeService();
557 OpsOperationPage.displayMonitor();
559 List<WebElement> rowsFromMonitorTable = OpsOperationPage.getRowsFromMonitorTable();
560 AssertJUnit.assertEquals(1, rowsFromMonitorTable.size());
562 OpsOperationPage.waitUntilArtifactsDistributed(0);
563 getExtendTest().log(Status.INFO, String.format("Onboarding %s test is passed ! ", vnfFile));
568 public void threeVMMSCsInServiceTest() throws Exception {
569 String pathFile = FileHandling.getFilePath("VmmscArtifacts");
570 final String[] list = new File(pathFile).list();
571 assertNotNull("Did not find vMMSCs", list);
572 assertFalse("Did not find vMMSCs", list.length == 0);
573 List<String> vmmscList = Arrays.stream(list).filter(e -> e.contains("vmmsc") && e.endsWith(".zip"))
574 .collect(Collectors.toList());
575 assertFalse("Did not find vMMSCs", vmmscList.isEmpty());
577 Map<String, String> vspNames = new HashMap<>();
578 for (String vnfFile : vmmscList) {
579 String msg = String.format("Going to onboard the VNF %s", vnfFile);
580 getExtendTest().log(Status.INFO, msg);
583 VendorLicenseModel vendorLicenseModel = VendorLicenseModelRestUtils.createVendorLicense(getUser());
584 ResourceReqDetails resourceReqDetails = ElementFactory.getDefaultResource();
585 VendorSoftwareProductObject createVendorSoftwareProduct = VendorSoftwareProductRestUtils
586 .createVendorSoftwareProduct(resourceReqDetails, vnfFile, pathFile, getUser(), vendorLicenseModel);
588 getExtendTest().log(Status.INFO, String.format("Searching for onboarded %s", vnfFile));
589 HomePage.showVspRepository();
590 getExtendTest().log(Status.INFO, String.format("Going to import %s......", vnfFile.substring(0, vnfFile.indexOf("."))));
591 OnboardingUiUtils.importVSP(createVendorSoftwareProduct);
593 ResourceGeneralPage.getLeftMenu().moveToDeploymentArtifactScreen();
594 DeploymentArtifactPage.verifyArtifactsExistInTable(pathFile, vnfFile);
596 String vspName = createVendorSoftwareProduct.getName();
597 DeploymentArtifactPage.clickCertifyButton(vspName);
598 vspNames.put(vnfFile, vspName);
602 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
603 ServiceUIUtils.createService(serviceMetadata);
604 ServiceGeneralPage.getLeftMenu().moveToCompositionScreen();
605 CanvasManager serviceCanvasManager = CanvasManager.getCanvasManager();
607 for (String vsp : vspNames.values()) {
608 CompositionPage.searchForElement(vsp);
609 CanvasElement vfElement = serviceCanvasManager.createElementOnCanvas(vsp);
610 assertNotNull(vfElement);
612 ServiceVerificator.verifyNumOfComponentInstances(serviceMetadata, "0.1", vspNames.values().size(), getUser());
613 File imageFilePath = GeneralUIUtils.takeScreenshot(null, SetupCDTest.getScreenshotFolder(), "Info_" + getExtendTest().getModel().getName());
614 final String absolutePath = new File(SetupCDTest.getReportFolder()).toURI().relativize(imageFilePath.toURI()).getPath();
615 SetupCDTest.getExtendTest().log(Status.INFO, "Three kinds of vMMSC are in canvas now." + getExtendTest().addScreenCaptureFromPath(absolutePath));
617 ServiceGeneralPage.clickSubmitForTestingButton(serviceMetadata.getName());
619 reloginWithNewRole(UserRoleEnum.TESTER);
620 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
621 TesterOperationPage.certifyComponent(serviceMetadata.getName());
623 reloginWithNewRole(UserRoleEnum.GOVERNOR);
624 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
625 GovernorOperationPage.approveService(serviceMetadata.getName());
627 reloginWithNewRole(UserRoleEnum.OPS);
628 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
629 OpsOperationPage.distributeService();
630 OpsOperationPage.displayMonitor();
632 List<WebElement> rowsFromMonitorTable = OpsOperationPage.getRowsFromMonitorTable();
633 AssertJUnit.assertEquals(1, rowsFromMonitorTable.size());
635 OpsOperationPage.waitUntilArtifactsDistributed(0);
640 protected UserRoleEnum getRole() {
641 return UserRoleEnum.DESIGNER;