Skip to content

Commit

Permalink
Added marks to parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
dhlavac committed Jun 12, 2024
1 parent d2d1bcf commit f3a0c44
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 30 deletions.
10 changes: 6 additions & 4 deletions testsuite/tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down
46 changes: 20 additions & 26 deletions testsuite/tests/ui/users_and_roles/test_permissions.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,40 +9,33 @@
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]


@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
]

Expand All @@ -51,18 +44,18 @@ 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,
provider_member_user,
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")

Expand All @@ -79,6 +72,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}"
)

0 comments on commit f3a0c44

Please sign in to comment.