40 lines
1.5 KiB
Python
40 lines
1.5 KiB
Python
import pytest
|
|
|
|
from dashboard.widgets import widgets
|
|
|
|
|
|
@pytest.mark.django_db
|
|
class TestWidgetsPermissions(object):
|
|
|
|
@pytest.mark.unit
|
|
def test_default_permissions(self, add_user_with_permissions):
|
|
""" Check that any user can see default widget """
|
|
user = add_user_with_permissions(username='user', password='ssssddddfff')
|
|
widget = widgets.DashboardWidget()
|
|
|
|
assert widget.user_can_see_widget(user)
|
|
|
|
@pytest.mark.unit
|
|
@pytest.mark.parametrize("widget", widgets.all_subclasses(widgets.DashboardWidget))
|
|
def test_user_can_see_widget(self, widget, add_user_with_permissions):
|
|
""" Check that user with correct permissions can see widget """
|
|
cur = widget()
|
|
user = add_user_with_permissions(username='user', password='ssssddddfff', permissions=cur.perms)
|
|
|
|
assert cur.user_can_see_widget(user)
|
|
|
|
@pytest.mark.unit
|
|
@pytest.mark.parametrize("widget", widgets.all_subclasses(widgets.DashboardWidget))
|
|
def test_user_cant_see_widget(self, widget, add_user_with_permissions):
|
|
""" Check that user without correct permissions can't see widget
|
|
|
|
Test will skip widgets with no permissions, because every user can see such widgets
|
|
"""
|
|
cur = widget()
|
|
|
|
if len(cur.perms) == 0:
|
|
pytest.skip(f"Can't run test for {widget}, because every user can see it")
|
|
|
|
user = add_user_with_permissions(username='user', password='ssssddddfff')
|
|
|
|
assert not cur.user_can_see_widget(user)
|