8000 Merge pull request #34 from twilio/sip-trunking · twilio/twilio-python@366c029 · GitHub
[go: up one dir, main page]

Skip to content

Commit 366c029

Browse files
committed
Merge pull request #34 from twilio/sip-trunking
Sip Trunking SDK
1 parent 8dbfa80 commit 366c029

26 files changed

+1419
-4
lines changed

CHANGES.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,18 @@ twilio-python Changelog
33

44
Here you can see the full list of changes between each twilio-python release.
55

6-
Version 4.8.0-edge
6+
Version 4.9.0
77
-------------
88

9-
Released November 22, 2015:
9+
Released November 3, 2015:
10+
11+
- Add SIP Trunking endpoint
12+
13+
14+
Version 4.8.0
15+
-------------
16+
17+
Released November 2, 2015:
1018

1119
- Add SMS pricing endpoint
1220

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"sid": "CLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
3+
"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
4+
"trunk_sid" : "TK11111111111111111111111111111111",
5+
"friendly_name": "Test",
6+
"date_created": "2015-01-02T11:23:45Z",
7+
"date_updated": "2015-01-02T11:23:45Z",
8+
"url": "https://trunking.twilio.com/v1/Trunks/TK11111111111111111111111111111111/CredentialLists/CLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
9+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"meta": {
3+
"page": 0,
4+
"page_size": 50,
5+
"first_page_url": "https://trunking.twilio.com/v1/Trunks/TK11111111111111111111111111111111/Credenti F438 alLists?PageSize=50&Page=0",
6+
"previous_page_url": null,
7+
"url": "https://trunking.twilio.com/v1/Trunks/TK11111111111111111111111111111111/CredentialLists?PageSize=50&Page=0",
8+
"next_page_url": null,
9+
"key": "credential_lists"
10+
},
11+
"credential_lists": [
12+
{
13+
"sid": "CLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
14+
"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
15+
"trunk_sid": "TK11111111111111111111111111111111",
16+
"friendly_name": "Test list",
17+
"date_created": "2015-05-14T21:00:12Z",
18+
"date_updated": "2015-05-14T21:00:12Z",
19+
"url": "https://trunking.twilio.com/v1/Trunks/TK11111111111111111111111111111111/CredentialLists/CLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
20+
}
21+
]
22+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"sid": "ALaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
3+
"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
4+
"trunk_sid": "TK11111111111111111111111111111111",
5+
"friendly_name": "Test",
6+
"date_created": "2014-10-30T23:59:12Z",
7+
"date_updated": "2014-10-30T23:59:12Z",
8+
"url": "https://trunking.twilio.com/v1/Trunks/TK11111111111111111111111111111111/IpAccessControlLists/ALaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
9+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"ip_access_control_lists": [
3+
{
4+
"sid": "ALaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
5+
"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
6+
"trunk_sid": "TK11111111111111111111111111111111",
7+
"friendly_name": "Test",
8+
"date_created": "2014-10-30T23:59:12Z",
9+
"date_updated": "2014-10-30T23:59:12Z",
10+
"url": "https://trunking.twilio.com/v1/Trunks/TK11111111111111111111111111111111/IpAccessControlLists/ALaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
11+
}
12+
],
13+
"meta": {
14+
"page": 0,
15+
"page_size": 50,
16+
"first_page_url": "https://trunking.twilio.com/v1/Trunks/TK11111111111111111111111111111111/IpAccessControlLists?PageSize=50&Page=0",
17+
"previous_page_url": null,
18+
"url": "https://trunking.twilio.com/v1/Trunks/TK11111111111111111111111111111111/IpAccessControlLists?PageSize=50&Page=0",
19+
"next_page_url": null,
20+
"key": "ip_access_control_lists"
21+
}
22+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"sid": "OUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
3+
"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
4+
"trunk_sid": "TK11111111111111111111111111111111",
5+
"weight": 10,
6+
"enabled": true,
7+
"sip_url": "sip:169.10.1.35",
8+
"friendly_name": "Name",
9+
"priority": 20,
10+
"date_created": "2015-09-02T23:15:56Z",
11+
"date_updated": "2015-09-02T23:15:56Z",
12+
"url": "https://trunking.twilio.com/v1/Trunks/TK11111111111111111111111111111111/OriginationUrls/OUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
13+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"meta": {
3+
"page": 0,
4+
"page_size": 50,
5+
"first_page_url": "https://trunking.twilio.com/v1/Trunks/TK11111111111111111111111111111111/OriginationUrls?PageSize=50&Page=0",
6+
"previous_page_url": null,
7+
"url": "https://trunking.twilio.com/v1/Trunks/TK11111111111111111111111111111111/OriginationUrls?PageSize=50&Page=0",
8+
"next_page_url": null,
9+
"key": "origination_urls"
10+
},
11+
"origination_urls": [
12+
{
13+
"sid": "OUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
14+
"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
15+
"trunk_sid": "TK11111111111111111111111111111111",
16+
"weight": 10,
17+
"enabled": true,
18+
"sip_url": "sip:169.10.1.35",
19+
"friendly_name": "Name",
20+
"priority": 20,
21+
"date_created": "2015-09-02T23:15:56Z",
22+
"date_updated": "2015-09-02T23:15:56Z",
23+
"url": "https://trunking.twilio.com/v1/Trunks/TK11111111111111111111111111111111/OriginationUrls/OUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
24+
}
25+
]
26+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
{
2+
"sid": "PNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
3+
"date_created": "2014-10-07T13:37:19Z",
4+
"date_updated": "2015-09-02T16:27:22Z",
5+
"friendly_name": "Name",
6+
"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
7+
"phone_number": "+14158675309",
8+
"api_version": "2010-04-01",
9+
"voice_caller_id_lookup": false,
10+
"voice_url": null,
11+
"voice_method": null,
12+
"voice_fallback_url": "",
13+
"voice_fallback_method": "POST",
14+
"status_callback": "",
15+
"status_callback_method": "POST",
16+
"voice_application_sid": null,
17+
"trunk_sid": "TK11111111111111111111111111111111",
18+
"sms_url": "https://demo.twilio.com/welcome/sms/reply/",
19+
"sms_method": "POST",
20+
"sms_fallback_url": "",
21+
"sms_fallback_method": "POST",
22+
"sms_application_sid": "",
23+
"address_requirements": "none",
24+
"beta": false,
25+
"url": "https://trunking.twilio.com/v1/Trunks/TK11111111111111111111111111111111/PhoneNumbers/PNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
26+
"capabilities": {
27+
"voice": true,
28+
"sms": true,
29+
"mms": true
30+
},
31+
"links": {
32+
"phone_number": "https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/IncomingPhoneNumbers/PNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
33+
}
34+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
{
2+
"phone_numbers": [
3+
{
4+
"sid": "PNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
5+
"date_created": "2014-10-07T13:37:19Z",
6+
"date_updated": "2015-09-02T16:27:22Z",
7+
"friendly_name": "Name",
8+
"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
9+
"phone_number": "+14158675309",
10+
"api_version": "2010-04-01",
11+
"voice_caller_id_lookup": false,
12+
"voice_url": null,
13+
"voice_method": null,
14+
"voice_fallback_url": "",
15+
"voice_fallback_method": "POST",
16+
"status_callback": "",
17+
"status_callback_method": "POST",
18+
"voice_application_sid": null,
19+
"trunk_sid": "TK11111111111111111111111111111111",
20+
"sms_url": "https://demo.twilio.com/welcome/sms/reply/",
21+
"sms_method": "POST",
22+
"sms_fallback_url": "",
23+
"sms_fallback_method": "POST",
24+
"sms_application_sid": "",
25+
"address_requirements": "none",
26+
"beta": false,
27+
"url": "https://trunking.twilio.com/v1/Trunks/TK11111111111111111111111111111111/PhoneNumbers/PNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
28+
"capabilities": {
29+
"voice": true,
30+
"sms": true,
31+
"mms": true
32+
},
33+
"links": {
34+
"phone_number": "https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/IncomingPhoneNumbers/PNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
35+
}
36+
}
37+
],
38+
"meta": {
39+
"page": 0,
40+
"page_size": 50,
41+
"first_page_url": "https://trunking.twilio.com/v1/Trunks/TK11111111111111111111111111111111/PhoneNumbers?PageSize=50&Page=0",
42+
"previous_page_url": null,
43+
"url": "https://trunking.twilio.com/v1/Trunks/TK11111111111111111111111111111111/PhoneNumbers?PageSize=50&Page=0",
44+
"next_page_url": null,
45+
"key": "phone_numbers"
46+
}
47+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"sid": "TK11111111111111111111111111111111",
3+
"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
4+
"domain_name": "test-trunk.pstn.twilio.com",
5+
"disaster_recovery_method": null,
6+
"disaster_recovery_url": null,
7+
"friendly_name": "Test",
8+
"secure": false,
9+
"recording": {
10+
"trim": "do-not-trim",
11+
"mode": "record-from-ringing"
12+
},
13+
"auth_type": "CREDENTIAL_LIST",
14+
"auth_type_set": [
15+
"CREDENTIAL_LIST"
16+
],
17+
"date_created": "2015-05-05T20:59:07Z",
18+
"date_updated": "2015-05-05T22:44:23Z",
19+
"url": "https://trunking.twilio.com/v1/Trunks/TK11111111111111111111111111111111",
20+
"links": {
21+
"origination_urls": "https://trunking.twilio.com/v1/Trunks/TK11111111111111111111111111111111/OriginationUrls",
22+
"credential_lists": "https://trunking.twilio.com/v1/Trunks/TK11111111111111111111111111111111/CredentialLists",
23+
"ip_access_control_lists": "https://trunking.twilio.com/v1/Trunks/TK11111111111111111111111111111111/IpAccessControlLists",
24+
"phone_numbers": "https://trunking.twilio.com/v1/Trunks/TK11111111111111111111111111111111/PhoneNumbers"
25+
}
26+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
{
2+
"trunks": [
3+
{
4+
"sid": "TK11111111111111111111111111111111",
5+
"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
6+
"domain_name": "test-trunk.pstn.twilio.com",
7+
"disaster_recovery_method": null,
8+
"disaster_recovery_url": null,
9+
"friendly_name": "Test",
10+
"secure": false,
11+
"recording": {
12+
"trim": "do-not-trim",
13+
"mode": "record-from-ringing"
14+
},
15+
"auth_type": "CREDENTIAL_LIST",
16+
"auth_type_set": [
17+
"CREDENTIAL_LIST"
18+
],
19+
"date_created": "2015-05-05T20:59:07Z",
20+
"date_updated": "2015-05-05T22:44:23Z",
21+
"url": "https://trunking.twilio.com/v1/Trunks/TK11111111111111111111111111111111",
22+
"links": {
23+
"origination_urls": "https://trunking.twilio.com/v1/Trunks/TK11111111111111111111111111111111/OriginationUrls",
24+
"credential_lists": "https://trunking.twilio.com/v1/Trunks/TK11111111111111111111111111111111/CredentialLists",
25+
"ip_access_control_lists": "https://trunking.twilio.com/v1/Trunks/TK11111111111111111111111111111111/IpAccessControlLists",
26+
"phone_numbers": "https://trunking.twilio.com/v1/Trunks/TK11111111111111111111111111111111/PhoneNumbers"
27+
}
28+
}
29+
],
30+
"meta": {
31+
"page": 0,
32+
"page_size": 50,
33+
"first_page_url": "https://trunking.twilio.com/v1/Trunks?PageSize=50&Page=0",
34+
"previous_page_url": null,
35+
"url": "https://trunking.twilio.com/v1/Trunks?PageSize=50&Page=0",
36+
"next_page_url": null,
37+
"key": "trunks"
38+
}
39+
}
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
import unittest
2+
from mock import Mock, patch
3+
from nose.tools import assert_equal, assert_true
4+
from tests.tools import create_mock_json
5+
from twilio.rest.resources.trunking.credential_lists import CredentialLists
6+
7+
ACCOUNT_SID = "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
8+
AUTH = (ACCOUNT_SID, "auth_token")
9+
BASE_URI = "https://trunking.twilio.com/v1/Trunks/TK11111111111111111111111111111111"
10+
11+
12+
class CredentialListsTest(unittest.TestCase):
13+
14+
@patch('twilio.rest.resources.base.make_twilio_request')
15+
def test_get_credential_lists(self, request):
16+
resp = create_mock_json('tests/resources/trunking/credential_lists_list.json')
17+
resp.status_code = 200
18+
request.return_value = resp
19+
20+
credential_lists = CredentialLists(BASE_URI, AUTH)
21+
result = credential_lists.list()
22+
23+
assert_equal(len(result), 1)
24+
assert_equal(result[0].sid, 'CLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')
25+
assert_equal(result[0].account_sid, 'ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')
26+
assert_equal(result[0].trunk_sid, "TK11111111111111111111111111111111")
27+
assert_equal(result[0].friendly_name, "Test list")
28+
assert_equal(result[0].url, "{0}/CredentialLists/CLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa".format(BASE_URI))
29+
30+
request.assert_called_with(
31+
"GET",
32+
"{0}/CredentialLists".format(BASE_URI),
33+
auth=AUTH,
34+
params={},
35+
use_json_extension=False,
36+
)
37+
38+
@patch('twilio.rest.resources.base.make_twilio_request')
39+
def test_get_credential_lists_instance(self, request):
40+
resp = create_mock_json('tests/resources/trunking/credential_lists_instance.json')
41+
resp.status_code = 200
42+
request.return_value = resp
43+
44+
credential_lists = CredentialLists(BASE_URI, AUTH)
45+
result = credential_lists.get('CLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')
46+
47+
assert_equal(result.sid, "CLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
48+
assert_equal(result.account_sid, "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
49+
assert_equal(result.trunk_sid, "TK11111111111111111111111111111111")
50+
assert_equal(result.friendly_name, "Test")
51+
assert_equal(result.url, "{0}/CredentialLists/CLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa".format(BASE_URI))
52+
53+
request.assert_called_with(
54+
"GET",
55+
"{0}/CredentialLists/CLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa".format(BASE_URI),
56+
auth=AUTH,
57+
use_json_extension=False
58+
)
59+
60+
@patch('twilio.rest.resources.base.make_twilio_request')
61+
def test_create_credential_lists_instance(self, request):
62+
resp = create_mock_json('tests/resources/trunking/credential_lists_instance.json')
63+
resp.status_code = 201
64+
request.return_value = resp
65+
66+
credential_lists = CredentialLists(BASE_URI, AUTH)
67+
result = credential_lists.create('CLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')
68+
69+
assert_equal(result.sid, "CLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
70+
assert_equal(result.account_sid, "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
71+
assert_equal(result.trunk_sid, "TK11111111111111111111111111111111")
72+
assert_equal(result.friendly_name, "Test")
73+
assert_equal(result.url, "{0}/CredentialLists/CLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa".format(BASE_URI))
74+
75+
data_dict = dict()
76+
data_dict['CredentialListSid'] = 'CLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
77+
request.assert_called_with(
78+
"POST",
79+
"{0}/CredentialLists".format(BASE_URI),
80+
auth=AUTH,
81+
use_json_extension=False,
82+
data=data_dict,
83+
)
84+
85+
@patch('twilio.rest.resources.base.make_twilio_request')
86+
def test_delete_credential_lists_instance(self, request):
87+
resp = Mock()
88+
resp.status_code = 204
89+
request.return_value = resp
90+
91+
credential_lists = CredentialLists(BASE_URI, AUTH)
92+
result = credential_lists.delete('CLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')
93+
94+
assert_true(result)
95+
96+
request.assert_called_with(
97+
"DELETE",
98+
"{0}/CredentialLists/CLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa".format(BASE_URI),
99+
auth=AUTH,
100+
use_json_extension=False
101+
)

0 commit comments

Comments
 (0)
0