8000 Resync edge by jingming · Pull Request #251 · twilio/twilio-python · GitHub
[go: up one dir, main page]

Skip to content

Resync edge #251

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 67 commits into from
Jan 28, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
da33db6
Sms Pricing for Messaging Countries
senthgit Oct 10, 2015
42bb368
add test_paging_iter test for Recordings resource
morrissimo Oct 13, 2015
f5303ed
add iter() method to Recordings resource
morrissimo Oct 13, 2015
3012665
Adding python 3.5 support
patrick91 Oct 17, 2015
13da73b
Sip Trunking SDK
senthgit Oct 10, 2015
0e7e73d
Fix edge build
jingming Oct 29, 2015
cf5a8b7
Bump to version 4.7.0
Oct 29, 2015
b0e5f3b
Merge pull request #33 from twilio/sms-pricing
jingming Nov 2, 2015
0978a56
Bump version for SMS pricing release
jingming Nov 2, 2015
4eabc57
Merge branch 'master' of https://github.com/twilio/python-private
jingming Nov 2, 2015
e13a621
Change near_lat_long to be formatted string, fixes #216
Nov 2, 2015
49ff0b5
Merge pull request #231 from twilio/fix-lat-long-doc
carlosdp Nov 2, 2015
0a9c7a9
Merge pull request #226 from morrissimo/RM-add_before_after_support_t…
carlosdp Nov 2, 2015
c0c79fd
Add Python 3.5 to Travis build matrix
Nov 2, 2015
e1b258b
Merge pull request #227 from patrick91/update/py35
carlosdp Nov 2, 2015
8374ba2
Remove --use-mirrors to support 3.5
Nov 2, 2015
f4ed073
Merge pull request #232 from twilio/remove-pip-mirrors
carlosdp Nov 2, 2015
7b11d5f
Revert "Merge remote-tracking branch 'origin/signal-beta' into edge"
jingming Nov 2, 2015
20f2ed6
Revert "Merge branch 'conversations' into edge"
jingming Nov 2, 2015
b1f7f3d
Remove merge artifact
jingming Nov 2, 2015
8e73936
Merge branch 'master' of github.com:twilio/python-private
Nov 3, 2015
e909853
Merge branch 'remove-edge' of https://github.com/twilio/python-privat…
jingming Nov 3, 2015
d65bd3d
Merge pull request #233 from twilio/remove-edge
carlosdp Nov 3, 2015
15bc4cb
Bump version due to conflict
jingming Nov 3, 2015
734a571
Merge branch 'master' of https://github.com/twilio/python-private int…
jingming Nov 3, 2015
0411db6
Merge pull request #34 from twilio/sip-trunking
jingming Nov 3, 2015
27f9df2
Bump version for sip trunking release
jingming Nov 3, 2015
c87ee27
Fixed redundant countries
senthgit Nov 16, 2015
264f0e3
Merge pull request #235 from twilio/fix-messaging-country
senthgit Nov 18, 2015
a7fbb65
Bump version to 4.9.1
senthgit Nov 18, 2015
a04a20f
Fix for Broken Trunking helper library
senthgit Nov 21, 2015
d7fd631
Merge pull request #238 from twilio/fix-trunking
senthgit Nov 25, 2015
b0c7df5
Bump version to 4.9.2
senthgit Nov 25, 2015
e0c29fa
Add access tokens to master
jingming Dec 3, 2015
c2f99b5
Bump versions
jingming Dec 3, 2015
3cfedaf
Merge branch 'master' of https://github.com/twilio/twilio-python into…
jingming Dec 3, 2015
eb84973
Merge pull request #240 from twilio/identity-tokens
jingming Dec 3, 2015
ab9b121
Make nbf optional in access tokens
jingming Dec 8, 2015
5f2d9c1
Merge pull request #39 from twilio/remove-nbf
jingming Dec 9, 2015
b335ea1
Bump version
jingming Dec 9, 2015
5a468d8
Remove dependecy
jingming Dec 12, 2015
3a58b52
Remove decode
jingming Dec 12, 2015
32211d6
Merge pull request #40 from twilio/remove-pyjwt
jingming Dec 12, 2015
0e9e095
Bump version
jingming Dec 12, 2015
ef47b18
IP Messaging public beta release
senthgit Dec 17, 2015
0f7b73c
Test resources
senthgit Dec 17, 2015
f6cf05a
Merge pull request #243 from twilio/ip-messaging-public-beta
senthgit Dec 17, 2015
ea14998
Bump version to 5.2.0 for releasing IP Messaging SDK
senthgit Dec 17, 2015
0cace2e
Supporting filter_friendly_name
wanjunsli Jan 12, 2016
3d79b57
Moving imports to beginning of init; removing excess blank lines
wanjunsli Jan 12, 2016
5500cba
Using only filters instead of workflow_rules; added check for friendl…
wanjunsli Jan 18, 2016
3c0b395
fixing indentations, fixed deletion of assertEqual
wanjunsli Jan 18, 2016
ee487ba
removing .iml file
wanjunsli Jan 18, 2016
79daa8d
Reverting all changes; parsing user input for filter_friendly_name an…
wanjunsli Jan 19, 2016
3bb6b3f
Reverting optional param
wanjunsli Jan 19, 2016
11266b0
remove unnecessary import
wanjunsli Jan 19, 2016
5715631
fixed blank line
wanjunsli Jan 19, 2016
cba4bfb
Checking for filter_friendly_name in TaskrouterConfig
wanjunsli Jan 20, 2016
1e7ec9c
Allow fetching Reservations under a Worker by default
jwitz10 Jan 21, 2016
32444e8
Update location of imports
jwitz10 Jan 22, 2016
8e7c696
Revert back to reservations_url
jwitz10 Jan 27, 2016
641e982
Merge pull request #247 from twilio/worker-reservations-fetch
jingming Jan 28, 2016
02dda06
Merge pull request #245 from wanjunsli/tr-filter-friendly-name
jingming Jan 28, 2016
bae3081
Bump to version 5.3.0
jingming Jan 28, 2016
4f1f67e
10000 Merge branch 'master' of https://github.com/twilio/twilio-python into…
jingming Jan 28, 2016
2eccd6a
Readd signing keys
jingming Jan 28, 2016
4763b91
Remove git marks
jingming Jan 28, 2016
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,11 @@ python:
- '3.2'
- '3.3'
- '3.4'
- '3.5'
install:
- pip install . --use-mirrors
- pip install -r requirements.txt --use-mirrors
- pip install -r tests/requirements.txt --use-mirrors
- pip install .
- pip install -r requirements.txt
- pip install -r tests/requirements.txt
script:
- flake8 --ignore=F401 twilio
- flake8 --ignore=E123,E126,E128,E501 tests
Expand Down
9 changes: 8 additions & 1 deletion CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,13 @@ Released November 25, 2015:

