diff options
Diffstat (limited to 'tests/test_transport.py')
-rw-r--r-- | tests/test_transport.py | 67 |
1 files changed, 59 insertions, 8 deletions
diff --git a/tests/test_transport.py b/tests/test_transport.py index e9782a8..2884200 100644 --- a/tests/test_transport.py +++ b/tests/test_transport.py @@ -12,15 +12,17 @@ # See the License for the specific language governing permissions and # limitations under the License. +import unittest + import httplib2 import mock -import unittest2 from oauth2client import client from oauth2client import transport +from tests import http_mock -class TestMemoryCache(unittest2.TestCase): +class TestMemoryCache(unittest.TestCase): def test_get_set_delete(self): cache = transport.MemoryCache() @@ -32,7 +34,7 @@ class TestMemoryCache(unittest2.TestCase): self.assertIsNone(cache.get('foo')) -class Test_get_cached_http(unittest2.TestCase): +class Test_get_cached_http(unittest.TestCase): def test_global(self): cached_http = transport.get_cached_http() @@ -46,15 +48,22 @@ class Test_get_cached_http(unittest2.TestCase): self.assertIs(result, cache) -class Test_get_http_object(unittest2.TestCase): +class Test_get_http_object(unittest.TestCase): @mock.patch.object(httplib2, 'Http', return_value=object()) def test_it(self, http_klass): result = transport.get_http_object() self.assertEqual(result, http_klass.return_value) + http_klass.assert_called_once_with() + + @mock.patch.object(httplib2, 'Http', return_value=object()) + def test_with_args(self, http_klass): + result = transport.get_http_object(1, 2, foo='bar') + self.assertEqual(result, http_klass.return_value) + http_klass.assert_called_once_with(1, 2, foo='bar') -class Test__initialize_headers(unittest2.TestCase): +class Test__initialize_headers(unittest.TestCase): def test_null(self): result = transport._initialize_headers(None) @@ -67,7 +76,7 @@ class Test__initialize_headers(unittest2.TestCase): self.assertIsNot(result, headers) -class Test__apply_user_agent(unittest2.TestCase): +class Test__apply_user_agent(unittest.TestCase): def test_null(self): headers = object() @@ -91,7 +100,7 @@ class Test__apply_user_agent(unittest2.TestCase): self.assertEqual(result, {'user-agent': final_agent}) -class Test_clean_headers(unittest2.TestCase): +class Test_clean_headers(unittest.TestCase): def test_no_modify(self): headers = {b'key': b'val'} @@ -119,7 +128,7 @@ class Test_clean_headers(unittest2.TestCase): self.assertEqual(result, header_str) -class Test_wrap_http_for_auth(unittest2.TestCase): +class Test_wrap_http_for_auth(unittest.TestCase): def test_wrap(self): credentials = object() @@ -129,3 +138,45 @@ class Test_wrap_http_for_auth(unittest2.TestCase): self.assertIsNone(result) self.assertNotEqual(http.request, orig_req_method) self.assertIs(http.request.credentials, credentials) + + +class Test_request(unittest.TestCase): + + uri = 'http://localhost' + method = 'POST' + body = 'abc' + redirections = 3 + + def test_with_request_attr(self): + mock_result = object() + headers = {'foo': 'bar'} + http = http_mock.HttpMock(headers=headers, data=mock_result) + + response, content = transport.request( + http, self.uri, method=self.method, body=self.body, + redirections=self.redirections) + self.assertEqual(response, headers) + self.assertIs(content, mock_result) + # Verify mocks. + self.assertEqual(http.requests, 1) + self.assertEqual(http.uri, self.uri) + self.assertEqual(http.method, self.method) + self.assertEqual(http.body, self.body) + self.assertIsNone(http.headers) + + def test_with_callable_http(self): + headers = {} + mock_result = object() + http = http_mock.HttpMock(headers=headers, data=mock_result) + + result = transport.request(http, self.uri, method=self.method, + body=self.body, + redirections=self.redirections) + self.assertEqual(result, (headers, mock_result)) + # Verify mock. + self.assertEqual(http.requests, 1) + self.assertEqual(http.uri, self.uri) + self.assertEqual(http.method, self.method) + self.assertEqual(http.body, self.body) + self.assertIsNone(http.headers) + self.assertEqual(http.redirections, self.redirections) |