Skip to content

Commit 2107ce5

Browse files
author
Rohan Jadvani
authored
Rename endpoints when fetching Directory Groups and Users (#23)
1 parent 4eee53b commit 2107ce5

File tree

2 files changed

+58
-67
lines changed

2 files changed

+58
-67
lines changed

tests/test_directory_sync.py

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ def mock_directories(self):
9595
return {
9696
"data": [
9797
{
98-
"id": "directory_edp_id",
98+
"id": "directory_id",
9999
"external_key": "fried-chicken",
100100
"state": "linked",
101101
"type": "gsuite directory",
@@ -108,51 +108,52 @@ def mock_directories(self):
108108
"listMetadata": {"before": None, "after": None},
109109
}
110110

111-
def test_list_users(self, mock_users, mock_request_method):
111+
def test_list_users_with_directory(self, mock_users, mock_request_method):
112112
mock_response = Response()
113113
mock_response.status_code = 200
114114
mock_response.response_dict = mock_users
115115
mock_request_method("get", mock_response, 200)
116-
response = self.directory_sync.list_users(
117-
directory_endpoint_id="directory_edp_id"
118-
)
116+
response = self.directory_sync.list_users(directory="directory_id")
117+
assert response.status_code == 200
118+
assert response.response_dict == mock_users
119+
120+
def test_list_users_with_group(self, mock_users, mock_request_method):
121+
mock_response = Response()
122+
mock_response.status_code = 200
123+
mock_response.response_dict = mock_users
124+
mock_request_method("get", mock_response, 200)
125+
response = self.directory_sync.list_users(group="directory_grp_id")
119126
assert response.status_code == 200
120127
assert response.response_dict == mock_users
121128

122-
def test_list_groups(self, mock_groups, mock_request_method):
129+
def test_list_groups_with_directory(self, mock_groups, mock_request_method):
123130
mock_response = Response()
124131
mock_response.status_code = 200
125132
mock_response.response_dict = mock_groups
126133
mock_request_method("get", mock_response, 200)
127-
response = self.directory_sync.list_groups(
128-
directory_endpoint_id="directory_edp_id"
129-
)
134+
response = self.directory_sync.list_groups(directory="directory_id")
130135
assert response.status_code == 200
131136
assert response.response_dict == mock_groups
132137

133-
def test_get_user(self, mock_user, mock_request_method):
138+
def test_list_groups_with_user(self, mock_groups, mock_request_method):
134139
mock_response = Response()
135140
mock_response.status_code = 200
136-
mock_response.response_dict = mock_user
141+
mock_response.response_dict = mock_groups
137142
mock_request_method("get", mock_response, 200)
138-
response = self.directory_sync.get_user(
139-
directory_endpoint_id="directory_edp_id",
140-
directory_user_id="directory_usr_id",
141-
)
143+
response = self.directory_sync.list_groups(user="directory_usr_id")
142144
assert response.status_code == 200
143-
assert response.response_dict == mock_user
145+
assert response.response_dict == mock_groups
144146

145-
def test_list_user_groups(self, mock_user_groups, mock_request_method):
147+
def test_get_user(self, mock_user, mock_request_method):
146148
mock_response = Response()
147149
mock_response.status_code = 200
148-
mock_response.response_dict = mock_user_groups
150+
mock_response.response_dict = mock_user
149151
mock_request_method("get", mock_response, 200)
150-
response = self.directory_sync.list_user_groups(
151-
directory_endpoint_id="directory_edp_id",
152-
directory_user_id="directory_usr_id",
152+
response = self.directory_sync.get_user(
153+
directory="directory_id", directory_user="directory_usr_id",
153154
)
154155
assert response.status_code == 200
155-
assert response.response_dict == mock_user_groups
156+
assert response.response_dict == mock_user
156157

157158
def test_list_directories(self, mock_directories, mock_request_method):
158159
mock_response = Response()

workos/directory_sync.py

Lines changed: 35 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -19,86 +19,76 @@ def request_helper(self):
1919
return self._request_helper
2020

2121
def list_users(
22-
self, directory_endpoint_id, limit=RESPONSE_LIMIT, before=None, after=None
22+
self, directory=None, group=None, limit=RESPONSE_LIMIT, before=None, after=None
2323
):
24-
"""Gets a list of provisioned Users for a Directory Endpoint.
24+
"""Gets a list of provisioned Users for a Directory.
25+
26+
Note, either 'directory' or 'group' must be provided.
2527
2628
Args:
27-
directory_endpoint_id (str): Directory Endpoint unique identifier.
29+
directory (str): Directory unique identifier.
30+
group (str): Directory Group unique identifier.
2831
limit (int): Maximum number of records to return.
29-
before (str): Pagination cursor to receive records before a provided Directory Endpoint ID.
30-
after (str): Pagination cursor to receive records after a provided Directory Endpoint ID.
32+
before (str): Pagination cursor to receive records before a provided Directory ID.
33+
after (str): Pagination cursor to receive records after a provided Directory ID.
3134
3235
Returns:
3336
dict: Directory Users response from WorkOS.
3437
"""
3538
params = {"limit": limit, "before": before, "after": after}
39+
if group is not None:
40+
params["group"] = group
41+
if directory is not None:
42+
params["directory"] = directory
3643
return self.request_helper.request(
37-
"directories/{directory_endpoint_id}/users".format(
38-
directory_endpoint_id=directory_endpoint_id
39-
),
44+
"directory_users",
4045
method=REQUEST_METHOD_GET,
4146
params=params,
4247
token=workos.api_key,
4348
)
4449

4550
def list_groups(
46-
self, directory_endpoint_id, limit=RESPONSE_LIMIT, before=None, after=None
51+
self, directory=None, user=None, limit=RESPONSE_LIMIT, before=None, after=None
4752
):
48-
"""Gets a list of provisioned Groups for a Directory Endpoint.
53+
"""Gets a list of provisioned Groups for a Directory .
54+
55+
Note, either 'directory' or 'user' must be provided.
4956
5057
Args:
51-
directory_endpoint_id (str): Directory Endpoint unique identifier.
58+
directory (str): Directory unique identifier.
59+
user (str): Directory User unique identifier.
5260
limit (int): Maximum number of records to return.
53-
before (str): Pagination cursor to receive records before a provided Directory Endpoint ID.
54-
after (str): Pagination cursor to receive records after a provided Directory Endpoint ID.
61+
before (str): Pagination cursor to receive records before a provided Directory ID.
62+
after (str): Pagination cursor to receive records after a provided Directory ID.
5563
5664
Returns:
5765
dict: Directory Groups response from WorkOS.
5866
"""
5967
params = {"limit": limit, "before": before, "after": after}
68+
if user is not None:
69+
params["user"] = user
70+
if directory is not None:
71+
params["directory"] = directory
6072
return self.request_helper.request(
61-
"directories/{directory_endpoint_id}/groups".format(
62-
directory_endpoint_id=directory_endpoint_id
63-
),
73+
"directory_groups",
6474
method=REQUEST_METHOD_GET,
6575
params=params,
6676
token=workos.api_key,
6777
)
6878

69-
def get_user(self, directory_endpoint_id, directory_user_id):
79+
def get_user(self, directory, directory_user):
7080
"""Gets details for a single provisioned Directory User.
7181
7282
Args:
73-
directory_endpoint_id (str): Directory Endpoint unique identifier.
74-
directory_user_id (str): Directory User unique identifier.
83+
directory (str): Directory unique identifier.
84+
directory_user (str): Directory User unique identifier.
7585
7686
Returns:
7787
dict: Directory user response from WorkOS.
7888
"""
7989
return self.request_helper.request(
80-
"directories/{directory_endpoint_id}/users/{directory_user_id}".format(
81-
directory_endpoint_id=directory_endpoint_id,
82-
directory_user_id=directory_user_id,
83-
),
84-
method=REQUEST_METHOD_GET,
85-
token=workos.api_key,
86-
)
87-
88-
def list_user_groups(self, directory_endpoint_id, directory_user_id):
89-
"""Gets details for a Directory User's provisioned Groups.
90-
91-
Args:
92-
directory_endpoint_id (str): Directory Endpoint unique identifier.
93-
directory_user_id (str): Directory User unique identifier.
94-
95-
Returns:
96-
dict: Directory User's Groups response from WorkOS.
97-
"""
98-
return self.request_helper.request(
99-
"directories/{directory_endpoint_id}/users/{directory_user_id}/groups".format(
100-
directory_endpoint_id=directory_endpoint_id,
101-
directory_user_id=directory_user_id,
90+
"directories/{directory}/users/{directory_user}".format(
91+
directory=directory, directory_user=directory_user,
10292
),
10393
method=REQUEST_METHOD_GET,
10494
token=workos.api_key,
@@ -110,11 +100,11 @@ def list_directories(
110100
"""Gets details for existing Directories.
111101
112102
Args:
113-
domain (str): Domain of a Directory Endpoint. (Optional)
114-
search (str): Searchable text for a Directory Endpoint. (Optional)
103+
domain (str): Domain of a Directory. (Optional)
104+
search (str): Searchable text for a Directory. (Optional)
115105
limit (int): Maximum number of records to return. (Optional)
116-
before (str): Pagination cursor to receive records before a provided Directory Endpoint ID. (Optional)
117-
after (str): Pagination cursor to receive records after a provided Directory Endpoint ID. (Optional)
106+
before (str): Pagination cursor to receive records before a provided Directory ID. (Optional)
107+
after (str): Pagination cursor to receive records after a provided Directory ID. (Optional)
118108
119109
Returns:
120110
dict: Directories response from WorkOS.

0 commit comments

Comments
 (0)