diff --git a/testsuite/tests/conftest.py b/testsuite/tests/conftest.py index 05a0d6b1..d01d865f 100644 --- a/testsuite/tests/conftest.py +++ b/testsuite/tests/conftest.py @@ -9,12 +9,12 @@ import threading import warnings from itertools import chain +from typing import List import backoff import importlib_resources as resources import openshift_client as oc import pytest -from typing import List from dynaconf.vendor.box.exceptions import BoxKeyError from pytest_metadata.plugin import metadata_key from threescale_api import client, errors @@ -540,7 +540,7 @@ def _custom_user(params, autoclean=True): def provider_member_user(threescale, request, testconfig, account_password): """Create users and set permissions to sections and services by given scope""" - def _member_user(autoclean=True, allowed_services: List[int] = None, allowed_sections: List[str] = None): + def _member_user(autoclean=True, allowed_sections: List[str] = None, allowed_services: List[int] = None): """Create users and set permissions to sections and services Args: :param allowed_section: List of allowed sections one of @@ -550,12 +550,14 @@ def _member_user(autoclean=True, allowed_services: List[int] = None, allowed_sec username = blame(request, "pa") user_params = rawobj.AccountUser(username=username, email=f"{username}@example.com", password=account_password) user = threescale.provider_account_users.create(params=user_params) + + if autoclean and not testconfig["skip_cleanup"]: + request.addfinalizer(user.delete) + user.set_role_member() user.activate() user.permissions_update(allowed_services=allowed_services, allowed_sections=allowed_sections) - if autoclean and not testconfig["skip_cleanup"]: - request.addfinalizer(user.delete) return user return _member_user diff --git a/testsuite/tests/ui/users_and_roles/test_permissions.py b/testsuite/tests/ui/users_and_roles/test_permissions.py index 1d60da4d..2784d774 100644 --- a/testsuite/tests/ui/users_and_roles/test_permissions.py +++ b/testsuite/tests/ui/users_and_roles/test_permissions.py @@ -9,40 +9,38 @@ CMSNewSectionView, ActiveDocsView, ) -from testsuite.ui.views.admin.backend import BackendsView -from testsuite.ui.views.admin.foundation import DashboardView, AccessDeniedView -from testsuite.ui.views.admin.product import ProductsView -from testsuite.ui.views.admin.product.integration.settings import ProductSettingsView +from testsuite.ui.views.admin.foundation import AccessDeniedView PERMISSION_DICT = [ - ("portal", DeveloperPortalContentView, None, None), - ("portal", CMSNewPageView, None, None), - ("portal", CMSNewSectionView, None, None), - ("finance", BillingView, None, None), - ( + pytest.param("portal", DeveloperPortalContentView), + pytest.param("portal", DeveloperPortalContentView), + pytest.param("portal", CMSNewPageView), + pytest.param("portal", CMSNewSectionView), + pytest.param("finance", BillingView), + pytest.param( "finance", BillingSettingsView, - pytest.mark.xfail, - pytest.mark.issue("https://issues.redhat.com/browse/THREESCALE-3368"), + marks=[pytest.mark.xfail, pytest.mark.issue("https://issues.redhat.com/browse/THREESCALE-10995")], ), - ("plans", ActiveDocsView, None, None), + pytest.param("plans", ActiveDocsView), ] def get_views_by_permission(permission_name): """Returns a list of views that has the given permission by permission name""" - return [view for perm, view, _, _ in PERMISSION_DICT if perm == permission_name] + return [view for perm, view in PERMISSION_DICT if perm == permission_name] @pytest.fixture() def all_page_objects(): + """Returns all page objects from permissions tuple filtered of views with same permission""" + def _all_page_objects(except_permission, current_view): - """Returns all page objects from permissions tuple filtered of views with same permission""" all_views = [ view - for perm, view, xfail_mark, issue_mark in PERMISSION_DICT + for perm, view in [param.values for param in PERMISSION_DICT] if perm != except_permission or view == current_view ] @@ -51,7 +49,8 @@ def _all_page_objects(except_permission, current_view): return _all_page_objects -@pytest.mark.parametrize("permission, page_view, xfail_mark, issue_mark", PERMISSION_DICT) +# pylint: disable=too-many-arguments +@pytest.mark.parametrize("permission, page_view", PERMISSION_DICT) def test_member_user_permissions_per_section( custom_admin_login, navigator, @@ -59,10 +58,9 @@ def test_member_user_permissions_per_section( all_page_objects, permission, page_view, - xfail_mark, - issue_mark, - allowed_services=None, + allowed_services=False, ): + """Tests user permissions permission per permission section""" member_user = provider_member_user(allowed_sections=permission, allowed_services=allowed_services) custom_admin_login(member_user.entity_name, "123456") @@ -79,6 +77,7 @@ def test_member_user_permissions_per_section( page.is_displayed ), f"{pg_obj.__name__} should be displayed for permissions {permission} and services {allowed_services}" else: - assert AccessDeniedView( - navigator.browser.root_browser - ).is_displayed, f"{pg_obj.__name__} should not be displayed for permissions {permission} and services {allowed_services}" + assert AccessDeniedView(navigator.browser.root_browser).is_displayed, ( + f"{pg_obj.__name__}" + f" should not be displayed for permissions {permission} and services {allowed_services}" + )