aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDanny Hermes <daniel.j.hermes@gmail.com>2016-08-17 15:18:29 -0700
committerDanny Hermes <daniel.j.hermes@gmail.com>2016-08-17 15:56:41 -0700
commitebe9ed0bbbe4ce51c1a76de694c795e38906d690 (patch)
tree4bfe3e9c6ccd639ae4a598456daa0ec437e0221c /tests
parent4c7b3be5a101454e2c641a9835e652a92d16800e (diff)
downloadoauth2client-ebe9ed0bbbe4ce51c1a76de694c795e38906d690.tar.gz
Correct query loss when using parse_qsl to dict
Diffstat (limited to 'tests')
-rw-r--r--tests/test__helpers.py40
-rw-r--r--tests/test_client.py19
2 files changed, 43 insertions, 16 deletions
diff --git a/tests/test__helpers.py b/tests/test__helpers.py
index aac5f8d..00cd38a 100644
--- a/tests/test__helpers.py
+++ b/tests/test__helpers.py
@@ -19,6 +19,7 @@ import unittest
import mock
from oauth2client import _helpers
+from tests import test_client
class PositionalTests(unittest.TestCase):
@@ -242,3 +243,42 @@ class Test__urlsafe_b64decode(unittest.TestCase):
bad_string = b'+'
with self.assertRaises((TypeError, binascii.Error)):
_helpers._urlsafe_b64decode(bad_string)
+
+
+class Test_update_query_params(unittest.TestCase):
+
+ def test_update_query_params_no_params(self):
+ uri = 'http://www.google.com'
+ updated = _helpers.update_query_params(uri, {'a': 'b'})
+ self.assertEqual(updated, uri + '?a=b')
+
+ def test_update_query_params_existing_params(self):
+ uri = 'http://www.google.com?x=y'
+ updated = _helpers.update_query_params(uri, {'a': 'b', 'c': 'd&'})
+ hardcoded_update = uri + '&a=b&c=d%26'
+ test_client.assertUrisEqual(self, updated, hardcoded_update)
+
+ def test_update_query_params_replace_param(self):
+ base_uri = 'http://www.google.com'
+ uri = base_uri + '?x=a'
+ updated = _helpers.update_query_params(uri, {'x': 'b', 'y': 'c'})
+ hardcoded_update = base_uri + '?x=b&y=c'
+ test_client.assertUrisEqual(self, updated, hardcoded_update)
+
+ def test_update_query_params_repeated_params(self):
+ uri = 'http://www.google.com?x=a&x=b'
+ with self.assertRaises(ValueError):
+ _helpers.update_query_params(uri, {'a': 'c'})
+
+
+class Test_parse_unique_urlencoded(unittest.TestCase):
+
+ def test_without_repeats(self):
+ content = 'a=b&c=d'
+ result = _helpers.parse_unique_urlencoded(content)
+ self.assertEqual(result, {'a': 'b', 'c': 'd'})
+
+ def test_with_repeats(self):
+ content = 'a=b&a=d'
+ with self.assertRaises(ValueError):
+ _helpers.parse_unique_urlencoded(content)
diff --git a/tests/test_client.py b/tests/test_client.py
index dbe11eb..a3268ba 100644
--- a/tests/test_client.py
+++ b/tests/test_client.py
@@ -1364,7 +1364,7 @@ class BasicCredentialsTests(unittest.TestCase):
self.assertEqual(credentials.scopes, set())
self.assertEqual(exc_manager.exception.args, (error_msg,))
- token_uri = client._update_query_params(
+ token_uri = _helpers.update_query_params(
oauth2client.GOOGLE_TOKEN_INFO_URI,
{'fields': 'scope', 'access_token': token})
@@ -1558,19 +1558,6 @@ class TestAssertionCredentials(unittest.TestCase):
credentials.sign_blob(b'blob')
-class UpdateQueryParamsTest(unittest.TestCase):
- def test_update_query_params_no_params(self):
- uri = 'http://www.google.com'
- updated = client._update_query_params(uri, {'a': 'b'})
- self.assertEqual(updated, uri + '?a=b')
-
- def test_update_query_params_existing_params(self):
- uri = 'http://www.google.com?x=y'
- updated = client._update_query_params(uri, {'a': 'b', 'c': 'd&'})
- hardcoded_update = uri + '&a=b&c=d%26'
- assertUrisEqual(self, updated, hardcoded_update)
-
-
class ExtractIdTokenTest(unittest.TestCase):
"""Tests client._extract_id_token()."""
@@ -1670,7 +1657,7 @@ class OAuth2WebServerFlowTest(unittest.TestCase):
'access_type': 'offline',
'response_type': 'code',
}
- expected = client._update_query_params(flow.auth_uri, query_params)
+ expected = _helpers.update_query_params(flow.auth_uri, query_params)
assertUrisEqual(self, expected, result)
# Check stubs.
self.assertEqual(logger.warning.call_count, 1)
@@ -1735,7 +1722,7 @@ class OAuth2WebServerFlowTest(unittest.TestCase):
'access_type': 'offline',
'response_type': 'code',
}
- expected = client._update_query_params(flow.auth_uri, query_params)
+ expected = _helpers.update_query_params(flow.auth_uri, query_params)
assertUrisEqual(self, expected, result)
def test_step1_get_device_and_user_codes_wo_device_uri(self):