diff options
Diffstat (limited to 'services/frontend/fe_detailed_view.py')
-rw-r--r-- | services/frontend/fe_detailed_view.py | 359 |
1 files changed, 359 insertions, 0 deletions
diff --git a/services/frontend/fe_detailed_view.py b/services/frontend/fe_detailed_view.py new file mode 100644 index 0000000..bf9a5bf --- /dev/null +++ b/services/frontend/fe_detailed_view.py @@ -0,0 +1,359 @@ + +# ============LICENSE_START========================================== +# org.onap.vvp/test-engine +# =================================================================== +# Copyright © 2017 AT&T Intellectual Property. All rights reserved. +# =================================================================== +# +# Unless otherwise specified, all software contained herein is licensed +# under the Apache License, Version 2.0 (the “License”); +# you may not use this software except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# +# +# Unless otherwise specified, all documentation contained herein is licensed +# under the Creative Commons License, Attribution 4.0 Intl. (the “License”); +# you may not use this documentation except in compliance with the License. +# You may obtain a copy of the License at +# +# https://creativecommons.org/licenses/by/4.0/ +# +# Unless required by applicable law or agreed to in writing, documentation +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# ============LICENSE_END============================================ +# +# ECOMP is a trademark and service mark of AT&T Intellectual Property. +import time + +from selenium.webdriver.support.ui import Select + +from services.constants import Constants +from services.database.db_general import DBGeneral +from services.frontend.base_actions.click import Click +from services.frontend.base_actions.enter import Enter +from services.frontend.base_actions.get import Get +from services.frontend.base_actions.wait import Wait +from services.frontend.fe_dashboard import FEDashboard +from services.frontend.fe_general import FEGeneral +from services.frontend.fe_user import FEUser +from services.helper import Helper +from services.logging_service import LoggingServiceFactory +from services.session import session + + +logger = LoggingServiceFactory.get_logger() + + +class FEDetailedView: + + @staticmethod + def search_vf_and_go_to_detailed_view(engagement_manual_id, vf_name): + engName = engagement_manual_id + ": " + vf_name + detailed_view_id = Constants.Dashboard.DetailedView.ID + engName + FEDashboard.statuses_search_vf(engagement_manual_id, vf_name) + Click.id(detailed_view_id, wait_for_page=True) + return detailed_view_id + + @staticmethod + def update_aic_version(): + Click.id( + Constants.Dashboard.DetailedView.ValidationDetails.PLUS, wait_for_page=True) + Wait.text_by_id(Constants.Dashboard.Modal.TITLE_ID, + Constants.Dashboard.DetailedView.ValidationDetails.TITLE, wait_for_page=True) + Select(session.ice_driver.find_element_by_id(Constants.Dashboard.DetailedView.AIC.Dropdown.ID) + ).select_by_visible_text(Constants.Dashboard.DetailedView.ValidationDetails.TargetAICVersion.AIC3) + Click.xpath("//option[3]", wait_for_page=True) + Click.id( + Constants.Dashboard.DetailedView.ValidationDetails.SAVE, wait_for_page=True) + + @staticmethod + def open_validation_details(): + Click.id( + Constants.Dashboard.DetailedView.ValidationDetails.PLUS, wait_for_page=True) + Wait.text_by_id(Constants.Dashboard.Modal.TITLE_ID, + Constants.Dashboard.DetailedView.ValidationDetails.TITLE, wait_for_page=True) + + @staticmethod + def save_validation_details(): + Click.id( + Constants.Dashboard.DetailedView.ValidationDetails.SAVE, wait_for_page=True) + + @staticmethod + def update_target_lab_entry(): + Click.id( + Constants.Dashboard.DetailedView.TargetLabEntry.CHANGE, wait_for_page=True) + Enter.date_picker( + '#lab-entry-date', 'vm.targetLabDate', wait_for_page=True) + Click.css( + Constants.Dashboard.DetailedView.TargetLabEntry.INPUT_CSS, wait_for_page=True) + Click.css(Constants.SubmitButton.CSS, wait_for_page=True) + actualDate = Get.by_css( + Constants.Dashboard.DetailedView.TargetLabEntry.CONTENT_CSS, wait_for_page=True) + return str(actualDate) + + @staticmethod + def validate_target_lab_entry(date): + Wait.text_by_css(Constants.Dashboard.DetailedView.TargetLabEntry.CSS, + Constants.Dashboard.DetailedView.TargetLabEntry.TEXT, wait_for_page=True) + actualDate = Get.by_css( + Constants.Dashboard.DetailedView.TargetLabEntry.CONTENT_CSS) + Helper.internal_assert(actualDate, date) + + @staticmethod + def update_ecomp_release(EcompName): + count = 0 + try: + Click.id(Constants.Dashboard.DetailedView.ValidationDetails.PLUS) + Wait.text_by_id(Constants.Dashboard.Modal.TITLE_ID, + Constants.Dashboard.DetailedView.ValidationDetails.TITLE, wait_for_page=True) + Click.id( + Constants.Dashboard.DetailedView.ECOMP.Dropdown.ID, wait_for_page=True) + Select(session.ice_driver.find_element_by_id( + Constants.Dashboard.DetailedView.ECOMP.Dropdown.ID)).select_by_visible_text(EcompName) + Click.id(Constants.Dashboard.DetailedView.ValidationDetails.ECOMPRelease.ID_ECOMP + + EcompName, wait_for_page=True) + count += 1 + Wait.id(Constants.Dashboard.DetailedView.ValidationDetails.ECOMPRelease.ID_ECOMP + + Constants.Dashboard.DetailedView.ValidationDetails.ECOMPRelease.UNKNOW, wait_for_page=True) + Select(session.ice_driver.find_element_by_id(Constants.Dashboard.DetailedView.ECOMP.Dropdown.ID) + ).select_by_visible_text(Constants.Dashboard.DetailedView.ValidationDetails.ECOMPRelease.UNKNOW) + Click.id(Constants.Dashboard.DetailedView.ValidationDetails.ECOMPRelease.ID_ECOMP + + Constants.Dashboard.DetailedView.ValidationDetails.ECOMPRelease.UNKNOW, wait_for_page=True) + count += 1 + Click.id( + Constants.Dashboard.DetailedView.ValidationDetails.SAVE, wait_for_page=True) + Helper.internal_assert(count, 2) + # If failed - count the failure and add the error to list of errors. + except: + errorMsg = "Failed in update_ecomp_release ." + raise Exception(errorMsg) + + @staticmethod + def update_vf_version(): + try: + Click.id( + Constants.Dashboard.DetailedView.ValidationDetails.PLUS, wait_for_page=True) + Wait.text_by_id(Constants.Dashboard.Modal.TITLE_ID, + Constants.Dashboard.DetailedView.ValidationDetails.TITLE, wait_for_page=True) + newVFVersionName = "newVFVersionName-" + \ + Helper.rand_string("randomString") + Click.id( + Constants.Dashboard.DetailedView.ValidationDetails.VFVersion.ID_VERSION) + Enter.text_by_id( + Constants.Dashboard.DetailedView.ValidationDetails.VFVersion.ID_VERSION, newVFVersionName, wait_for_page=True) + Click.id( + Constants.Dashboard.DetailedView.ValidationDetails.SAVE, wait_for_page=True) + return newVFVersionName + # If failed - count the failure and add the error to list of errors. + except: + errorMsg = "Failed in update_ecomp_release ." + raise Exception(errorMsg) + + @staticmethod + def validate_aic_version(): + FEGeneral.refresh() + Wait.id( + Constants.Dashboard.DetailedView.AIC.ID + "3.0", wait_for_page=True) + + @staticmethod + def validate_ecomp_version(): + FEGeneral.refresh() + Wait.id(Constants.Dashboard.DetailedView.ECOMP.ID + + Constants.Dashboard.DetailedView.ValidationDetails.ECOMPRelease.UNKNOW, wait_for_page=True) + + @staticmethod + def validate_vf_version(newVFVersionName): + FEGeneral.refresh() + Wait.id(Constants.Dashboard.DetailedView.ValidationDetails.VFVersion.VF_VERSION_ID + + newVFVersionName, wait_for_page=True) + + @staticmethod + def validate_all_titles_on_dv_form(): + Wait.text_by_id(Constants.Dashboard.DetailedView.DeploymentTarget.ID, + Constants.Dashboard.DetailedView.DeploymentTarget.TEXT, wait_for_page=True) + Wait.text_by_id(Constants.Dashboard.DetailedView.VirtualFunctionComponents.ID, + Constants.Dashboard.DetailedView.VirtualFunctionComponents.TEXT) + Wait.text_by_id(Constants.Dashboard.DetailedView.TargetLabEntry.ID, + Constants.Dashboard.DetailedView.TargetLabEntry.TEXT) + Wait.text_by_id(Constants.Dashboard.DetailedView.ValidationDetails.ID, + Constants.Dashboard.DetailedView.ValidationDetails.TEXT) + Wait.text_by_id(Constants.Dashboard.DetailedView.ValidationDetails.TargetAICVersion.ID, + Constants.Dashboard.DetailedView.ValidationDetails.TargetAICVersion.TEXT) + Wait.text_by_id(Constants.Dashboard.DetailedView.ValidationDetails.ECOMPRelease.ID, + Constants.Dashboard.DetailedView.ValidationDetails.ECOMPRelease.TEXT) + Wait.text_by_id(Constants.Dashboard.DetailedView.ValidationDetails.VFVersion.ID, + Constants.Dashboard.DetailedView.ValidationDetails.VFVersion.TEXT, wait_for_page=True) + + @staticmethod + def add_deployment_target(user_content): + Click.id(Constants.Dashboard.DetailedView.TargetLabEntry.Add.ID) + Wait.text_by_id(Constants.Dashboard.Modal.TITLE_ID, + Constants.Dashboard.DetailedView.DeploymentTarget.TITLE) + # FIXME: empty drop-down, tests will fail. + Select(session.ice_driver.find_element_by_xpath( + "//select")).select_by_visible_text("Lisle (DPA3)") + Click.id( + Constants.Dashboard.DetailedView.DeploymentTarget.SAVE, wait_for_page=True) + Wait.text_by_css( + Constants.Dashboard.DetailedView.DeploymentTarget.CSS, "Lisle (DPA3)", wait_for_page=True) + Wait.text_by_id(Constants.Dashboard.DetailedView.AIC.ID + + user_content['target_aic'], user_content['target_aic']) + e2edate = FEGeneral.date_short_formatter() + Wait.text_by_css( + Constants.Dashboard.DetailedView.TargetLabEntry.CONTENT_CSS, e2edate) + + @staticmethod + def remove_deployment_target(user_content): + Wait.text_by_id( + "visible-dts-Lisle (DPA3)", "Lisle (DPA3)", wait_for_page=True) + dt_site_id = DBGeneral.select_query( + "SELECT uuid FROM public.ice_deployment_target_site where name = 'Lisle (DPA3)'") + Click.id("visible-dts-Lisle (DPA3)") + Wait.id( + Constants.Dashboard.DetailedView.DeploymentTarget.ID_REMOVE_DTS + dt_site_id) + Click.id(Constants.Dashboard.DetailedView.DeploymentTarget.ID_REMOVE_DTS + + dt_site_id, wait_for_page=True) + session.run_negative(lambda: Wait.text_by_id( + "visible-dts-Lisle (DPA3)", "Lisle (DPA3)", wait_for_page=True), "Negative test failed at wait text Lisle (DPA3)") + + @staticmethod + def add_vfc(): + vfcName = "VFC-" + Helper.rand_string("randomString") + Click.id(Constants.Dashboard.DetailedView.VFC.Add.ID) + Enter.text_by_name("name", vfcName) + session.ice_driver.find_element_by_name("extRefID").click() + Enter.text_by_name("extRefID", Helper.rand_string("randomNumber")) + Select(session.ice_driver.find_element_by_id( + Constants.Dashboard.DetailedView.VFC.Choose_Company.ID)).select_by_visible_text("AT&T") + Click.id(Constants.Dashboard.DetailedView.VFC.Save_button.ID) + return vfcName + + @staticmethod + def add_vfcs(name, extRefID): + Click.id( + Constants.Dashboard.DetailedView.VFC.Add.ID, wait_for_page=True) + Wait.text_by_id(Constants.Dashboard.Modal.TITLE_ID, + "Add Virtual Function Components (VFCs)") + Enter.text_by_name("name", name) + Click.name("extRefID", wait_for_page=True) + Enter.text_by_name("extRefID", extRefID, wait_for_page=True) + Select(session.ice_driver.find_element_by_id( + Constants.Dashboard.DetailedView.VFC.Choose_Company.ID)).select_by_visible_text("Amdocs") + Wait.text_by_css("span.add-text", "Add VFC", wait_for_page=True) + Click.css("span.add-text", wait_for_page=True) + logger.debug("Add VFC no.2") + Enter.text_by_xpath( + "//div[2]/ng-form/div/input", "djoni2", wait_for_page=True) + Enter.text_by_xpath("//div[2]/ng-form/div[2]/input", "loka2") + Enter.text_by_xpath("//div[2]/ng-form/div[4]/input", "companyManual2") + Click.id( + Constants.Dashboard.DetailedView.VFC.Save_button.ID, wait_for_page=True) + + @staticmethod + def remove_vfc(user_content): + vf_id = DBGeneral.select_where( + "uuid", "ice_vf", "name", user_content['vfName'], 1) + djoni_uuid = None + counter = 0 + while not djoni_uuid and counter <= Constants.DBConstants.RETRIES_NUMBER: + time.sleep(session.wait_until_time_pause_long) + djoni_uuid = DBGeneral.select_where_and( + "uuid", "ice_vfc", "vf_id", vf_id, "name", "djoni", 1) + logger.debug("Checklist state not changed yet (%s of %s)" % ( + counter, Constants.DBConstants.RETRIES_NUMBER)) + counter += 1 + logger.debug("VFC_UUID was successfully selecteded : " + + djoni_uuid + ", and was verified over the DB") + Wait.text_by_id(Constants.Dashboard.DetailedView.VFC.ID + + "djoni", "djoni (loka)", wait_for_page=True) + Wait.text_by_id(Constants.Dashboard.DetailedView.VFC.ID + + "djoni2", "djoni2 (loka2)", wait_for_page=True) + Click.id( + Constants.Dashboard.DetailedView.VFC.ID + "djoni", wait_for_page=True) + Click.id(Constants.Dashboard.DetailedView.VFC.Remove.ID + + djoni_uuid, wait_for_page=True) + + @staticmethod + def validate_deployment_targets(user_content, users): + for user in users: + FEGeneral.re_open(Constants.Default.LoginURL.TEXT) + logger.debug("Login with user " + user) + FEUser.login(user, Constants.Default.Password.TEXT) + FEDetailedView.search_vf_and_go_to_detailed_view( + user_content['engagement_manual_id'], user_content['vfName']) + Wait.id( + Constants.Dashboard.DetailedView.DeploymentTarget.AddDeploymentTargetButton.ID) + + @staticmethod + def add_remove_deployment_targets(user_content, users): + for user in users: + FEGeneral.re_open(Constants.Default.LoginURL.TEXT) + logger.debug("Login with user " + user) + FEUser.login(user, Constants.Default.Password.TEXT) + FEDetailedView.search_vf_and_go_to_detailed_view( + user_content['engagement_manual_id'], user_content['vfName']) + FEDetailedView.add_deployment_target(user_content) + FEDetailedView.remove_deployment_target(user_content) + + @staticmethod + def validate_negative_role_for_deployment_targets(user_content, users): + for user in users: + FEGeneral.re_open(Constants.Default.LoginURL.TEXT) + logger.debug("Login with user " + user) + FEUser.login(user, Constants.Default.Password.TEXT) + FEDetailedView.search_vf_and_go_to_detailed_view( + user_content['engagement_manual_id'], user_content['vfName']) + session.run_negative(lambda: Click.id(Constants.Dashboard.DetailedView.DeploymentTarget.AddDeploymentTargetButton.ID), + "Negative test failed at click_on_ deployment-targets with user %s" % user) + + @staticmethod + def click_on_update_aic_version(): + Click.id( + Constants.Dashboard.DetailedView.ValidationDetails.PLUS, wait_for_page=True) + Wait.text_by_id(Constants.Dashboard.Modal.TITLE_ID, + Constants.Dashboard.DetailedView.ValidationDetails.TITLE, wait_for_page=True) + + @staticmethod + def click_on_update_ecomp_release(): + Click.id( + Constants.Dashboard.DetailedView.ValidationDetails.PLUS, wait_for_page=True) + Wait.text_by_id(Constants.Dashboard.Modal.TITLE_ID, + Constants.Dashboard.DetailedView.ValidationDetails.TITLE, wait_for_page=True) + + @staticmethod + def select_aic_version_from_list(aic_version): + Select(session.ice_driver.find_element_by_id( + Constants.Dashboard.DetailedView.AIC.Dropdown.ID)).select_by_visible_text(aic_version) + + @staticmethod + def compare_aic_selected_version(expected_aic_version): + Helper.internal_assert(Get.by_id( + Constants.Dashboard.DetailedView.AIC.ID + expected_aic_version), expected_aic_version) + + @staticmethod + def compare_selected_ecomp_release(expected_ecomp_release): + Helper.internal_assert(Get.by_id( + Constants.Dashboard.DetailedView.ECOMP.ID + expected_ecomp_release), expected_ecomp_release) + + @staticmethod + def validate_deprecated_aic_version_in_dropdown(expected_aic_version): + Helper.internal_assert(Get.by_id(Constants.Dashboard.DetailedView.AIC.Dropdown.UniversalVersion.ID % + expected_aic_version), "AIC " + expected_aic_version + " - Deprecated") + + @staticmethod + def validate_deprecated_ecomp_release_in_dropdown(expected_ecomp_release): + Helper.internal_assert(Get.by_id(Constants.Dashboard.DetailedView.ECOMP.Dropdown.UniversalRelease.ID % + expected_ecomp_release), expected_ecomp_release + " - Deprecated") |