8000 Update URLs, allow activities fetch · rbarner14/twilio-python@c06f81f · GitHub
[go: up one dir, main page]

Skip to content

Commit c06f81f

Browse files
committed
Update URLs, allow activities fetch
1 parent 3840b70 commit c06f81f

File tree

2 files changed

+34
-14
lines changed

2 files changed

+34
-14
lines changed

tests/task_router/test_capability.py

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,15 @@ def test_generate_token_custom_ttl(self):
4949
self.assertIsNotNone(decoded)
5050
self.assertEqual(int(time.time()) + 10000, decoded['exp'])
5151

52-
def test_websockets_allowed(self):
52+
def test_defaults(self):
5353
token = self.cap.generate_token()
5454
decoded = jwt.decode(token, self.auth_token)
5555

5656
self.assertIsNotNone(decoded)
57-
websocket_url = 'https://event-bridge.twilio.com/v1/wschannels/%s/%s' % (self.account_sid, self.worker_sid)
57+
websocket_url = (
58+
'https://event-bridge.twilio.com/v1/wschannels/%s/%s' %
59+
(self.account_sid, self.worker_sid)
60+
)
5861
expected = [
5962
{
6063
'url': websocket_url,
@@ -70,6 +73,14 @@ def test_websockets_allowed(self):
7073
'query_filter': {},
7174
'post_filter': {},
7275
},
76+
{
77+
'url':
78+
'https://taskrouter.twilio.com/v1/Workspaces/WS456/Activities',
79+
'method': 'GET',
80+
'allow': True,
81+
'query_filter': {},
82+
'post_filter': {},
83+
},
7384
]
7485
self.assertEqual(expected, decoded['policies'])
7586

@@ -79,8 +90,7 @@ def test_allow_worker_activity_updates(self):
7990
decoded = jwt.decode(token, self.auth_token)
8091

8192
self.assertIsNotNone(decoded)
82-
url = 'https://taskrouter.twilio.com/v1/Accounts/%s/Workspaces/%s/Workers/%s' % (
83-
self.account_sid,
93+
url = 'https://taskrouter.twilio.com/v1/Workspaces/%s/Workers/%s' % (
8494
self.workspace_sid,
8595
self.worker_sid,
8696
)
@@ -92,16 +102,15 @@ def test_allow_worker_activity_updates(self):
92102
'query_filter': {},
93103
'post_filter': {'ActivitySid': {'required': True}},
94104
}
95-
self.assertEqual(expected, decoded['policies'][2])
105+
self.assertEqual(expected, decoded['policies'][-1])
96106

97107
def test_allow_worker_fetch_attributes(self):
98108
self.cap.allow_worker_fetch_attributes()
99109
token = self.cap.generate_token()
100110
decoded = jwt.decode(token, self.auth_token)
101111

102112
self.assertIsNotNone(decoded)
103-
url = 'https://taskrouter.twilio.com/v1/Accounts/%s/Workspaces/%s/Workers/%s' % (
104-
self.account_sid,
113+
url = 'https://taskrouter.twilio.com/v1/Workspaces/%s/Workers/%s' % (
105114
self.workspace_sid,
106115
self.worker_sid,
107116
)
@@ -114,16 +123,15 @@ def test_allow_worker_fetch_attributes(self):
114123
'post_filter': {},
115124
}
116125

117-
self.assertEqual(expected, decoded['policies'][2])
126+
self.assertEqual(expected, decoded['policies'][-1])
118127

119128
def test_allow_task_reservation_updates(self):
120129
self.cap.allow_task_reservation_updates()
121130
token = self.cap.generate_token()
122131
decoded = jwt.decode(token, self.auth_token)
123132

124133
self.assertIsNotNone(decoded)
125-
url = 'https://taskrouter.twilio.com/v1/Accounts/%s/Workspaces/%s/Tasks/**' % (
126-
self.account_sid,
134+
url = 'https://taskrouter.twilio.com/v1/Workspaces/%s/Tasks/**' % (
127135
self.workspace_sid,
128136
)
129137

@@ -134,4 +142,4 @@ def test_allow_task_reservation_updates(self):
134142
'query_filter': {},
135143
'post_filter': {'ReservationStatus': {'required': True}},
136144
}
137-
self.assertEqual(expected, decoded['policies'][2])
145+
self.assertEqual(expected, decoded['policies'][-1])

twilio/task_router/__init__.py

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,17 +36,22 @@ def __init__(self, account_sid, auth_token, workspace_sid, worker_sid,
3636
self.policies = []
3737

3838
self._allow_worker_websocket_urls()
39+
self._allow_activity_list_fetch()
3940

4041
@property
4142
def workspace_url(self):
42-
return '%s/Accounts/%s/Workspaces/%s' % (self.base_url, self.account_sid, self.workspace_sid)
43+
return '%s/Workspaces/%s' % (self.base_url, self.workspace_sid)
4344

4445
@property
4546
def worker_url(self):
4647
return '%s/Workers/%s' % (self.workspace_url, self.worker_sid)
4748

4849
def _allow_worker_websocket_urls(self):
49-
worker_event_url = '%s/%s/%s' % (self.base_ws_url, self.account_sid, self.worker_sid)
50+
worker_event_url = '%s/%s/%s' % (
51+
self.base_ws_url,
52+
self.account_sid,
53+
self.worker_sid,
54+
)
5055
self.policies.append(make_policy(
5156
worker_event_url,
5257
'GET',
@@ -56,6 +61,12 @@ def _allow_worker_websocket_urls(self):
5661
'POST',
5762
))
5863

64+
def _allow_activity_list_fetch(self):
65+
self.policies.append(make_policy(
66+
'%s/Activities' % self.workspace_url,
67+
'GET',
68+
))
69+
5970
def allow_worker_activity_updates(self):
6071
self.policies.append(make_policy(
6172
self.worker_url,
@@ -112,7 +123,8 @@ def _generate_token(self, ttl, attributes=None):
112123
return jwt.encode(payload, self.auth_token, 'HS256')
113124

114125

115-
def make_policy(url, method, query_filter=None, post_filter=None, allowed=True):
126+
def make_policy(url, method, query_filter=None, post_filter=None,
127+
allowed=True):
116128
"""
117129
Create a policy dictionary for the given resource and method.
118130

0 commit comments

Comments
 (0)
0