feat: security, user group support (#32121)

This commit is contained in:
Daniel Vaz Gaspar
2025-03-04 09:54:12 +00:00
committed by GitHub
parent fe33661821
commit 15cf06699a
10 changed files with 193 additions and 17 deletions

View File

@@ -63,6 +63,11 @@ from tests.integration_tests.fixtures.world_bank_dashboard import (
load_world_bank_dashboard_with_slices, # noqa: F401
load_world_bank_data, # noqa: F401
)
from tests.integration_tests.fixtures.users import (
create_gamma_user_group, # noqa: F401
create_user_group_with_dar, # noqa: F401
create_gamma_user_group_with_dar, # noqa: F401
)
NEW_SECURITY_CONVERGE_VIEWS = (
"Annotation",
@@ -1871,12 +1876,58 @@ class TestSecurityManager(SupersetTestCase):
}
)
def test_get_user_roles(self):
def test_get_admin_user_roles(self):
admin = security_manager.find_user("admin")
with override_user(admin):
roles = security_manager.get_user_roles()
assert admin.roles == roles
def test_get_gamma_user_roles(self):
admin = security_manager.find_user("gamma")
with override_user(admin):
roles = security_manager.get_user_roles()
assert admin.roles == roles
@pytest.mark.usefixtures("create_gamma_user_group")
def test_get_user_roles_with_groups(self):
user = security_manager.find_user("gamma_with_groups")
with override_user(user):
roles = security_manager.get_user_roles()
assert user.groups[0].roles == roles
@pytest.mark.usefixtures("create_gamma_user_group_with_dar")
def test_get_user_roles_with_groups_dar(self):
user = security_manager.find_user("gamma_with_groups")
with override_user(user):
role_names = [role.name for role in security_manager.get_user_roles()]
assert "Gamma" in role_names
assert "dar" in role_names
assert len(role_names) == 2
@pytest.mark.usefixtures("create_user_group_with_dar")
def test_user_view_menu_names_with_groups_dar(self):
user = security_manager.find_user("gamma_with_groups")
with override_user(user):
assert security_manager.user_view_menu_names("datasource_access") == {
"[examples].[birth_names](id:1)]"
}
@pytest.mark.usefixtures("create_gamma_user_group_with_dar")
def test_gamma_user_view_menu_names_with_groups_dar(self):
user = security_manager.find_user("gamma_with_groups")
with override_user(user):
# assert pvm for dar role
assert security_manager.user_view_menu_names("datasource_access") == {
"[examples].[birth_names](id:1)]"
}
# assert pvm for gamma role
assert security_manager.user_view_menu_names("can_external_metadata") == {
"Datasource"
}
assert security_manager.user_view_menu_names("can_recent_activity") == {
"Log"
}
def test_get_anonymous_roles(self):
with override_user(security_manager.get_anonymous_user()):
roles = security_manager.get_user_roles()