Skip to content

Commit 63bb470

Browse files
committed
Test getting users by roles
1 parent 93cfaa8 commit 63bb470

1 file changed

Lines changed: 39 additions & 0 deletions

File tree

tests/test_auth0_client.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import respx
33
from httpx import Response
44

5+
from auth0.client import UsersWithTotals
56
from tests.datagen import BiocommonsAuth0UserFactory
67

78

@@ -73,3 +74,41 @@ def test_search_users_methods(auth0_client, method, query):
7374
assert request.url.params["page"] == "2"
7475
assert request.url.params["per_page"] == "50"
7576
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

Comments
 (0)