|
| 1 | +from pyechonext.permissions import ( |
| 2 | + AccessControlRule, |
| 3 | + AgeRestrictionsABP, |
| 4 | + DefaultPermissionChecker, |
| 5 | + Permission, |
| 6 | + Policy, |
| 7 | + Resource, |
| 8 | + Role, |
| 9 | + User, |
| 10 | + UserController, |
| 11 | +) |
| 12 | + |
| 13 | +view_users_perm = Permission("view_users") |
| 14 | +edit_users_perm = Permission("edit_users") |
| 15 | + |
| 16 | +admin_role = Role("admin") |
| 17 | +admin_role.add_permission(view_users_perm) |
| 18 | +admin_role.add_permission(edit_users_perm) |
| 19 | + |
| 20 | +user_role = Role("user") |
| 21 | +user_role.add_permission(view_users_perm) |
| 22 | + |
| 23 | +user_resource = Resource("UserResource") |
| 24 | + |
| 25 | +policy = Policy() |
| 26 | +policy.add_rule(AccessControlRule(admin_role, view_users_perm, user_resource, True)) |
| 27 | +policy.add_rule(AccessControlRule(admin_role, edit_users_perm, user_resource, True)) |
| 28 | +policy.add_rule(AccessControlRule(user_role, view_users_perm, user_resource, True)) |
| 29 | +policy.add_rule(AccessControlRule(user_role, edit_users_perm, user_resource, False)) |
| 30 | + |
| 31 | +age_policy = AgeRestrictionsABP(conditions={"age": 18}, rules=policy.rules) |
| 32 | +age_policy.add_rule(AccessControlRule(user_role, view_users_perm, user_resource, True)) |
| 33 | + |
| 34 | +admin_user = User("admin", attributes={"age": 30}) |
| 35 | +admin_user.add_role(admin_role) |
| 36 | + |
| 37 | +young_user = User("john_doe", attributes={"age": 17}) |
| 38 | +young_user.add_role(user_role) |
| 39 | + |
| 40 | +permission_checker = DefaultPermissionChecker(policy) |
| 41 | +user_controller = UserController(permission_checker) |
| 42 | + |
| 43 | + |
| 44 | +def test_controller(): |
| 45 | + """Test Controller""" |
| 46 | + assert user_controller.view_users(admin_user, user_resource) == ( |
| 47 | + "200 OK", |
| 48 | + "User edit form", |
| 49 | + ) |
| 50 | + assert user_controller.edit_users(admin_user, user_resource) == ( |
| 51 | + "200 OK", |
| 52 | + "User edit form", |
| 53 | + ) |
| 54 | + assert user_controller.edit_users(young_user, user_resource) == ( |
| 55 | + "403 Forbidden", |
| 56 | + "You do not have permission to edit users.", |
| 57 | + ) |
| 58 | + |
| 59 | + |
| 60 | +def test_age_policy(): |
| 61 | + """Test Age Policy""" |
| 62 | + assert age_policy.evaluate(young_user, user_resource, view_users_perm) == False |
| 63 | + assert age_policy.evaluate(admin_user, user_resource, view_users_perm) == True |
0 commit comments