|
9 | 9 | batch_unassign_role_from_users, |
10 | 10 | get_all_user_role_assignments_in_scope, |
11 | 11 | get_user_role_assignments, |
| 12 | + get_user_role_assignments_for_role, |
12 | 13 | get_user_role_assignments_for_role_in_scope, |
13 | 14 | get_user_role_assignments_in_scope, |
14 | 15 | is_user_allowed, |
@@ -52,6 +53,39 @@ def _assign_roles_to_users( |
52 | 53 | class TestUserRoleAssignments(UserAssignmentsSetupMixin): |
53 | 54 | """Test suite for user-role assignment API functions.""" |
54 | 55 |
|
| 56 | + @data( |
| 57 | + ("alice", roles.LIBRARY_ADMIN.external_key, 1, {"lib:Org1:math_101"}), |
| 58 | + ("eve", roles.LIBRARY_ADMIN.external_key, 1, {"lib:Org2:physics_401"}), |
| 59 | + ( |
| 60 | + "liam", |
| 61 | + roles.LIBRARY_AUTHOR.external_key, |
| 62 | + 3, |
| 63 | + {"lib:Org4:art_101", "lib:Org4:art_201", "lib:Org4:art_301"}, |
| 64 | + ), |
| 65 | + ("alice", roles.LIBRARY_AUTHOR.external_key, 0, set()), |
| 66 | + ("non_existent_user", roles.LIBRARY_ADMIN.external_key, 0, set()), |
| 67 | + ) |
| 68 | + @unpack |
| 69 | + def test_get_user_role_assignments_for_role( |
| 70 | + self, |
| 71 | + username, |
| 72 | + role_external_key, |
| 73 | + expected_count, |
| 74 | + expected_scopes, |
| 75 | + ): |
| 76 | + role_assignments = get_user_role_assignments_for_role( |
| 77 | + user_external_key=username, |
| 78 | + role_external_key=role_external_key, |
| 79 | + ) |
| 80 | + |
| 81 | + self.assertEqual(len(role_assignments), expected_count) |
| 82 | + |
| 83 | + role_names = {r.external_key for assignment in role_assignments for r in assignment.roles} |
| 84 | + self.assertEqual(role_names, set() if expected_count == 0 else {role_external_key}) |
| 85 | + |
| 86 | + scopes = {assignment.scope.external_key for assignment in role_assignments} |
| 87 | + self.assertEqual(scopes, expected_scopes) |
| 88 | + |
55 | 89 | @data( |
56 | 90 | ("john", roles.LIBRARY_ADMIN.external_key, "lib:Org1:math_101", False), |
57 | 91 | ("jane", roles.LIBRARY_USER.external_key, "lib:Org1:english_101", False), |
|
0 commit comments