gmao/tests/integration/test_rbac.py
root ab543cad3a
Some checks are pending
CI - Tests et Syntax / lint-and-test (push) Waiting to run
Ajouter la gestion RBAC des utilisateurs et permissions
2026-08-21 15:22:47 +00:00

26 lines
1.3 KiB
Python

from uuid import uuid4
from app_new.extensions import db
from app_new.core.models import User, Role, Permission, RolePermission, UserPermission
from app_new.core.authorization import has_permission
def test_custom_role_permission_and_override(app):
with app.app_context():
slug = "custom_" + uuid4().hex[:8]
role = Role(slug=slug, name="Gestionnaire test", is_system=False)
permission = Permission(code="stock.test.view", name="Stock test", module="stock", action="view")
db.session.add_all([role, permission]); db.session.flush()
db.session.add(RolePermission(role_id=role.id, permission_id=permission.id, effect="allow"))
user = User(username="rbac_" + uuid4().hex[:8], email=uuid4().hex + "@test.local", full_name="RBAC", role=slug)
user.set_password("test-password-strong")
db.session.add(user); db.session.commit()
assert has_permission("stock.test.view", user)
assert not has_permission("stock.test.edit", user)
db.session.add(UserPermission(user_id=user.id, permission_id=permission.id, effect="deny"))
db.session.commit()
assert not has_permission("stock.test.view", user)
def test_admin_rbac_page_requires_authentication(client):
response = client.get("/admin/roles")
assert response.status_code == 302
assert "/auth/login" in response.location