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

Skip to content

Commit e4c4154

Browse files
committed
Use requests library response.text (Unicode) instead of response.content (bytes), and add tests with Unicode strings
1 parent b9a0b1b commit e4c4154

File tree

7 files changed

+19
-16
lines changed

7 files changed

+19
-16
lines changed

tests/unit/http/test_http_client.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from requests import Session
1111

1212
from twilio.http.http_client import TwilioHttpClient
13+
from twilio.http.response import Response
1314

1415

1516
class TestHttpClientRequest(unittest.TestCase):
@@ -21,7 +22,7 @@ def setUp(self):
2122
self.request_mock = Mock()
2223

2324
self.session_mock.prepare_request.return_value = self.request_mock
24-
self.session_mock.send.return_value = Mock(status_code=200, content=six.u('testing-unicodeΩ≈ç√'))
25+
self.session_mock.send.return_value = Response(200, 'testing-unicode: Ω≈ç√, 💩')
2526
self.request_mock.headers = {}
2627

2728
session_constructor_mock = self.session_patcher.start()
@@ -48,4 +49,4 @@ def test_request_with_unicode_response(self):
4849

4950
self.assertEqual('other.twilio.com', self.request_mock.headers['Host'])
5051
self.assertEqual(200, response.status_code)
51-
self.assertEqual(six.u('testing-unicodeΩ≈ç√'), response.content)
52+
self.assertEqual('testing-unicode: Ω≈ç√, 💩', response.content)

tests/unit/http/test_validation_client.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
# -*- coding: utf-8 -*-
22

3-
import six
4-
53
import unittest
64

75
import mock
@@ -10,6 +8,7 @@
108
from requests import Session
119

1210
from twilio.http.validation_client import ValidationClient
11+
from twilio.http.response import Response
1312

1413

1514
class TestValidationClientHelpers(unittest.TestCase):
@@ -80,7 +79,7 @@ def setUp(self):
8079
self.request_mock = Mock()
8180

8281
self.session_mock.prepare_request.return_value = self.request_mock
83-
self.session_mock.send.return_value = Mock(status_code=200, content=six.u('testΩ'))
82+
self.session_mock.send.return_value = Response(200, 'test, omega: Ω, pile of poop: 💩')
8483
self.validation_token.return_value.to_jwt.return_value = 'test-token'
8584
self.request_mock.headers = {}
8685

@@ -119,4 +118,4 @@ def test_request_with_unicode_response(self):
119118
self.assertEqual('other.twilio.com', self.request_mock.headers['Host'])
120119
self.assertEqual('test-token', self.request_mock.headers['Twilio-Client-Validation'])
121120
self.assertEqual(200, response.status_code)
122-
self.assertEqual(six.u('testΩ'), response.content)
121+
self.assertEqual('test, omega: Ω, pile of poop: 💩', response.content)

twilio/base/page.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ def process_response(self, response):
5858
if response.status_code != 200:
5959
raise TwilioException('Unable to fetch page', response)
6060

61-
return json.loads(response.content)
61+
return json.loads(response.text)
6262

6363
def load_page(self, payload):
6464
"""

twilio/base/version.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ def exception(cls, method, uri, response, message):
5454
"""
5555
# noinspection PyBroadException
5656
try:
57-
error_payload = json.loads(response.content)
57+
error_payload = json.loads(response.text)
5858
if 'message' in error_payload:
5959
message = '{}: {}'.format(message, error_payload['message'])
6060
code = error_payload.get('code', response.status_code)
@@ -81,7 +81,7 @@ def fetch(self, method, uri, params=None, data=None, headers=None, auth=None, ti
8181
if response.status_code < 200 or response.status_code >= 300:
8282
raise self.exception(method, uri, response, 'Unable to fetch record')
8383

84-
return json.loads(response.content)
84+
return json.loads(response.text)
8585

8686
def update(self, method, uri, params=None, data=None, headers=None, auth=None, timeout=None,
8787
allow_redirects=False):
@@ -102,7 +102,7 @@ def update(self, method, uri, params=None, data=None, headers=None, auth=None, t
102102
if response.status_code < 200 or response.status_code >= 300:
103103
raise self.exception(method, uri, response, 'Unable to update record')
104104

105-
return json.loads(response.content)
105+
return json.loads(response.text)
106106

107107
def delete(self, method, uri, params=None, data=None, headers=None, auth=None, timeout=None,
108108
allow_redirects=False):
@@ -208,5 +208,4 @@ def create(self, method, uri, params=None, data=None, headers=None, auth=None, t
208208
if response.status_code < 200 or response.status_code >= 300:
209209
raise self.exception(method, uri, response, 'Unable to create record')
210210

211-
return json.loads(response.content)
212-
211+
return json.loads(response.text)

twilio/http/http_client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,4 @@ def request(self, method, url, params=None, data=None, headers=None, auth=None,
3838
timeout=timeout,
3939
)
4040

41-
return Response(int(response.status_code), response.content)
41+
return Response(int(response.status_code), response.text)

twilio/http/response.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,15 @@ class Response(object):
22
"""
33
44
"""
5-
def __init__(self, status_code, content):
6-
self.content = content
5+
def __init__(self, status_code, text):
6+
self.content = text
77
self.cached = False
88
self.status_code = status_code
99
self.ok = self.status_code < 400
1010

11+
@property
12+
def text(self):
13+
return self.content
14+
1115
def __repr__(self):
1216
return 'HTTP {} {}'.format(self.status_code, self.content)

twilio/http/validation_client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ def request(self, method, url, params=None, data=None, headers=None, auth=None,
6969
timeout=timeout,
7070
)
7171

72-
return Response(int(response.status_code), response.content)
72+
return Response(int(response.status_code), response.text)
7373

7474
def _build_validation_payload(self, request):
7575
"""

0 commit comments

Comments
 (0)