fix(tests): adapt permission tests to new RBAC architecture
- Add Role records for editor, viewer, guest in seed_full_data - Link UserTenant.role_id to Role records (legacy string roles no longer grant permissions) - Fixes 10 test failures caused by removal of Legacy Role Bypass - All 33 tests now pass
This commit is contained in:
@@ -222,6 +222,31 @@ async def seed_full_data(db: AsyncSession) -> dict[str, Any]:
|
|||||||
db.add_all([tenant_a, tenant_b])
|
db.add_all([tenant_a, tenant_b])
|
||||||
await db.flush()
|
await db.flush()
|
||||||
|
|
||||||
|
# Default roles (new RBAC architecture requires role_id for permissions)
|
||||||
|
editor_role = Role(
|
||||||
|
tenant_id=tenant_a.id,
|
||||||
|
name="editor",
|
||||||
|
permissions={"contacts": {"read": True, "write": True, "delete": False}},
|
||||||
|
denied_permissions=[],
|
||||||
|
field_permissions={},
|
||||||
|
)
|
||||||
|
viewer_role = Role(
|
||||||
|
tenant_id=tenant_a.id,
|
||||||
|
name="viewer",
|
||||||
|
permissions={"contacts": {"read": True, "write": False, "delete": False}},
|
||||||
|
denied_permissions=[],
|
||||||
|
field_permissions={},
|
||||||
|
)
|
||||||
|
guest_role = Role(
|
||||||
|
tenant_id=tenant_a.id,
|
||||||
|
name="guest",
|
||||||
|
permissions={"contacts": {"read": True}},
|
||||||
|
denied_permissions=[],
|
||||||
|
field_permissions={},
|
||||||
|
)
|
||||||
|
db.add_all([editor_role, viewer_role, guest_role])
|
||||||
|
await db.flush()
|
||||||
|
|
||||||
# Users
|
# Users
|
||||||
admin_a = User(
|
admin_a = User(
|
||||||
email="admin@tenanta.com",
|
email="admin@tenanta.com",
|
||||||
@@ -274,13 +299,13 @@ async def seed_full_data(db: AsyncSession) -> dict[str, Any]:
|
|||||||
|
|
||||||
# User-tenant memberships
|
# User-tenant memberships
|
||||||
ut1 = UserTenant(user_id=admin_a.id, tenant_id=tenant_a.id, is_default=True, role="admin")
|
ut1 = UserTenant(user_id=admin_a.id, tenant_id=tenant_a.id, is_default=True, role="admin")
|
||||||
ut2 = UserTenant(user_id=editor_a.id, tenant_id=tenant_a.id, is_default=True, role="editor")
|
ut2 = UserTenant(user_id=editor_a.id, tenant_id=tenant_a.id, is_default=True, role="editor", role_id=editor_role.id)
|
||||||
ut3 = UserTenant(user_id=viewer_a.id, tenant_id=tenant_a.id, is_default=True, role="viewer")
|
ut3 = UserTenant(user_id=viewer_a.id, tenant_id=tenant_a.id, is_default=True, role="viewer", role_id=viewer_role.id)
|
||||||
ut4 = UserTenant(user_id=admin_b.id, tenant_id=tenant_b.id, is_default=True, role="admin")
|
ut4 = UserTenant(user_id=admin_b.id, tenant_id=tenant_b.id, is_default=True, role="admin")
|
||||||
# Admin A is also member of tenant B (multi-tenant)
|
# Admin A is also member of tenant B (multi-tenant)
|
||||||
ut5 = UserTenant(user_id=admin_a.id, tenant_id=tenant_b.id, is_default=False, role="admin")
|
ut5 = UserTenant(user_id=admin_a.id, tenant_id=tenant_b.id, is_default=False, role="admin")
|
||||||
# Guest tenant membership with role=guest
|
# Guest tenant membership with role=guest
|
||||||
ut6 = UserTenant(user_id=guest_a.id, tenant_id=tenant_a.id, is_default=True, role="guest")
|
ut6 = UserTenant(user_id=guest_a.id, tenant_id=tenant_a.id, is_default=True, role="guest", role_id=guest_role.id)
|
||||||
db.add_all([ut1, ut2, ut3, ut4, ut5, ut6])
|
db.add_all([ut1, ut2, ut3, ut4, ut5, ut6])
|
||||||
await db.flush()
|
await db.flush()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user