Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 78d4b38

Browse files
author
matt
committed
More comprehensive integration test suite
The suite has revealed various deficiencies in that are also addressed in this commit - Semantic date_time arguments were not being serialized appropriately - Serializers did not test the values.unset case - delete() resulting in a 5xx error code should raise an exception - tests.integrtion.holodeck.Request is more broadly useful, moved to twilio.rest.http.request.Request - Integration tests revealed various errors in the construction of some resources, these have been repaired.
1 parent a769048 commit 78d4b38

File tree

91 files changed

+1686
-150
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

91 files changed

+1686
-150
lines changed

tests/integration/api/v2010/account/address/test_dependent_phone_number.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,5 @@ def test_read_request(self):
2424

2525
self.holodeck.assert_has_request(Request(
2626
'get',
27-
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Addresses/ADaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/DependentPhoneNumbers.json'
27+
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Addresses/ADaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/DependentPhoneNumbers.json',
2828
))

tests/integration/api/v2010/account/available_phone_number/test_local.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,5 @@ def test_read_request(self):
2424

2525
self.holodeck.assert_has_request(Request(
2626
'get',
27-
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/AvailablePhoneNumbers/US/Local.json'
27+
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/AvailablePhoneNumbers/US/Local.json',
2828
))

tests/integration/api/v2010/account/available_phone_number/test_mobile.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,5 @@ def test_read_request(self):
2424

2525
self.holodeck.assert_has_request(Request(
2626
'get',
27-
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/AvailablePhoneNumbers/US/Mobile.json'
27+
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/AvailablePhoneNumbers/US/Mobile.json',
2828
))

tests/integration/api/v2010/account/available_phone_number/test_toll_free.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,5 @@ def test_read_request(self):
2424

2525
self.holodeck.assert_has_request(Request(
2626
'get',
27-
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/AvailablePhoneNumbers/US/TollFree.json'
27+
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/AvailablePhoneNumbers/US/TollFree.json',
2828
))

tests/integration/api/v2010/account/call/test_feedback.py

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,24 @@
1414

1515
class FeedbackTestCase(IntegrationTestCase):
1616

17+
def test_create_request(self):
18+
self.holodeck.mock(Response(500, ''))
19+
20+
with self.assertRaises(TwilioException):
21+
self.twilio.api.v2010.accounts(sid="ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") \
22+
.calls(sid="CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") \
23+
.feedback().create(quality_score=1)
24+
25+
values = {
26+
'QualityScore': 1,
27+
}
28+
29+
self.holodeck.assert_has_request(Request(
30+
'post',
31+
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Feedback.json',
32+
data=values,
33+
))
34+
1735
def test_fetch_request(self):
1836
self.holodeck.mock(Response(500, ''))
1937

@@ -24,5 +42,23 @@ def test_fetch_request(self):
2442

2543
self.holodeck.assert_has_request(Request(
2644
'get',
27-
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Feedback.json'
45+
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Feedback.json',
46+
))
47+
48+
def test_update_request(self):
49+
self.holodeck.mock(Response(500, ''))
50+
51+
with self.assertRaises(TwilioException):
52+
self.twilio.api.v2010.accounts(sid="ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") \
53+
.calls(sid="CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") \
54+
.feedback().update(quality_score=1)
55+
56+
values = {
57+
'QualityScore': 1,
58+
}
59+
60+
self.holodeck.assert_has_request(Request(
61+
'post',
62+
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Feedback.json',
63+
data=values,
2864
))

