|
2 | 2 | import respx |
3 | 3 | from httpx import Response |
4 | 4 |
|
| 5 | +from auth0.client import UsersWithTotals |
5 | 6 | from tests.datagen import BiocommonsAuth0UserFactory |
6 | 7 |
|
7 | 8 |
|
@@ -73,3 +74,41 @@ def test_search_users_methods(auth0_client, method, query): |
73 | 74 | assert request.url.params["page"] == "2" |
74 | 75 | assert request.url.params["per_page"] == "50" |
75 | 76 | assert result[0].model_dump(mode="json") == user.model_dump(mode="json") |
| 77 | + |
| 78 | + |
| 79 | +@respx.mock |
| 80 | +def test_get_role_users(auth0_client): |
| 81 | + """ |
| 82 | + Test we can get users for a role from Auth0 API |
| 83 | + """ |
| 84 | + role_id = "auth0|role_id" |
| 85 | + users = BiocommonsAuth0UserFactory.batch(size=3) |
| 86 | + route = respx.get(f"https://example.auth0.com/api/v2/roles/{role_id}/users").respond( |
| 87 | + 200, json=[u.model_dump(mode="json") for u in users] |
| 88 | + ) |
| 89 | + result = auth0_client.get_role_users(role_id) |
| 90 | + assert route.called |
| 91 | + assert len(result) == 3 |
| 92 | + for user in result: |
| 93 | + assert any(user.user_id == original.user_id for original in users) |
| 94 | + assert result[0].model_dump(mode="json") == users[0].model_dump(mode="json") |
| 95 | + |
| 96 | + |
| 97 | +@respx.mock |
| 98 | +def test_get_all_role_users(auth0_client): |
| 99 | + """ |
| 100 | + Test we can get all users for a role from Auth0 API, automatically |
| 101 | + running through multiple pages if necessary. |
| 102 | + """ |
| 103 | + role_id = "auth0|role_id" |
| 104 | + users = BiocommonsAuth0UserFactory.batch(size=150) |
| 105 | + batch1 = UsersWithTotals(users=users[:100], total=150, start=0, limit=100) |
| 106 | + batch2 = UsersWithTotals(users=users[100:], total=150, start=100, limit=100) |
| 107 | + route = respx.get(f"https://example.auth0.com/api/v2/roles/{role_id}/users").mock( |
| 108 | + side_effect=[Response(200, json=batch1.model_dump(mode="json")), |
| 109 | + Response(200, json=batch2.model_dump(mode="json"))] |
| 110 | + ) |
| 111 | + result = auth0_client.get_all_role_users(role_id) |
| 112 | + assert route.called |
| 113 | + assert route.call_count == 2 |
| 114 | + assert len(result) == 150 |
0 commit comments