- Adds support for python 3.5.

Version 4.9.2
-------------

Released November 25, 2015:

- Fix for SIP Trunking bug

Version 5.0.1-edge
-------------

Expand Down Expand Up @@ -75,7 +82,7 @@ Released November 2, 2015:

- Add SMS pricing endpoint

Version 4.6.0-edge
Version 4.6.0
-------------

Released October 28, 2015:
Expand Down
1 change: 0 additions & 1 deletion tests/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
sphinx
httplib2==0.8
mock==0.8.0
nose
coverage
Expand Down
17 changes: 12 additions & 5 deletions tests/task_router/test_capability.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,29 +59,36 @@ def test_defaults(self):
)
expected = [
{
'url': 'https://taskrouter.twilio.com/v1/Workspaces/WS456/Activities',
'url': websocket_url,
'method': 'GET',
'allow': True,
'query_filter': {},
'post_filter': {},
},
{
'url': 'https://taskrouter.twilio.com/v1/Workspaces/{0}/Tasks/**'.format(self.workspace_sid),
'url': websocket_url,
'method': 'POST',
'allow': True,
'query_filter': {},
'post_filter': {},
},
{
'url': 'https://taskrouter.twilio.com/v1/Workspaces/WS456/Activities',
'method': 'GET',
'allow': True,
'query_filter': {},
'post_filter': {},
},
{
'url': websocket_url,
'url': 'https://taskrouter.twilio.com/v1/Workspaces/{0}/Tasks/**'.format(self.workspace_sid),
'method': 'GET',
'allow': True,
'query_filter': {},
'post_filter': {},
},
{
'url': websocket_url,
'method': 'POST',
'url': 'https://taskrouter.twilio.com/v1/Workspaces/{0}/Workers/{1}/Reservations/**'.format(self.workspace_sid, self.worker_sid),
'method': 'GET',
'allow': True,
'query_filter': {},
'post_filter': {},
Expand Down
28 changes: 15 additions & 13 deletions tests/task_router/test_task_router_capability.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,14 +72,15 @@ def test_worker_default(self):
self.check_decoded(decoded, account_sid, workspace_sid, worker_sid, worker_sid)

policies = decoded['policies']
self.assertEqual(len(policies), 5)
self.assertEqual(len(policies), 6)

for method, url, policy in [
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Activities", policies[0]),
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Tasks/**", policies[1]),
('GET', "https://taskrouter.twilio.com/v1/wschannels/AC123/WK789", policies[2]),
('POST', "https://event-bridge.twilio.com/v1/wschannels/AC123/WK789", policies[3]),
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Workers/WK789", policies[4])
('GET', "https://event-bridge.twilio.com/v1/wschannels/AC123/WK789", policies[0]),
('POST', "https://event-bridge.twilio.com/v1/wschannels/AC123/WK789", policies[1]),
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Workers/WK789", policies[2])
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Activities", policies[3]),
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Tasks/**", policies[4]),
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Workers/WK789/Reservations/**", policies[5])
]:
yield self.check_policy, method, url, policy

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

policies = decoded['policies']
self.assertEqual(len(policies), 5)
self.assertEqual(len(policies), 6)

# should expect 5 policies
# should expect 6 policies
for method, url, policy in [
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Activities", policies[0]),
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Tasks/**", policies[1]),
('GET', "https://event-bridge.twilio.com/v1/wschannels/AC123/WK789", policies[2]),
('POST', "https://event-bridge.twilio.com/v1/wschannels/AC123/WK789", policies[3]),
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Workers/WK789", policies[4])
('GET', "https://event-bridge.twilio.com/v1/wschannels/AC123/WK789", policies[0]),
('POST', "https://event-bridge.twilio.com/v1/wschannels/AC123/WK789", policies[1]),
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Activities", policies[2]),
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Tasks/**", policies[3]),
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Workers/WK789/Reservations/**", policies[4]),
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Workers/WK789", policies[5])
]:
yield self.check_policy, method, url, policy

Expand Down
27 changes: 15 additions & 12 deletions tests/task_router/test_task_router_worker_capability.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,17 +72,18 @@ def test_defaults(self):

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

# expect 5 policies
# expect 6 policies
policies = decoded['policies']
self.assertEqual(len(policies), 5)
self.assertEqual(len(policies), 6)

# should expect 5 policies
# should expect 6 policies
for method, url, policy in [
('GET', websocket_url, policies[0]),
('POST', websocket_url, policies[1]),
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Workers/WK789", policies[2]),
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Tasks/**", policies[3]),
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Activities", policies[4])
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Activities", policies[3])
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Tasks/**", policies[4]),
('GET', "https://taskrouter.twilio.com/v1/Workspaces/WS456/Workers/WK789/Reservations/**", policies[5])
]:
yield self.check_policy, method, url, policy

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

policies = decoded['policies']
self.assertEqual(len(policies), 6)
policy = policies[5]
self.assertEqual(len(policies), 7)
policy = policies[6]

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

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

policies = decoded['policies']
self.assertEqual(len(policies), 6)

policy = policies[5]
self.assertEqual(len(policies), 8)

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

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

if __name__ == "__main__":
unittest.main()
197 changes: 197 additions & 0 deletions tests/task_router/test_workflow_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,203 @@ def test_from_json2(self):
self.assertEqual(2, len(config.task_routing.filters))
self.assertEqual(4, len(config.task_routing.default_filter))

def test_from_json_with_filter_friendly_name(self):
7904 data = {
'task_routing':
{
'filters': [
{
'expression': 'type == "sales"',
'filter_friendly_name': 'Sales',
'targets': [
{

'queue': 'WQec62de0e1148b8477f2e24579779c8b1',
'expression': 'task.language IN worker.languages'
}
]
},
{
'expression': 'type == "marketing"',
'filter_friendly_name': 'Marketing',
'targets': [
{
'queue': 'WQ2acd4c1a41ffadce5d1bac9e1ce2fa9f',
'expression': 'task.language IN worker.languages'
}
]
},
{
'expression': 'type == "support"',
'filter_friendly_name': 'Support',
'targets': [
{
'queue': 'WQe5eb317eb23500ade45087ea6522896c',
'expression': 'task.language IN worker.languages'
}
]
}
],
'default_filter':
{
'queue': 'WQ05f810d2d130344fd56e3c91ece2e594'
}
}
}
# marshal object
config = WorkflowConfig.json2obj(json.dumps(data))
self.assertEqual(3, len(config.task_routing.filters))
self.assertEqual(1, len(config.task_routing.default_filter))

# check that the configuration was marshaled to "friendly_name" and not "filter_friendly_name"
expected_config_data = {
"task_routing":
{
"default_filter":
{
"queue": "WQ05f810d2d130344fd56e3c91ece2e594"
},
"filters": [
{
"expression": "type == \"sales\"",
"friendly_name": "Sales",
"targets": [
{
"expression": "task.language IN worker.languages",
"queue": "WQec62de0e1148b8477f2e24579779c8b1"
}
]
},
{
"expression": "type == \"marketing\"",
"friendly_name": "Marketing",
"targets": [
{
"expression": "task.language IN worker.languages",
"queue": "WQ2acd4c1a41ffadce5d1bac9e1ce2fa9f"
}
]
},
{
"expression": "type == \"support\"",
"friendly_name": "Support",
"targets": [
{
"expression": "task.language IN worker.languages",
"queue": "WQe5eb317eb23500ade45087ea6522896c"
}
]
}
]
}
}

expected_config_json = json.dumps(expected_config_data,
sort_keys=True,
indent=4)
# check that marshaling back stays as "friendly_name"
self.assertEqual(config.to_json(), expected_config_json)

def test_from_json_with_both_filter_and_friendly_name(self):
data = {
'task_routing':
{
'filters': [
{
'expression': 'type == "sales"',
'filter_friendly_name': "Sales",
'friendly_name': 'Sales2',
'targets': [
{

'queue': 'WQec62de0e1148b8477f2e24579779c8b1',
'expression': 'task.language IN worker.languages'
}
]
},
{
'expression': 'type == "marketing"',
'filter_friendly_name': 'Marketing',
'friendly_name': 'Marketing2',
'targets': [
{
'queue': 'WQ2acd4c1a41ffadce5d1bac9e1ce2fa9f',
'expression': 'task.language IN worker.languages'
}
]
},
{
'expression': 'type == "support"',
'filter_friendly_name': 'Support',
'friendly_name': 'Support2',
'targets': [
{
'queue': 'WQe5eb317eb23500ade45087ea6522896c',
'expression': 'task.language IN worker.languages'
}
]
}
],
'default_filter':
{
'queue': 'WQ05f810d2d130344fd56e3c91ece2e594'
}
}
}
# marshal object
config = WorkflowConfig.json2obj(json.dumps(data))
self.assertEqual(3, len(config.task_routing.filters))
self.assertEqual(1, len(config.task_routing.default_filter))

# check that the configuration was marshaled to "friendly_name" and not "filter_friendly_name"
expected_config_data = {
"task_routing":
{
"default_filter":
{
"queue": "WQ05f810d2d130344fd56e3c91ece2e594"
},
"filters": [
{
"expression": "type == \"sales\"",
"friendly_name": "Sales",
"targets": [
{
"expression": "task.language IN worker.languages",
"queue": "WQec62de0e1148b8477f2e24579779c8b1"
}
]
},
{
"expression": "type == \"marketing\"",
"friendly_name": "Marketing",
"targets": [
{
"expression": "task.language IN worker.languages",
"queue": "WQ2acd4c1a41ffadce5d1bac9e1ce2fa9f"
}
]
},
{
"expression": "type == \"support\"",
"friendly_name": "Support",
"targets": [
{
"expression": "task.language IN worker.languages",
"queue": "WQe5eb317eb23500ade45087ea6522896c"
}
]
}
]
}
}

expected_config_json = json.dumps(expected_config_data,
sort_keys=True,
indent=4)
# check that marshaling back stays as "friendly_name"
self.assertEqual(config.to_json(), expected_config_json)

def is_json(self, myjson):
try:
json.loads(myjson)
Expand Down
Loading
0