Source code for whale.decapod_ui.steps.user

"""
-------------------------
Decapod UI steps for user
-------------------------
"""

# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file 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.

from hamcrest import assert_that, equal_to  # noqa H301
from stepler.third_party import steps_checker
from stepler.third_party import utils

from whale.decapod_ui.steps import base


[docs]class UserSteps(base.BaseSteps): """User steps.""" def _page_users(self): """Open users page if it isn't opened.""" self.app.page_base.header.link_users_management.click() return self.app.page_users @steps_checker.step
[docs] def create_user(self, role_name, login=None, full_name=None, check=True): """Step to create user. Args: role_name (str): role name of user login (str, optional): login of user full_name (str, optional): full name of user check (bool, optional): flag whether to check step or not Returns: str: user login Raises: Exception: if user is not present on page """ login = login or next(utils.generate_ids()) full_name = full_name or next(utils.generate_ids()) page_users = self._page_users() page_users.button_create_user.click() with page_users.form_create_user as form: form.field_login.value = login form.field_full_name.value = full_name form.field_email.value = login + "@ex.com" form.combobox_role.value = role_name form.submit(modal_absent=False) if check: page_users.list_users.row(login).wait_for_presence() return login
@steps_checker.step
[docs] def update_user(self, login, new_login=None, new_full_name=None, new_email=None, new_role_name=None, check=True): """Step to update user. Args: login (str, optional): login of user to be changed new_login (str, optional): new login of user new_full_name (str, optional): new full name of user new_email (str, optional): new email of user new_role_name (str, optional): new role of user check (bool, optional): flag whether to check step or not Returns: str: user login Raises: Exception: if check failed """ new_login = new_login or next(utils.generate_ids()) new_full_name = new_full_name or next(utils.generate_ids()) new_email = new_email or new_login + "@ex.com" page_users = self._page_users() page_users.list_users.row(login).maximize_icon.click() with page_users.form_user_details as form: form.field_login.value = new_login form.field_full_name.value = new_full_name form.field_email.value = new_email if new_role_name: form.combobox_role.value = new_role_name form.submit(modal_absent=False) page_users.list_users.row(new_login).minimize_icon.click() if check: page_users.list_users.row(login).wait_for_absence() page_users.list_users.row(new_login).wait_for_presence() page_users.list_users.row(new_login).maximize_icon.click() with page_users.form_user_details as form: assert_that(form.field_login.value, equal_to(new_login)) assert_that(form.field_full_name.value, equal_to(new_full_name)) assert_that(form.field_email.value, equal_to(new_email)) if new_role_name: assert_that(form.combobox_role.value, equal_to(new_role_name)) return new_login
@steps_checker.step
[docs] def delete_user(self, login, check=True): """Step to delete user. Args: login (str): login of user to be deleted check (bool, optional): flag whether to check step or not Raises: Exception: if user is present on page """ page_users = self._page_users() page_users.list_users.row(login).maximize_icon.click() page_users.form_user_details.cancel(modal_absent=False) page_users.form_confirm_user_deletion.submit(modal_absent=False) if check: page_users.list_users.row(login).wait_for_absence()