diff options
author | Jenkins <jenkins@review.openstack.org> | 2016-09-15 02:34:01 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2016-09-15 02:34:01 +0000 |
commit | 0ec6b7b162a7b98ca3fad515de17d8f8a88dda72 (patch) | |
tree | 4f0798b36f2064de1df5ff4c95af575172a8c249 | |
parent | 714bf0cd4b1fafc47d055ccc12edd4a51ed8cb91 (diff) | |
parent | e41158d79e4bcb280ec94365226f9423f72d7b66 (diff) | |
download | python-swiftclient-0ec6b7b162a7b98ca3fad515de17d8f8a88dda72.tar.gz |
Merge "Make tempurl subcommand insist on whole number seconds"
-rw-r--r-- | swiftclient/utils.py | 12 | ||||
-rw-r--r-- | tests/unit/test_utils.py | 21 |
2 files changed, 25 insertions, 8 deletions
diff --git a/swiftclient/utils.py b/swiftclient/utils.py index 2e727ad..0d1104e 100644 --- a/swiftclient/utils.py +++ b/swiftclient/utils.py @@ -80,17 +80,19 @@ def generate_temp_url(path, seconds, key, method, absolute=False): :param absolute: if True then the seconds parameter is interpreted as an absolute Unix time, otherwise seconds is interpreted as a relative time offset from current time. - :raises: ValueError if seconds is not a positive integer or path is not to + :raises: ValueError if seconds is not a whole number or path is not to an object. - :raises: TypeError if seconds is not an integer :return: the path portion of a temporary URL """ try: + seconds = float(seconds) + if not seconds.is_integer(): + raise ValueError() seconds = int(seconds) + if seconds < 0: + raise ValueError() except ValueError: - raise TypeError('seconds must be an integer') - if seconds < 0: - raise ValueError('seconds must be a positive integer') + raise ValueError('seconds must be a whole number') if isinstance(path, six.binary_type): try: diff --git a/tests/unit/test_utils.py b/tests/unit/test_utils.py index d2f6494..787f645 100644 --- a/tests/unit/test_utils.py +++ b/tests/unit/test_utils.py @@ -170,15 +170,30 @@ class TestTempURL(unittest.TestCase): self.assertEqual(url, expected_url) def test_generate_temp_url_bad_seconds(self): - with self.assertRaises(TypeError) as exc_manager: + with self.assertRaises(ValueError) as exc_manager: u.generate_temp_url(self.url, 'not_an_int', self.key, self.method) self.assertEqual(exc_manager.exception.args[0], - 'seconds must be an integer') + 'seconds must be a whole number') with self.assertRaises(ValueError) as exc_manager: u.generate_temp_url(self.url, -1, self.key, self.method) self.assertEqual(exc_manager.exception.args[0], - 'seconds must be a positive integer') + 'seconds must be a whole number') + + with self.assertRaises(ValueError) as exc_manager: + u.generate_temp_url(self.url, 1.1, self.key, self.method) + self.assertEqual(exc_manager.exception.args[0], + 'seconds must be a whole number') + + with self.assertRaises(ValueError) as exc_manager: + u.generate_temp_url(self.url, '-1', self.key, self.method) + self.assertEqual(exc_manager.exception.args[0], + 'seconds must be a whole number') + + with self.assertRaises(ValueError) as exc_manager: + u.generate_temp_url(self.url, '1.1', self.key, self.method) + self.assertEqual(exc_manager.exception.args[0], + 'seconds must be a whole number') def test_generate_temp_url_bad_path(self): with self.assertRaises(ValueError) as exc_manager: |