8000 validation_client now supports unicode in both Python 2 and Python 3.… · twilio/twilio-python@d833182 · GitHub
[go: up one dir, main page]

Skip to content

Commit d833182

Browse files
committed
validation_client now supports unicode in both Python 2 and Python 3. http_client was converted as well and now has tests.
1 parent fb43f65 commit d833182

File tree

4 files changed

+70
-5
lines changed

4 files changed

+70
-5
lines changed

tests/unit/http/test_http_client.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# -*- coding: utf-8 -*-
2+
3+
import six
4+
5+
import unittest
6+
7+
import mock
8+
from mock import patch, Mock
9+
from requests import Request
10+
from requests import Session
11+
12+
from twilio.http.http_client import TwilioHttpClient
13+
14+
15+
class TestHttpClientRequest(unittest.TestCase):
16+
17+
def setUp(self):
18+
self.session_patcher = patch('twilio.http.http_client.Session')
19+
20+
self.session_mock = Mock(wraps=Session())
21+
self.request_mock = Mock()
22+
23+
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.request_mock.headers = {}
26+
27+
session_constructor_mock = self.session_patcher.start()
28+
session_constructor_mock.return_value = self.session_mock
29+
30+
self.client = TwilioHttpClient()
31+
32+
def tearDown(self):
33+
self.session_patcher.stop()
34+
35+
def test_request_sets_host_header_if_missing(self):
36+
self.request_mock.url = 'https://api.twilio.com/'
37+
self.request_mock.headers = {'Host': 'other.twilio.com'}
38+
39+
self.client.request('doesnt matter', 'doesnt matter')
40+
41+
self.assertEqual('other.twilio.com', self.request_mock.headers['Host'])
42+
43+
def test_request_with_unicode_response(self):
44+
self.request_mock.url = 'https://api.twilio.com/'
45+
self.request_mock.headers = {'Host': 'other.twilio.com'}
46+
47+
response = self.client.request('doesnt matter', 'doesnt matter')
48+
49+
self.assertEqual('other.twilio.com', self.request_mock.headers['Host'])
50+
self.assertEqual(200, response.status_code)
51+
self.assertEqual(six.u('testing-unicodeΩ≈ç√'), response.content)

tests/unit/http/test_validation_client.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
# -*- coding: utf-8 -*-
2+
3+
import six
4+
15
import unittest
26

37
import mock
@@ -76,7 +80,7 @@ def setUp(self):
7680
self.request_mock = Mock()
7781

7882
self.session_mock.prepare_request.return_value = self.request_mock
79-
self.session_mock.send.return_value = Mock(status_code=200, content='test')
83+
self.session_mock.send.return_value = Mock(status_code=200, content=six.u('testΩ'))
8084
self.validation_token.return_value.to_jwt.return_value = 'test-token'
8185
self.request_mock.headers = {}
8286

@@ -105,3 +109,14 @@ def test_request_sets_host_header_if_missing(self):
105109

106110
self.assertEqual('other.twilio.com', self.request_mock.headers['Host'])
107111
self.assertEqual('test-token', self.request_mock.headers['Twilio-Client-Validation'])
112+
113+
def test_request_with_unicode_response(self):
114+
self.request_mock.url = 'https://api.twilio.com/'
115+
self.request_mock.headers = {'Host': 'other.twilio.com'}
116+
117+
response = self.client.request('doesnt matter', 'doesnt matter')
118+
119+
self.assertEqual('other.twilio.com', self.request_mock.headers['Host'])
120+
self.assertEqual('test-token', self.request_mock.headers['Twilio-Client-Validation'])
121+
self.assertEqual(200, response.status_code)
122+
self.assertEqual(six.u('testΩ'), response.content)

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.decode('utf-8'))
41+
return Response(int(response.status_code), response.content)

twilio/http/validation_client.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
from urllib.parse import urlparse
2-
31
from collections import namedtuple
42

53
from requests import Request, Session
64

5+
from twilio.compat import urlparse
76
from twilio.http import HttpClient, get_cert_file
87
from twilio.http.response import Response
98
from twilio.jwt.validation import ClientValidationJwt
@@ -70,7 +69,7 @@ def request(self, method, url, params=None, data=None, headers=None, auth=None,
7069
timeout=timeout,
7170
)
7271

73-
return Response(int(response.status_code), response.content.decode('utf-8'))
72+
return Response(int(response.status_code), response.content)
7473

7574
def _build_validation_payload(self, request):
7675
"""

0 commit comments

Comments
 (0)
0