コード例 #1
0
ファイル: conftest.py プロジェクト: arenadata/adcm
def login_to_adcm_over_ui(app_fs, adcm_credentials):
    """Perform login on Login page ADCM"""

    login = LoginPage(app_fs.driver, app_fs.adcm.url).open()
    login.login_user(**adcm_credentials)
    login.wait_url_contains_path(AdminIntroPage(app_fs.driver, app_fs.adcm.url).path)
    login.wait_config_loaded()
コード例 #2
0
def test_upgrade_adcm(
    app_fs: ADCMTest,
    sdk_client_fs: ADCMClient,
    adcm_api_credentials: dict,
    adcm_image_tags: Tuple[str, str],
):
    """
    Login to ADCM (previous version)
    Upgrade ADCM
    Check messages about ADCM upgrade
    Check that user is still logged in (open different tabs)
    """
    credentials = {**adcm_api_credentials}
    credentials['username'] = credentials.pop('user')
    with allure.step('Login to ADCM with UI'):
        login_page = LoginPage(app_fs.driver, app_fs.adcm.url).open()
        login_page.login_user(**credentials)
        intro_page = PreviousAdminIntroPage(login_page.driver,
                                            login_page.base_url)
        intro_page.wait_page_is_opened()
        intro_page.wait_config_loaded()
    with allure.step('Start ADCM upgrade with client'):
        upgrade_thread = threading.Thread(target=upgrade_adcm_version,
                                          args=(app_fs.adcm, sdk_client_fs,
                                                adcm_api_credentials,
                                                adcm_image_tags))
        upgrade_thread.start()
    with allure.step('Check update popup messages are present'):
        for message in (
                'Connection lost. Recovery attempt.',
                'No connection to back-end. Check your internet connection.',
                'New version available. Page has been refreshed.',
        ):
            with allure.step(f'Check message "{message}" is presented'):
                # TODO one day make first wait a long one, others shorter like 90, 30, 30 or smt like that
                wait_until_step_succeeds(wait_info_popup_contains,
                                         page=intro_page,
                                         text=message,
                                         timeout=77,
                                         period=0.3)
    with allure.step('Wait for upgrade to finish'):
        upgrade_thread.join(timeout=60)
    open_different_tabs(intro_page)
コード例 #3
0
ファイル: conftest.py プロジェクト: arenadata/adcm
def login_to_adcm_over_api(app_fs, adcm_credentials):
    """Perform login via API call"""
    login_endpoint = f'{app_fs.adcm.url.rstrip("/")}/api/v1/token/'
    LoginPage(app_fs.driver, app_fs.adcm.url).open()
    token = requests.post(login_endpoint, json=adcm_credentials).json()['token']
    with allure.step("Set token to localStorage"):
        auth = {'login': adcm_credentials['username'], 'token': token}
        script = f'localStorage.setItem("auth", JSON.stringify({json.dumps(auth)}))'
        app_fs.driver.execute_script(script)
        auth = app_fs.driver.execute_script("return localStorage.auth")
        assert token in auth, "Token was not set in localStorage"
    AdminIntroPage(app_fs.driver, app_fs.adcm.url).open().wait_config_loaded()
コード例 #4
0
    def test_new_user_creation(self, users_page: AdminUsersPage):
        """Create new user, change password and login with new password"""

        params = {
            'username': '******',
            'password': '******',
            'new_password': '******',
            'first_name': 'First',
            'last_name': 'Last',
            'email': '*****@*****.**',
        }
        users_page.create_user(params['username'], params['password'],
                               params['first_name'], params['last_name'],
                               params['email'])
        with allure.step(
                f'Check user {params["username"]} is listed in users list'):
            assert users_page.is_user_presented(
                params['username']
            ), f'User {params["username"]} was not created'
        users_page.change_user_password(params['username'],
                                        params['new_password'])
        users_page.header.logout()
        with allure.step(
                f'Login as user {params["username"]} with password {params["new_password"]}'
        ):
            login_page = LoginPage(users_page.driver, users_page.base_url)
            login_page.wait_page_is_opened()
            login_page.login_user(params['username'], params['new_password'])
        with allure.step('Check login was successful'):
            AdminIntroPage(users_page.driver,
                           users_page.base_url).wait_page_is_opened(timeout=5)
コード例 #5
0
ファイル: test_login_page.py プロジェクト: arenadata/adcm
def test_check_login_to_adcm(app_fs, adcm_credentials):
    """Test basic success UI login"""
    login_page = LoginPage(app_fs.driver, app_fs.adcm.url).open()
    login_page.check_all_elements()
    login_page.login_user(**adcm_credentials)
    with allure.step("Check if user has been authorized"):
        intro_page = AdminIntroPage(app_fs.driver, app_fs.adcm.url)
        intro_page.wait_page_is_opened()
        # investigate why profile marker can't be found
        # login_page.wait_config_loaded()
        intro_page.header.check_auth_page_elements()