tests/integration/api/v2010/account/call/test_feedback_summary.py

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,35 @@
66
/ /
77
"""
88

9+
from datetime import date
910
from tests.integration import IntegrationTestCase
1011
from tests.integration.holodeck import Request
1112
from twilio.exceptions import TwilioException
1213
from twilio.http.response import Response
14+
from twilio.rest import serialize
1315

1416

1517
class FeedbackSummaryTestCase(IntegrationTestCase):
1618

19+
def test_create_request(self):
20+
self.holodeck.mock(Response(500, ''))
21+
22+
with self.assertRaises(TwilioException):
23+
self.twilio.api.v2010.accounts(sid="ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") \
24+
.calls \
25+
.feedback_summaries.create(start_date=date(2008, 1, 2), end_date=date(2008, 1, 2))
26+
27+
values = {
28+
'StartDate': serialize.iso8601_date(date(2008, 1, 2)),
29+
'EndDate': serialize.iso8601_date(date(2008, 1, 2)),
30+
}
31+
32+
self.holodeck.assert_has_request(Request(
33+
'post',
34+
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/FeedbackSummary.json',
35+
data=values,
36+
))
37+
1738
def test_fetch_request(self):
1839
self.holodeck.mock(Response(500, ''))
1940

@@ -24,5 +45,18 @@ def test_fetch_request(self):
2445

2546
self.holodeck.assert_has_request(Request(
2647
'get',
27-
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/FeedbackSummary/FSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json'
48+
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/FeedbackSummary/FSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json',
49+
))
50+
51+
def test_delete_request(self):
52+
self.holodeck.mock(Response(500, ''))
53+
54+
with self.assertRaises(TwilioException):
55+
self.twilio.api.v2010.accounts(sid="ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") \
56+
.calls \
57+
.feedback_summaries(sid="FSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa").delete()
58+
59+
self.holodeck.assert_has_request(Request(
60+
'delete',
61+
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/FeedbackSummary/FSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json',
2862
))

tests/integration/api/v2010/account/call/test_notification.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,20 @@ def test_fetch_request(self):
2424

2525
self.holodeck.assert_has_request(Request(
2626
'get',
27-
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Notifications/NOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json'
27+
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Notifications/NOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json',
28+
))
29+
30+
def test_delete_request(self):
31+
self.holodeck.mock(Response(500, ''))
32+
33+
with self.assertRaises(TwilioException):
34+
self.twilio.api.v2010.accounts(sid="ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") \
35+
.calls(sid="CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") \
36+
.notifications(sid="NOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa").delete()
37+
38+
self.holodeck.assert_has_request(Request(
39+
'delete',
40+
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Notifications/NOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json',
2841
))
2942

3043
def test_read_request(self):
@@ -37,5 +50,5 @@ def test_read_request(self):
3750

3851
self.holodeck.assert_has_request(Request(
3952
'get',
40-
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Notifications.json'
53+
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Notifications.json',
4154
))

tests/integration/api/v2010/account/call/test_recording.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,20 @@ def test_fetch_request(self):
2424

2525
self.holodeck.assert_has_request(Request(
2626
'get',
27-
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Recordings/REaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json'
27+
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Recordings/REaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json',
28+
))
29+
30+
def test_delete_request(self):
31+
self.holodeck.mock(Response(500, ''))
32+
33+
with self.assertRaises(TwilioException):
34+
self.twilio.api.v2010.accounts(sid="ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") \
35+
.calls(sid="CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") \
36+
.recordings(sid="REaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa").delete()
37+
38+
self.holodeck.assert_has_request(Request(
39+
'delete',
40+
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Recordings/REaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json',
2841
))
2942

3043
def test_read_request(self):
@@ -37,5 +50,5 @@ def test_read_request(self):
3750

3851
self.holodeck.assert_has_request(Request(
3952
'get',
40-
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Recordings.json'
53+
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Recordings.json',
4154
))

tests/integration/api/v2010/account/conference/test_participant.py

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,38 @@ def test_fetch_request(self):
2424

2525
self.holodeck.assert_has_request(Request(
2626
'get',
27-
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Conferences/CFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Participants/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json'
27+
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Conferences/CFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Participants/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json',
28+
))
29+
30+
def test_update_request(self):
31+
self.holodeck.mock(Response(500, ''))
32+
33+
with self.assertRaises(TwilioException):
34+
self.twilio.api.v2010.accounts(sid="ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") \
35+
.conferences(sid="CFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") \
36+
.participants(call_sid="CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa").update(muted=True)
37+
38+
values = {
39+
'Muted': True,
40+
}
41+
42+
self.holodeck.assert_has_request(Request(
43+
'post',
44+
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Conferences/CFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Participants/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json',
45+
data=values,
46+
))
47+
48+
def test_delete_request(self):
49+
self.holodeck.mock(Response(500, ''))
50+
51+
with self.assertRaises(TwilioException):
52+
self.twilio.api.v2010.accounts(sid="ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") \
53+
.conferences(sid="CFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") \
54+
.participants(call_sid="CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa").delete()
55+
56+
self.holodeck.assert_has_request(Request(
57+
'delete',
58+
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Conferences/CFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Participants/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json',
2859
))
2960

3061
def test_read_request(self):
@@ -37,5 +68,5 @@ def test_read_request(self):
3768

3869
self.holodeck.assert_has_request(Request(
3970
'get',
40-
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Conferences/CFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Participants.json'
71+
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Conferences/CFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Participants.json',
4172
))

tests/integration/api/v2010/account/incoming_phone_number/test_local.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,24 @@ def test_read_request(self):
2424

2525
self.holodeck.assert_has_request(Request(
2626
'get',
27-
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/IncomingPhoneNumbers/Local.json'
27+
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/IncomingPhoneNumbers/Local.json',
28+
))
29+
30+
def test_create_request(self):
31+
self.holodeck.mock(Response(500, ''))
32+
33+
with self.assertRaises(TwilioException):
34+
self.twilio.api.v2010.accounts(sid="ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") \
35+
.incoming_phone_numbers \
36+
.local.create(area_code="area_code", phone_number="+987654321")
37+
38+
values = {
39+
'AreaCode': "area_code",
40+
'PhoneNumber': "+987654321",
41+
}
42+
43+
self.holodeck.assert_has_request(Request(
44+
'post',
45+
'https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/IncomingPhoneNumbers/Local.json',
46+
data=values,
2847
))

0 commit comments

Comments
 (0)