|
14 | 14 | get_user_role_assignments, |
15 | 15 | get_user_role_assignments_for_role_in_scope, |
16 | 16 | get_user_role_assignments_in_scope, |
| 17 | + get_visible_user_role_assignments_filtered_by_current_user, |
17 | 18 | is_user_allowed, |
18 | 19 | unassign_all_roles_from_user, |
19 | 20 | unassign_role_from_user, |
@@ -570,3 +571,48 @@ def test_validate_users_user_does_not_exist_handling(self, mock_get_user): |
570 | 571 |
|
571 | 572 | self.assertEqual(valid_users, []) |
572 | 573 | self.assertEqual(invalid_users, ["nonexistent_user"]) |
| 574 | + |
| 575 | + |
| 576 | +class TestGetVisibleUserRoleAssignmentsFilteredByCurrentUserActiveFilter(UserAssignmentsSetupMixin): |
| 577 | + """Test that get_visible_user_role_assignments_filtered_by_current_user excludes inactive users.""" |
| 578 | + |
| 579 | + def test_active_user_assignments_are_returned(self): |
| 580 | + """Test that assignments for an active user are returned.""" |
| 581 | + User = get_user_model() |
| 582 | + User. objects. create_user( username="alice", email="[email protected]", is_active=True) |
| 583 | + |
| 584 | + assignments = get_visible_user_role_assignments_filtered_by_current_user( |
| 585 | + user_external_key="alice", |
| 586 | + ) |
| 587 | + |
| 588 | + usernames = {a.subject.username for a in assignments} |
| 589 | + self.assertIn("alice", usernames) |
| 590 | + |
| 591 | + def test_inactive_user_assignments_are_excluded(self): |
| 592 | + """Test that assignments for an inactive user are filtered out.""" |
| 593 | + User = get_user_model() |
| 594 | + User. objects. create_user( username="alice", email="[email protected]", is_active=False) |
| 595 | + |
| 596 | + assignments = get_visible_user_role_assignments_filtered_by_current_user( |
| 597 | + user_external_key="alice", |
| 598 | + ) |
| 599 | + |
| 600 | + self.assertEqual(assignments, []) |
| 601 | + |
| 602 | + def test_mixed_active_inactive_subjects_in_assignments(self): |
| 603 | + """Test that only active users' assignments are returned when multiple subjects exist.""" |
| 604 | + User = get_user_model() |
| 605 | + # eve has roles in lib:Org2:physics_401, lib:Org2:chemistry_501, lib:Org2:biology_601 |
| 606 | + # grace has a role in lib:Org1:math_advanced |
| 607 | + User. objects. create_user( username="eve", email="[email protected]", is_active=True) |
| 608 | + User. objects. create_user( username="grace", email="[email protected]", is_active=False) |
| 609 | + |
| 610 | + eve_assignments = get_visible_user_role_assignments_filtered_by_current_user( |
| 611 | + user_external_key="eve", |
| 612 | + ) |
| 613 | + grace_assignments = get_visible_user_role_assignments_filtered_by_current_user( |
| 614 | + user_external_key="grace", |
| 615 | + ) |
| 616 | + |
| 617 | + self.assertGreater(len(eve_assignments), 0) |
| 618 | + self.assertEqual(grace_assignments, []) |
0 commit comments