コード例 #6
0
    def test_check_header_user_settings_for_authorised_user(self, app_fs):
        """Test header user settings buttons for authorised user"""
        header = PageHeader(app_fs.driver, app_fs.adcm.url)
        header.click_account_button_in_header()
        header.check_account_popup()
        header.click_settings_link_in_acc_popup()
        header.wait_url_contains_path(
            AdminSettingsPage(app_fs.driver, app_fs.adcm.url).path)

        header.click_account_button_in_header()
        header.click_profile_link_in_acc_popup()
        header.wait_url_contains_path(
            ProfilePage(app_fs.driver, app_fs.adcm.url).path)

        header.click_account_button_in_header()
        header.click_logout_in_acc_popup()
        header.wait_url_contains_path(
            LoginPage(app_fs.driver, app_fs.adcm.url).path)
コード例 #7
0
ファイル: test_profile_page.py プロジェクト: arenadata/adcm
def test_change_password(adcm_credentials: dict, app_fs: ADCMTest):
    """Change admin password over UI and login under new credentials"""
    new_credentials = {**adcm_credentials, 'password': '******'}
    profile_page = ProfilePage(app_fs.driver, app_fs.adcm.url).open()
    profile_page.set_new_password(new_credentials['password'])
    login_page = LoginPage(profile_page.driver, profile_page.base_url)
    login_page.wait_page_is_opened()
    login_page.login_user(**new_credentials)
    intro_page = AdminIntroPage(app_fs.driver, app_fs.adcm.url)
    intro_page.wait_config_loaded()
    intro_page.header.open_profile()
    profile_page.wait_page_is_opened()
    profile_page.check_required_fields_are_presented()
    profile_page.check_username(adcm_credentials['username'])
コード例 #8
0
ファイル: test_profile_page.py プロジェクト: arenadata/adcm
def test_login_as_new_user(another_user: dict, app_fs: ADCMTest):
    """Login as admin, logout, login as another user, check username"""
    params = {'admin_username': '******', 'another_username': another_user['username']}
    profile_page = ProfilePage(app_fs.driver, app_fs.adcm.url).open()
    profile_page.check_username(params['admin_username'])
    profile_page.header.logout()
    login_page = LoginPage(profile_page.driver, profile_page.base_url)
    login_page.wait_page_is_opened()
    login_page.login_user(**another_user)
    intro_page = AdminIntroPage(profile_page.driver, profile_page.base_url)
    intro_page.wait_config_loaded()
    intro_page.header.open_profile()
    profile_page.wait_page_is_opened()
    profile_page.check_required_fields_are_presented()
    profile_page.check_username(another_user['username'])
コード例 #9
0
    def test_change_admin_password(self, users_page: AdminUsersPage):
        """Change admin password, login with new credentials"""

        params = {'username': '******', 'password': '******'}
        users_page.update_user_info(params['username'],
                                    first_name='Best',
                                    last_name='Admin')
        users_page.change_user_password(**params)
        users_page.driver.refresh()
        with allure.step('Check Login page is opened'):
            login_page = LoginPage(users_page.driver, users_page.base_url)
            login_page.wait_page_is_opened()
        login_page.login_user(**params)
        with allure.step('Check login was successful'):
            AdminIntroPage(users_page.driver,
                           users_page.base_url).wait_page_is_opened(timeout=5)
コード例 #10
0
ファイル: test_login_page.py プロジェクト: arenadata/adcm
def test_check_header_links_in_login_page_unauthorised(app_fs):
    """Test header for unauthorised user"""
    params = {"error_text": "User is not authorized!"}
    login_page = LoginPage(app_fs.driver, app_fs.adcm.url).open()
    login_page.header.click_arenadata_logo_in_header()
    login_page.check_error_message(params["error_text"])
    login_page.header.click_clusters_tab_in_header()
    login_page.check_error_message(params["error_text"])
    login_page.header.click_hostproviders_tab_in_header()
    login_page.check_error_message(params["error_text"])
    login_page.header.click_hosts_tab_in_header()
    login_page.check_error_message(params["error_text"])
    login_page.header.click_jobs_tab_in_header()
    login_page.check_error_message(params["error_text"])
    login_page.header.click_bundles_tab_in_header()
    login_page.check_error_message(params["error_text"])
コード例 #11
0
ファイル: test_login_page.py プロジェクト: arenadata/adcm
def test_check_error_in_login(app_fs, name, password):
    """Test basic UI login with invalid credentials"""
    params = {"error_text": "Incorrect password or user."}
    login_page = LoginPage(app_fs.driver, app_fs.adcm.url).open()
    login_page.login_user(name, password)
    login_page.check_error_message(params["error_text"])
コード例 #12
0
ファイル: test_login_page.py プロジェクト: arenadata/adcm
def test_check_login_button_unavailable(app_fs, name, password):
    """Test that login button is unavailable for given conditions"""
    login_page = LoginPage(app_fs.driver, app_fs.adcm.url).open()
    login_page.fill_login_user_form(name, password)
    login_page.check_check_login_button_unavailable()