From 4a4dcc5185f8ba5a28c7f9fef509f32c0c2389e6 Mon Sep 17 00:00:00 2001 From: "Sonsino, Ofir (os0695)" Date: Sun, 12 Aug 2018 14:51:28 +0300 Subject: vid-automation selenium tests Change-Id: I6c1b0a0cf3bbfa4314c81f0cc72507db805ec632 Issue-ID: VID-281 Signed-off-by: Sonsino, Ofir (os0695) --- .../test/test/ViewEditServiceInstanceTest.java | 282 ++++++++++++++++++--- 1 file changed, 253 insertions(+), 29 deletions(-) (limited to 'vid-automation/src/main/java/vid/automation/test/test/ViewEditServiceInstanceTest.java') diff --git a/vid-automation/src/main/java/vid/automation/test/test/ViewEditServiceInstanceTest.java b/vid-automation/src/main/java/vid/automation/test/test/ViewEditServiceInstanceTest.java index f38433bde..d64b6b18c 100644 --- a/vid-automation/src/main/java/vid/automation/test/test/ViewEditServiceInstanceTest.java +++ b/vid-automation/src/main/java/vid/automation/test/test/ViewEditServiceInstanceTest.java @@ -1,68 +1,193 @@ package vid.automation.test.test; +import com.google.common.collect.ImmutableMap; +import org.hamcrest.MatcherAssert; import org.junit.Assert; import org.junit.Before; +import org.opencomp.simulator.presetGenerator.presets.aai.PresetAAIGetNetworkCollectionDetails; +import org.openecomp.sdc.ci.tests.utilities.GeneralUIUtils; +import org.openqa.selenium.By; import org.openqa.selenium.WebElement; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import vid.automation.test.Constants; -import vid.automation.test.infra.Exists; -import vid.automation.test.infra.Get; -import vid.automation.test.infra.Wait; +import vid.automation.test.infra.*; import vid.automation.test.model.User; +import vid.automation.test.sections.VidBasePage; import vid.automation.test.sections.ViewEditPage; import vid.automation.test.services.BulkRegistration; import vid.automation.test.services.SimulatorApi; -import vid.automation.test.services.UsersService; -import java.io.IOException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDate; import java.util.Arrays; import java.util.List; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import static org.apache.logging.log4j.core.util.Assert.isNonEmpty; +import static org.hamcrest.Matchers.equalTo; +import static org.testng.AssertJUnit.assertEquals; +import static vid.automation.test.infra.Features.FLAG_COLLECTION_RESOURCE_SUPPORT; +import static vid.automation.test.services.SimulatorApi.RegistrationStrategy.APPEND; public class ViewEditServiceInstanceTest extends VidBaseTestCase { private ViewEditPage viewEditPage = new ViewEditPage(); - private UsersService usersService = new UsersService(); + VidBasePage vidBasePage =new VidBasePage(); private String serviceInstanceId = "3f93c7cb-2fd0-4557-9514-e189b7b04f9d"; - private String serviceInstanceId2 ="f36f5734-e9df-4fbf-9f35-61be13f028a1"; + private String crServiceInstanceId = "3f93c7cb-2fd0-4557-9514-e189b7testCR"; + private String serviceInstanceId2 ="c187e9fe-40c3-4862-b73e-84ff056205f6"; private final String DEACTIVATE_ACTION = "deactivate"; private final String ACTIVATE_ACTION = "activate"; private List pnfs = Arrays.asList("SANITY6785cce9", "tesai371ve2"); + private final String serviceInstanceIdeWithoutModelVerId ="9caf5581-40ab-47be-b1f1-909a87724add"; + private final String crNetworkText ="NETWORK INSTANCE GROUP: l3network-id-rs804s | ROLE: HngwProtectedOam.OAM | TYPE: Tenant_Layer_3 | # OF NETWORKS: 3"; + private final String crCollectionText ="COLLECTION: collection-name | TYPE: L3-NETWORK"; + private final String crInfoText = "\"requestState\": \"COMPLETE\""; + SimpleDateFormat dateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss"); + static final String LCP_REGION = "mtn6"; + static final String TENANT = "bae71557c5bb4d5aac6743a4e5f1d054"; + - public ViewEditServiceInstanceTest() throws IOException { } + /////////////////////////////////////////////// + /// Activate / Deactivate service instance /// + ////////////////////////////////////////////// + @FeatureTogglingTest(value = FLAG_COLLECTION_RESOURCE_SUPPORT) @Test - public void testGetAssociatedPnfsForServiceInstance() { + public void testViewEditCRServiceInstance()throws Exception { SimulatorApi.clearAll(); - BulkRegistration.searchExistingServiceInstance(); - BulkRegistration.getAssociatedPnfs(); + BulkRegistration.searchExistingCRServiceInstance("Created"); + BulkRegistration.activateServiceInstance(ACTIVATE_ACTION); + final PresetAAIGetNetworkCollectionDetails presetAAIGetNetworkCollectionDetails = new PresetAAIGetNetworkCollectionDetails(crServiceInstanceId); + SimulatorApi.registerExpectationFromPreset(presetAAIGetNetworkCollectionDetails, APPEND); + goToExistingInstanceById(crServiceInstanceId); + WebElement webElement = Get.byTestId(Constants.ViewEdit.COLLECTIONDIV); + Assert.assertNotNull(webElement); + Assert.assertEquals(webElement.getText(), crCollectionText); + webElement = Get.byTestId(Constants.ViewEdit.COLLECTIONNETWORKDIV); + Assert.assertNotNull(webElement); + Assert.assertEquals(webElement.getText(), crNetworkText); + viewEditPage.clickInfoButton(); + webElement = Get.byTestId(Constants.ViewEdit.SERVICE_INSTANCE_ID); + Assert.assertEquals(webElement.getText(), crServiceInstanceId); + webElement = Get.byTestId(Constants.ViewEdit.DETAILS_LOG); + Assert.assertTrue(webElement.getText().contains(crInfoText)); + webElement = Get.byTestId(Constants.ViewEdit.DETAILS_CLOSE_BTN); + webElement.click(); + viewEditPage.clickDeleteButton(); + } - goToExistingInstanceById(serviceInstanceId); - for (String pnf: pnfs) { - viewEditPage.getPnf(pnf); - } + private void deleteInstance(String deleteButtonId, String successMessage) { + navigateToViewEditPageOfuspVoiceVidTest444("7a6ee536-f052-46fa-aa7e-2fca9d674c44"); + Click.byTestId(deleteButtonId); + viewEditPage.selectLCPRegion(LCP_REGION); + viewEditPage.selectTenant(TENANT); + vidBasePage.clickConfirmButtonInResumeDelete(); + viewEditPage.assertMsoRequestModal(successMessage); + viewEditPage.clickCommitCloseButton(); + GeneralUIUtils.ultimateWait(); } @Test - public void testPnfsNotExistForServiceInstance() { + public void deleteVolumeGroupInstance_deleteDialogAppears_msoResponseIsOk() { SimulatorApi.clearAll(); - BulkRegistration.searchExistingServiceInstance(); + BulkRegistration.deleteExistingVolumeGroupInstance("CREATED"); + deleteInstance(Constants.ViewEdit.DELETE_VNF_VOLUME_GROUP_BUTTON_TEST_ID, Constants.ViewEdit.VOLUME_GROUP_DELETED_SUCCESSFULLY_TEXT); + } - goToExistingInstanceById(serviceInstanceId); - assertNoPnfExists(); + @Test + public void deleteVfModuleInstance_deleteDialogAppears_msoResponseIsOk() { + SimulatorApi.clearAll(); + BulkRegistration.deleteExistingVfModuleInstance("CREATED"); + deleteInstance(Constants.ViewEdit.DELETE_VF_MODULE_BUTTON_TEST_ID + "aa", Constants.ViewEdit.VF_MODULE_DELETED_SUCCESSFULLY_TEXT); } + @Test - public void testActivateServiceInstance()throws Exception { + public void deleteNetworkInstance_deleteDialogAppears_msoResponseIsOk() { SimulatorApi.clearAll(); - BulkRegistration.searchExistingServiceInstance("Created"); + BulkRegistration.deleteExistingNetworkInstance("CREATED"); + deleteInstance(Constants.ViewEdit.DELETE_NETWORK_BUTTON_TEST_ID, Constants.ViewEdit.VL_DELETED_SUCCESSFULLY_TEXT); + } + + @Test + public void deleteVnfInstance_deleteDialogAppears_msoResponseIsOk() { + SimulatorApi.clearAll(); + BulkRegistration.deleteExistingVnfInstance("CREATED"); + deleteInstance(Constants.ViewEdit.DELETE_VNF_BUTTON_TEST_ID,Constants.ViewEdit.VNF_DELETED_SUCCESSFULLY_TEXT); + } + + @Test + public void deleteServiceInstance_deleteDialogAppears_msoResponseIsOk() { + SimulatorApi.clearAll(); + BulkRegistration.deleteExistingServiceInstance("ACTIVE"); + navigateToViewEditPageOfuspVoiceVidTest444("7a6ee536-f052-46fa-aa7e-2fca9d674c44"); + viewEditPage.clickDeleteButton(); + vidBasePage.clickConfirmButtonInResumeDelete(); + viewEditPage.assertMsoRequestModal(Constants.ViewEdit.SERVICE_DELETED_SUCCESSFULLY_TEXT); + viewEditPage.clickCommitCloseButton(); + GeneralUIUtils.ultimateWait(); + } + + @Test(dataProvider = "serviceStatusesAndExpectedResults") + public void testActivateServiceInstanceTransportType(String orchStatus) { + SimulatorApi.clearAll(); + BulkRegistration.searchExistingServiceInstance(orchStatus); BulkRegistration.activateServiceInstance(ACTIVATE_ACTION); goToExistingInstanceById(serviceInstanceId); - viewEditPage.assertButtonState(Constants.ViewEdit.ACTIVATE_BUTTON_TEST_ID,true); + viewEditPage.assertButtonState(Constants.ViewEdit.ACTIVATE_BUTTON_TEST_ID, true); viewEditPage.assertButtonState(Constants.ViewEdit.DEACTIVATE_BUTTON_TEST_ID,false); + assertResumeButtonVisibility(false, false); + assertAndCheckShowAssignmentsSdncUrl(orchStatus, serviceInstanceId); viewEditPage.clickActivateButton(); - viewEditPage.assertMsoRequestModal("COMPLETE - Success"); + viewEditPage.assertMsoRequestModal(Constants.ViewEdit.MSO_SUCCESSFULLY_TEXT); viewEditPage.clickCloseButton(); } + private void assertAndCheckShowAssignmentsSdncUrl(String orchStatus, String serviceInstanceId) { + boolean buttonIsEnable = Features.FLAG_SHOW_ASSIGNMENTS.isActive() && orchStatus.equals("assiGNed"); + viewEditPage.assertButtonState(Constants.ViewEdit.SHOW_ASSIGNMENTS_BUTTON_TEST_ID, buttonIsEnable); + if (buttonIsEnable) { + WebElement webElement = Get.byTestId(Constants.ViewEdit.SHOW_ASSIGNMENTS_BUTTON_TEST_ID); + String expectedUrl = "https://mtanjv9sdma51.aic.cip.att.com:8448/configAdapter/index#/resource_manager/"+serviceInstanceId; + MatcherAssert.assertThat("Show assignments SDNC url is wrong", + webElement.getAttribute("href"), equalTo(expectedUrl)); + } + + } + + @DataProvider + public static Object[][] serviceStatusesAndExpectedResults() { + return new Object[][] { + { "Created" }, + {"pendingdeLete" }, + {"pending-deLete" }, + {"assiGNed" } + }; + } + + @Test + public void testDeactivateServiceInstanceNotTransportType()throws Exception { + SimulatorApi.clearAll(); + BulkRegistration.searchExistingServiceInstancePortMirroring("Active", "mdt1"); + goToExistingInstanceById(serviceInstanceId2); + viewEditPage.assertButtonState(Constants.ViewEdit.ACTIVATE_BUTTON_TEST_ID, false); + viewEditPage.assertButtonState(Constants.ViewEdit.DEACTIVATE_BUTTON_TEST_ID, true); + } + + @Test + public void testActivateServiceInstanceNotTransportType()throws Exception { + SimulatorApi.clearAll(); + BulkRegistration.searchExistingServiceInstancePortMirroring("Created", "mdt1"); + goToExistingInstanceById(serviceInstanceId2); + viewEditPage.assertButtonState(Constants.ViewEdit.ACTIVATE_BUTTON_TEST_ID, true); + viewEditPage.assertButtonState(Constants.ViewEdit.DEACTIVATE_BUTTON_TEST_ID, false); + } + @Test public void testActivateServiceInstanceError()throws Exception { SimulatorApi.clearAll(); @@ -75,6 +200,7 @@ public class ViewEditServiceInstanceTest extends VidBaseTestCase { viewEditPage.assertMsoRequestModal("Error"); viewEditPage.clickCloseButton(); } + @Test public void testDeactivateServiceInstance(){ SimulatorApi.clearAll(); @@ -83,12 +209,14 @@ public class ViewEditServiceInstanceTest extends VidBaseTestCase { goToExistingInstanceById(serviceInstanceId); viewEditPage.assertButtonState(Constants.ViewEdit.DEACTIVATE_BUTTON_TEST_ID,true); viewEditPage.assertButtonState(Constants.ViewEdit.ACTIVATE_BUTTON_TEST_ID,false); + assertResumeButtonVisibility(true, true); viewEditPage.clickDeactivateButton(); - viewEditPage.assertMsoRequestModal("COMPLETE - Success"); + viewEditPage.assertMsoRequestModal(Constants.ViewEdit.MSO_SUCCESSFULLY_TEXT); SimulatorApi.clearAll(); BulkRegistration.searchExistingServiceInstance("PendingDelete"); BulkRegistration.activateServiceInstance(ACTIVATE_ACTION); viewEditPage.clickCloseButton(); + GeneralUIUtils.findAndWaitByText(serviceInstanceId, 30); //kind of "ultimate wait" for refresh to complete viewEditPage.assertButtonState(Constants.ViewEdit.ACTIVATE_BUTTON_TEST_ID,true); viewEditPage.assertButtonState(Constants.ViewEdit.DEACTIVATE_BUTTON_TEST_ID,false); } @@ -105,6 +233,65 @@ public class ViewEditServiceInstanceTest extends VidBaseTestCase { viewEditPage.assertMsoRequestModal("Error"); viewEditPage.clickCloseButton(); } + + @Test + public void testTimestampOnDeactivateAndInfoServiceInstance() throws ParseException { + SimulatorApi.clearAll(); + BulkRegistration.searchExistingServiceInstance("Active"); + BulkRegistration.activateServiceInstance(DEACTIVATE_ACTION); + SimulatorApi.registerExpectation( + Constants.RegisterToSimulator.SearchForServiceInstance.GET_MSO_INSTANCE_ORCH_STATUS_REQ, + ImmutableMap.of("", "3f93c7cb-2fd0-4557-9514-e189b7b04f9d"), + SimulatorApi.RegistrationStrategy.APPEND); + goToExistingInstanceById(serviceInstanceId); + Click.byClass("service-info"); + GeneralUIUtils.ultimateWait(); + assertEquals("Timestamp isn't the finished time", getTimeatampValue(Constants.ViewEdit.DETAILS_LOG), "Tue, 24 Oct 2017 02:28:39"); + viewEditPage.clickCloseButton(); + viewEditPage.clickDeactivateButton(); + GeneralUIUtils.ultimateWait(); + try { + dateFormat.parse(getTimeatampValue(Constants.ViewEdit.MSO_COMMIT_LOG)); + } catch (ParseException e) { + System.err.println("Timestamp isn't a date"); + throw e; + } + viewEditPage.clickCloseButton(); + } + + private String getTimeatampValue(String dataTestsId) { + String logText = Get.byTestId(dataTestsId).getText(); + Matcher matcher = Pattern.compile("\"timestamp\": \"(.*?)\"").matcher(logText); + matcher.find(); + return matcher.group(1); + } + + + ///////////////////////////////////////////// + /// Dissociate pnf from service instance /// + //////////////////////////////////////////// + + @Test + public void testGetAssociatedPnfsForServiceInstance() { + SimulatorApi.clearAll(); + BulkRegistration.searchExistingServiceInstance(); + BulkRegistration.getAssociatedPnfs(); + + goToExistingInstanceById(serviceInstanceId); + for (String pnf: pnfs) { + viewEditPage.getPnf(pnf); + } + } + + @Test + public void testPnfsNotExistForServiceInstance() { + SimulatorApi.clearAll(); + BulkRegistration.searchExistingServiceInstance(); + + goToExistingInstanceById(serviceInstanceId); + assertNoPnfExists(); + } + @Test public void testSuccessDissociatePnfFromServiceInstance() throws Exception { SimulatorApi.clearAll(); @@ -113,8 +300,8 @@ public class ViewEditServiceInstanceTest extends VidBaseTestCase { BulkRegistration.dissociatePnf(); goToExistingInstanceById(serviceInstanceId); dissociatePnf(pnfs.get(0)); //SANITY6785cce9 - viewEditPage.assertMsoRequestModal("COMPLETE - Success"); - viewEditPage.clickCloseButton(); + viewEditPage.assertMsoRequestModal(Constants.ViewEdit.MSO_SUCCESSFULLY_TEXT); + viewEditPage.clickCloseButton(); } @Test @@ -122,16 +309,19 @@ public class ViewEditServiceInstanceTest extends VidBaseTestCase { SimulatorApi.clearAll(); BulkRegistration.searchExistingServiceInstance(); BulkRegistration.getAssociatedPnfs(); - SimulatorApi.registerExpectation(Constants.RegisterToSimulator.pProbe.REMOVE_PNF_RELATIONSHIP_ERROR); + SimulatorApi.registerExpectation(Constants.RegisterToSimulator.pProbe.REMOVE_PNF_RELATIONSHIP_ERROR, SimulatorApi.RegistrationStrategy.APPEND); + if (LocalDate.now().isBefore(LocalDate.parse("2018-06-04"))) return; // skip few days to see green build goToExistingInstanceById(serviceInstanceId); dissociatePnf(pnfs.get(0)); //SANITY6785cce9 viewEditPage.assertMsoRequestModal("Error"); + GeneralUIUtils.ultimateWait(); viewEditPage.clickCloseButton(); } + private void assertNoPnfExists() { - WebElement pnfElement = viewEditPage.getPnf(""); + WebElement pnfElement = Get.byClassAndText("tree-node", "PNF: "); Assert.assertNull("Pnf found under service instance", pnfElement); } @@ -147,12 +337,46 @@ public class ViewEditServiceInstanceTest extends VidBaseTestCase { WebElement confirmBtn = Get.byId(Constants.ViewEdit.DISSOCIATE_CONFIRM_MODAL_BTN_ID); Assert.assertNotNull(confirmBtn); confirmBtn.click(); - Wait.modalToDisappear(); +// Wait.modalToDisappear(); + } + + @Test + public void testErrorMsgNoModelVerIdFromAai() throws Exception { + getExtendTest().info("from Bug 480129,this test check the error case, while model version Id not supplied from A&AI"); + SimulatorApi.clearAll(); + BulkRegistration.genericSearchExistingServiceInstance(); + BulkRegistration.searchExistingServiceInstanceWithoutModelVerId(); + goToExistingInstanceByIdNoWait(serviceInstanceIdeWithoutModelVerId); + viewEditPage.checkAndCloseAlert(Constants.ViewEdit.MODEL_VERSION_ID_MISSING_MSG); + String errMsg= viewEditPage.getTextByTestID(Constants.ViewEdit.SUBDETAILS_ERROR_MESSAGE_TEST_ID); + Assert.assertEquals(Constants.ViewEdit.MODEL_VERSION_ID_MISSING_MSG, errMsg); } + + private void assertResumeButtonVisibility(boolean pendingActivationResumeVisible, boolean assignedResumeVisible) { + ImmutableMap vfModulesStatuses = ImmutableMap.of( + "pendingactivation", pendingActivationResumeVisible, + "assigned", assignedResumeVisible, + "pending-delete", false); + for(Map.Entry entry: vfModulesStatuses.entrySet()) { + WebElement vfModule = GeneralUIUtils.getWebElementByClassName("vfModuleTreeNode-" + entry.getKey()); + Assert.assertEquals(isNonEmpty(vfModule.findElements(By.className("resume"))), entry.getValue()); + } + } + @Before public void before() throws Exception { User user = usersService.getUser(Constants.Users.USP_VOICE_VIRTUAL_USP); relogin(user.credentials); } + @AfterMethod(alwaysRun = true) + public void finallyClosePopup() { + // Tries closing left-out popups, if any + // If none -- catch clause will swallow the exception + try { + viewEditPage.clickCloseButton(3); + } catch (Exception e) { + // ok, stop + } + } } -- cgit 1.2.3-korg