8000 Allow fetching Reservations under a Worker by default · PNPtutorials/twilio-python@1e7ec9c · GitHub
[go: up one dir, main page]

Skip to content

Commit 1e7ec9c

Browse files
committed
Allow fetching Reservations under a Worker by default
Allow updating Reservations under a Worker
1 parent ea14998 commit 1e7ec9c

File tree

4 files changed

+61
-40
lines changed

4 files changed

+61
-40
lines changed

tests/task_router/test_capability.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,29 +59,36 @@ def test_defaults(self):
5959
)
6060
expected = [
6161
{
62-
'url': 'https://taskrouter.twilio.com/v1/Workspaces/WS456/Activities',
62+
'url': websocket_url,
6363
'method': 'GET',
6464
'allow': True,
6565
'query_filter': {},
6666
'post_filter': {},
6767
},
6868
{
69-
'url': 'https://taskrouter.twilio.com/v1/Workspaces/{0}/Tasks/**'.format(self.workspace_sid),
69+
'url': websocket_url,
70+
'method': 'POST',
71+
'allow': True,
72+
'query_filter': {},
73+
'post_filter': {},
74+
},
75+
{
76+
'url': 'https://taskrouter.twilio.com/v1/Workspaces/WS456/Activities',
7077
'method': 'GET',
7178
'allow': True,
7279
'query_filter': {},
7380
'post_filter': {},
7481
},
7582
{
76-
'url': websocket_url,
83+
'url': 'https://taskrouter.twilio.com/v1/Workspaces/{0}/Tasks/**'.format(self.workspace_sid),
7784
'method': 'GET',
7885
'allow': True,
7986
'query_filter': {},
8087
'post_filter': {},
8188
},
8289
{
83-
'url': websocket_url,
84-
'method': 'POST',
90+
'url': 'https://taskrouter.twilio.com/v1/Workspaces/{0}/Workers/{1}/Reservations/**'.format(self.workspace_sid, self.worker_sid),
91+
'method': 'GET',
8592
'allow': True,
8693
'query_filter': {},
8794
'post_filter': {},

tests/task_router/test_task_router_capability.py

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -72,14 +72,15 @@ def test_worker_default(self):
7272
self.check_decoded(decoded, account_sid, workspace_sid, worker_sid, worker_sid)
7373

7474
policies = decoded['policies']
75-
self.assertEqual(len(policies), 5)
75+
self.assertEqual(len(policies), 6)
7676

7777
for method, url, policy in [
78-
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Activities", policies[0]),
79-
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Tasks/**", policies[1]),
80-
('GET', "https://taskrouter.twilio.com/v1/wschannels/AC123/WK789", policies[2]),
81-
('POST', "https://event-bridge.twilio.com/v1/wschannels/AC123/WK789", policies[3]),
82-
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Workers/WK789", policies[4])
78+
('GET', "https://event-bridge.twilio.com/v1/wschannels/AC123/WK789", policies[0]),
79< 8000 /td>+
('POST', "https://event-bridge.twilio.com/v1/wschannels/AC123/WK789", policies[1]),
80+
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Workers/WK789", policies[2])
81+
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Activities", policies[3]),
82+
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Tasks/**", policies[4]),
83+
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Workers/WK789/Reservations/**", policies[5])
8384
]:
8485
yield self.check_policy, method, url, policy
8586

@@ -128,15 +129,16 @@ def test_deprecated_worker(self):
128129
self.check_decoded(decoded, account_sid, workspace_sid, worker_sid, worker_sid)
129130

130131
policies = decoded['policies']
131-
self.assertEqual(len(policies), 5)
132+
self.assertEqual(len(policies), 6)
132133

133-
# should expect 5 policies
134+
# should expect 6 policies
134135
for method, url, policy in [
135-
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Activities", policies[0]),
136-
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Tasks/**", policies[1]),
137-
('GET', "https://event-bridge.twilio.com/v1/wschannels/AC123/WK789", policies[2]),
138-
('POST', "https://event-bridge.twilio.com/v1/wschannels/AC123/WK789", policies[3]),
139-
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Workers/WK789", policies[4])
136+
('GET', "https://event-bridge.twilio.com/v1/wschannels/AC123/WK789", policies[0]),
137+
('POST', "https://event-bridge.twilio.com/v1/wschannels/AC123/WK789", policies[1]),
138+
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Activities", policies[2]),
139+
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Tasks/**", policies[3]),
140+
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Workers/WK789/Reservations/**", policies[4]),
141+
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Workers/WK789", policies[5])
140142
]:
141143
yield self.check_policy, method, url, policy
142144

tests/task_router/test_task_router_worker_capability.py

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -72,17 +72,18 @@ def test_defaults(self):
7272

7373
websocket_url = 'https://event-bridge.twilio.com/v1/wschannels/{0}/{1}'.format(self.account_sid, self.worker_sid)
7474

75-
# expect 5 policies
75+
# expect 6 policies
7676
policies = decoded['policies']
77-
self.assertEqual(len(policies), 5)
77+
self.assertEqual(len(policies), 6)
7878

79-
# should expect 5 policies
79+
# should expect 6 policies
8080
for method, url, policy in [
8181
('GET', websocket_url, policies[0]),
8282
('POST', websocket_url, policies[1]),
8383
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Workers/WK789", policies[2]),
84-
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Tasks/**", policies[3]),
85-
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Activities", policies[4])
84+
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Activities", policies[3])
85+
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Tasks/**", policies[4]),
86+
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Workers/WK789/Reservations/**", policies[5])
8687
]:
8788
yield self.check_policy, method, url, policy
8889

@@ -98,8 +99,8 @@ def test_allow_activity_updates(self):
9899
self.assertNotEqual(None, decoded)
99100

100101
policies = decoded['policies']
101-
self.assertEqual(len(policies), 6)
102-
policy = policies[5]
102+
self.assertEqual(len(policies), 7)
103+
policy = policies[6]
103104

104105
url = "https://taskrouter.twilio.com/v1/Workspaces/{0}/Workers/{1}".format(self.workspace_sid, self.worker_sid)
105106

@@ -121,13 +122,15 @@ def test_allow_reservation_updates(self):
121122
self.assertNotEqual(None, decoded)
122123

123124
policies = decoded['policies']
124-
self.assertEqual(len(policies), 6)
125-
126-
policy = policies[5]
125+
self.assertEqual(len(policies), 8)
127126

128-
url = "https://taskrouter.twilio.com/v1/Workspaces/{0}/Tasks/**".format(self.workspace_sid)
127+
taskPolicy = policies[6]
128+
tasksUrl = "https://taskrouter.twilio.com/v1/Workspaces/{0}/Tasks/**".format(self.workspace_sid)
129+
self.check_policy('POST', tasksUrl, taskPolicy)
129130

130-
self.check_policy('POST', url, policy)
131+
workerReservationsPolicy = policies[7]
132+
reservationsUrl = "https://taskrouter.twilio.com/v1/Workspaces/{0}/Workers/{1}/Reservations/**".format(self.workspace_sid, self.worker_sid)
133+
self.check_policy('POST', reservationsUrl, workerReservationsPolicy)
131134

132135
if __name__ == "__main__":
133136
unittest.main()

twilio/task_router/__init__.py

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,12 @@ def __init__(self, account_sid, auth_token, workspace_sid, channel_id):
3939
# validate the JWT
4040
self.validate_jwt()
4141

42-
# set up resources
43-
self.setup_resource()
44-
4542
# add permissions to GET and POST to the event-bridge channel
4643
self.allow_web_sockets(channel_id)
4744

45+
# set up resources
46+
self.setup_resource()
47+
4848
# add permissions to fetch the instance resource
4949
self.add_policy(self.resource_url, "GET", True)
5050

@@ -61,8 +61,11 @@ def setup_resource(self):
6161
activity_url = self.base_url + "/Activities"
6262
self.allow(activity_url, "GET")
6363

64-
reservations_url = self.base_url + "/Tasks/**"
65-
self.allow(reservations_url, "GET")
64+
tasks_url = self.base_url + "/Tasks/**"
65+
self.allow(tasks_url, "GET")
66+
67+
worker_reservations_url = self.resource_url + "/Reservations/**"
68+
self.allow(worker_reservations_url, "GET")
6669

6770
elif self.channel_prefix == "WQ":
6871
self.resource_url = "{0}/TaskQueues/{1}".format(
@@ -209,13 +212,15 @@ def __init__(self, account_sid, auth_token, workspace_sid, worker_sid):
209212
workspace_sid,
210213
worker_sid)
211214

212-
self.reservations_url = self.base_url + "/Tasks/**"
213215
self.activity_url = self.base_url + "/Activities"
216+
self.tasks_url = self.base_url + "/Tasks/**"
217+
self.worker_reservations_url = self.resource_url + "/Reservations/**"
214218

215-
# add permissions to fetch the list of activities and
216-
# list of worker reservations
217-
self.allow(self.reservations_url, "GET")
219+
# add permissions to fetch the
220+
# list of activities, tasks, and worker reservations
218221
self.allow(self.activity_url, "GET")
222+
self.allow(self.tasks_url, "GET")
223+
self.allow(self.worker_reservations_url, "GET")
219224

220225
def setup_resource(self):
221226
self.resource_url = self.base_url + "/Workers/" + self.channel_id
@@ -229,7 +234,11 @@ def allow_activity_updates(self):
229234

230235
def allow_reservation_updates(self):
231236
self.policies.append(self.make_policy(
232-
self.reservations_url,
237+
self.tasks_url,
238+
'POST',
239+
True))
240+
self.policies.append(self.make_policy(
241+
self.worker_reservations_url,
233242
'POST',
234243
True))
235244

0 commit comments

Comments
 (0)
0