Skip to content

Commit

Permalink
Fix
Browse files Browse the repository at this point in the history
  • Loading branch information
jonatascastro12 committed Aug 17, 2023
1 parent 75b9402 commit 63f0515
Show file tree
Hide file tree
Showing 4 changed files with 136 additions and 11 deletions.
4 changes: 2 additions & 2 deletions tests/test_organizations.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ def mock_organizations_with_limit_v2(self):
"after": None,
"order": None,
},
"method": Organizations.list_organizations,
"method": Organizations.list_organizations_v2,
},
}
return self.organizations.construct_from_response(dict_response)
Expand Down Expand Up @@ -150,7 +150,7 @@ def mock_organizations_with_default_limit_v2(self):
"order": None,
"default_limit": True,
},
"method": Organizations.list_organizations,
"method": Organizations.list_organizations_v2,
},
}
return self.organizations.construct_from_response(dict_response)
Expand Down
125 changes: 125 additions & 0 deletions tests/test_users.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,93 @@ def setup(self, set_api_key, set_client_id):
def mock_user(self):
return MockUser("user_01H7ZGXFP5C6BBQY6Z7277ZCT0").to_dict()

@pytest.fixture
def mock_users(self):
user_list = [MockUser(id=str(i)).to_dict() for i in range(5000)]

dict_response = {
"data": user_list,
"list_metadata": {"before": None, "after": None},
"metadata": {
"params": {
"type": None,
"organization": None,
"email": None,
"limit": None,
"before": None,
"after": None,
"order": None,
"default_limit": True,
},
"method": Users.list_users,
},
}
return self.users.construct_from_response(dict_response)

@pytest.fixture
def mock_users_with_limit(self):
user_list = [MockUser(id=str(i)).to_dict() for i in range(4)]
dict_response = {
"data": user_list,
"list_metadata": {"before": None, "after": None},
"metadata": {
"params": {
"type": None,
"organization": None,
"email": None,
"limit": 4,
"before": None,
"after": None,
"order": None,
},
"method": Users.list_users,
},
}
return self.users.construct_from_response(dict_response)

@pytest.fixture
def mock_users_with_default_limit(self):
user_list = [MockUser(id=str(i)).to_dict() for i in range(10)]

dict_response = {
"data": user_list,
"list_metadata": {"before": None, "after": "user_id_xxx"},
"metadata": {
"params": {
"type": None,
"organization": None,
"email": None,
"limit": None,
"before": None,
"after": None,
"order": None,
"default_limit": True,
},
"method": Users.list_users,
},
}
return self.users.construct_from_response(dict_response)

@pytest.fixture
def mock_users_pagination_response(self):
user_list = [MockUser(id=str(i)).to_dict() for i in range(4990)]

return {
"data": user_list,
"list_metadata": {"before": None, "after": None},
"metadata": {
"params": {
"domains": None,
"limit": None,
"before": None,
"after": None,
"order": None,
"default_limit": True,
},
"method": Users.list_users,
},
}

def test_create_user(self, mock_user, mock_request_method):
mock_request_method("post", mock_user, 201)

Expand All @@ -34,3 +121,41 @@ def test_get_user(self, mock_user, capture_and_mock_request):

assert url[0].endswith("users/user_01H7ZGXFP5C6BBQY6Z7277ZCT0")
assert user["id"] == "user_01H7ZGXFP5C6BBQY6Z7277ZCT0"

def test_list_users_auto_pagination(
self,
mock_users_with_default_limit,
mock_users_pagination_response,
mock_users,
mock_request_method,
):
mock_request_method("get", mock_users_pagination_response, 200)
users = mock_users_with_default_limit
all_users = users.auto_paging_iter()
assert len(*list(all_users)) == len(mock_users["data"])

def test_list_users_honors_limit(
self,
mock_users_with_limit,
mock_users_pagination_response,
mock_request_method,
):
mock_request_method("get", mock_users_pagination_response, 200)
users = mock_users_with_limit
all_users = users.auto_paging_iter()
dict_response = users.to_dict()
assert len(*list(all_users)) == len(dict_response["data"])

def test_list_users_returns_metadata(
self,
mock_users,
mock_request_method,
):
mock_request_method("get", mock_users, 200)
users = self.users.list_users(
domains=["planet-express.com"]
)
dict_users = users.to_dict()
assert dict_users["metadata"]["params"]["domains"] == [
"planet-express.com"
]
2 changes: 1 addition & 1 deletion workos/organizations.py
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ def list_organizations_v2(
token=workos.api_key,
)

dict_response = response.to_dict()
dict_response = response

dict_response["metadata"] = {
"params": params,
Expand Down
16 changes: 8 additions & 8 deletions workos/users.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,8 @@ def list_users(self,
dict: Users response from WorkOS.
"""

default_limit = None

if limit is None:
limit = RESPONSE_LIMIT
default_limit = True
Expand Down Expand Up @@ -136,17 +138,15 @@ def list_users(self,
token=workos.api_key,
)

dict_response = response.to_dict()

dict_response["metadata"] = {
response["metadata"] = {
"params": params,
"method": Organizations.list_organizations_v2,
"method": Users.list_users,
}

if "default_limit" in locals():
if "metadata" in dict_response and "params" in dict_response["metadata"]:
dict_response["metadata"]["params"]["default_limit"] = default_limit
if "metadata" in response and "params" in response["metadata"]:
response["metadata"]["params"]["default_limit"] = default_limit
else:
dict_response["metadata"] = {"params": {"default_limit": default_limit}}
response["metadata"] = {"params": {"default_limit": default_limit}}

return self.construct_from_response(dict_response)
return self.construct_from_response(response)

0 comments on commit 63f0515

Please sign in to comment.