|
| 1 | +from datetime import timezone, datetime |
1 | 2 | from unittest import mock |
2 | 3 |
|
3 | 4 | import pytest |
|
8 | 9 | ListProjectMembersEnterpriseOrderBy, |
9 | 10 | UserRole, |
10 | 11 | UserPatchPath, |
11 | | - ListGroupManagersOrderBy |
| 12 | + ListGroupManagersOrderBy, |
| 13 | + ListUsersOrderBy, |
| 14 | + UserStatus, |
| 15 | + UserTwoFactorAuthStatus, |
| 16 | + OrganizationRole, |
| 17 | + ProjectRole |
12 | 18 | ) |
13 | 19 | from crowdin_api.api_resources.users.resource import ( |
14 | 20 | UsersResource, |
@@ -612,3 +618,72 @@ def test_delete_user(self, m_request, base_absolut_url): |
612 | 618 | resource = self.get_resource(base_absolut_url) |
613 | 619 | assert resource.delete_user(userId=1) == "response" |
614 | 620 | m_request.assert_called_once_with(method="delete", path="users/1") |
| 621 | + |
| 622 | + @pytest.mark.parametrize( |
| 623 | + "in_params, request_params", |
| 624 | + ( |
| 625 | + ( |
| 626 | + { |
| 627 | + "limit": 10, |
| 628 | + "offset": 2, |
| 629 | + "order_by": Sorting( |
| 630 | + [ |
| 631 | + SortingRule(ListUsersOrderBy.CREATED_AT, SortingOrder.DESC), |
| 632 | + SortingRule(ListUsersOrderBy.USERNAME) |
| 633 | + ] |
| 634 | + ), |
| 635 | + "status": UserStatus.ACTIVE, |
| 636 | + "search": "Alex", |
| 637 | + "two_factor": UserTwoFactorAuthStatus.ENABLED, |
| 638 | + "organization_roles": [ |
| 639 | + OrganizationRole.MANAGER, |
| 640 | + OrganizationRole.VENDOR, |
| 641 | + OrganizationRole.CLIENT |
| 642 | + ], |
| 643 | + "team_id": 123, |
| 644 | + "project_ids": [11, 22, 33], |
| 645 | + "project_roles": [ |
| 646 | + ProjectRole.MANAGER, |
| 647 | + ProjectRole.DEVELOPER, |
| 648 | + ProjectRole.LANGUAGE_COORDINATOR |
| 649 | + ], |
| 650 | + "language_ids": ["uk", "es", "it"], |
| 651 | + "group_ids": [4, 5, 6], |
| 652 | + "last_seen_from": datetime(2024, 1, 10, 10, 41, 33, tzinfo=timezone.utc), |
| 653 | + "last_seen_to": datetime(2024, 1, 11, 10, 41, 33, tzinfo=timezone.utc) |
| 654 | + }, |
| 655 | + { |
| 656 | + "limit": 10, |
| 657 | + "offset": 2, |
| 658 | + "orderBy": Sorting( |
| 659 | + [ |
| 660 | + SortingRule(ListUsersOrderBy.CREATED_AT, SortingOrder.DESC), |
| 661 | + SortingRule(ListUsersOrderBy.USERNAME) |
| 662 | + ] |
| 663 | + ), |
| 664 | + "status": "active", |
| 665 | + "search": "Alex", |
| 666 | + "twoFactor": "enabled", |
| 667 | + "organizationRoles": "manager,vendor,client", |
| 668 | + "teamId": 123, |
| 669 | + "projectIds": "11,22,33", |
| 670 | + "projectRoles": "manager,developer,language_coordinator", |
| 671 | + "languageIds": "uk,es,it", |
| 672 | + "groupIds": "4,5,6", |
| 673 | + "lastSeenFrom": "2024-01-10T10:41:33+00:00", |
| 674 | + "lastSeenTo": "2024-01-11T10:41:33+00:00" |
| 675 | + } |
| 676 | + ), |
| 677 | + ) |
| 678 | + ) |
| 679 | + @mock.patch("crowdin_api.requester.APIRequester.request") |
| 680 | + def test_list_users(self, m_request, in_params, request_params, base_absolut_url): |
| 681 | + m_request.return_value = "response" |
| 682 | + |
| 683 | + resource = self.get_resource(base_absolut_url) |
| 684 | + assert resource.list_users(**in_params) |
| 685 | + m_request.assert_called_once_with( |
| 686 | + method="get", |
| 687 | + path="users", |
| 688 | + params=request_params |
| 689 | + ) |
0 commit comments