|
3 | 3 | import unittest2 |
4 | 4 |
|
5 | 5 |
|
| 6 | +class Test__KeyIterator(unittest2.TestCase): |
| 7 | + |
| 8 | + def _getTargetClass(self): |
| 9 | + from gcloud.storage.bucket import _KeyIterator |
| 10 | + return _KeyIterator |
| 11 | + |
| 12 | + def _makeOne(self, *args, **kw): |
| 13 | + return self._getTargetClass()(*args, **kw) |
| 14 | + |
| 15 | + def test_ctor(self): |
| 16 | + connection = _Connection() |
| 17 | + bucket = _Bucket(connection) |
| 18 | + iterator = self._makeOne(bucket) |
| 19 | + self.assertTrue(iterator.bucket is bucket) |
| 20 | + self.assertTrue(iterator.connection is connection) |
| 21 | + self.assertEqual(iterator.path, '%s/o' % bucket.path) |
| 22 | + self.assertEqual(iterator.page_number, 0) |
| 23 | + self.assertEqual(iterator.next_page_token, None) |
| 24 | + self.assertEqual(iterator.prefixes, ()) |
| 25 | + |
| 26 | + def test_get_items_from_response_empty(self): |
| 27 | + connection = _Connection() |
| 28 | + bucket = _Bucket(connection) |
| 29 | + iterator = self._makeOne(bucket) |
| 30 | + self.assertEqual(list(iterator.get_items_from_response({})), []) |
| 31 | + self.assertEqual(iterator.prefixes, ()) |
| 32 | + |
| 33 | + def test_get_items_from_response_non_empty(self): |
| 34 | + from gcloud.storage.key import Key |
| 35 | + KEY = 'key' |
| 36 | + response = {'items': [{'name': KEY}], 'prefixes': ['foo']} |
| 37 | + connection = _Connection() |
| 38 | + bucket = _Bucket(connection) |
| 39 | + iterator = self._makeOne(bucket) |
| 40 | + keys = list(iterator.get_items_from_response(response)) |
| 41 | + self.assertEqual(len(keys), 1) |
| 42 | + key = keys[0] |
| 43 | + self.assertTrue(isinstance(key, Key)) |
| 44 | + self.assertTrue(key.connection is connection) |
| 45 | + self.assertEqual(key.name, KEY) |
| 46 | + self.assertEqual(iterator.prefixes, ('foo',)) |
| 47 | + |
| 48 | + |
6 | 49 | class Test_Bucket(unittest2.TestCase): |
7 | 50 |
|
8 | 51 | def _getTargetClass(self): |
@@ -170,6 +213,41 @@ def test_get_all_keys_non_empty(self): |
170 | 213 | self.assertEqual(kw['path'], '/b/%s/o' % NAME) |
171 | 214 | self.assertEqual(kw['query_params'], {}) |
172 | 215 |
|
| 216 | + def test_iterator_defaults(self): |
| 217 | + NAME = 'name' |
| 218 | + connection = _Connection({'items': []}) |
| 219 | + bucket = self._makeOne(connection, NAME) |
| 220 | + iterator = bucket.iterator() |
| 221 | + keys = list(iterator) |
| 222 | + self.assertEqual(keys, []) |
| 223 | + kw, = connection._requested |
| 224 | + self.assertEqual(kw['method'], 'GET') |
| 225 | + self.assertEqual(kw['path'], '/b/%s/o' % NAME) |
| 226 | + self.assertEqual(kw['query_params'], {}) |
| 227 | + |
| 228 | + def test_iterator_explicit(self): |
| 229 | + NAME = 'name' |
| 230 | + EXPECTED = { |
| 231 | + 'prefix': 'subfolder', |
| 232 | + 'delimiter': '/', |
| 233 | + 'maxResults': 10, |
| 234 | + 'versions': True, |
| 235 | + } |
| 236 | + connection = _Connection({'items': []}) |
| 237 | + bucket = self._makeOne(connection, NAME) |
| 238 | + iterator = bucket.iterator( |
| 239 | + prefix='subfolder', |
| 240 | + delimiter='/', |
| 241 | + max_results=10, |
| 242 | + versions=True, |
| 243 | + ) |
| 244 | + keys = list(iterator) |
| 245 | + self.assertEqual(keys, []) |
| 246 | + kw, = connection._requested |
| 247 | + self.assertEqual(kw['method'], 'GET') |
| 248 | + self.assertEqual(kw['path'], '/b/%s/o' % NAME) |
| 249 | + self.assertEqual(kw['query_params'], EXPECTED) |
| 250 | + |
173 | 251 | def test_new_key_existing(self): |
174 | 252 | from gcloud.storage.key import Key |
175 | 253 | existing = Key() |
@@ -882,46 +960,6 @@ def get_items_from_response(self, response): |
882 | 960 | self.assertEqual(kw[1]['query_params'], {}) |
883 | 961 |
|
884 | 962 |
|
885 | | -class Test__KeyIterator(unittest2.TestCase): |
886 | | - |
887 | | - def _getTargetClass(self): |
888 | | - from gcloud.storage.bucket import _KeyIterator |
889 | | - return _KeyIterator |
890 | | - |
891 | | - def _makeOne(self, *args, **kw): |
892 | | - return self._getTargetClass()(*args, **kw) |
893 | | - |
894 | | - def test_ctor(self): |
895 | | - connection = _Connection() |
896 | | - bucket = _Bucket(connection) |
897 | | - iterator = self._makeOne(bucket) |
898 | | - self.assertTrue(iterator.bucket is bucket) |
899 | | - self.assertTrue(iterator.connection is connection) |
900 | | - self.assertEqual(iterator.path, '%s/o' % bucket.path) |
901 | | - self.assertEqual(iterator.page_number, 0) |
902 | | - self.assertEqual(iterator.next_page_token, None) |
903 | | - |
904 | | - def test_get_items_from_response_empty(self): |
905 | | - connection = _Connection() |
906 | | - bucket = _Bucket(connection) |
907 | | - iterator = self._makeOne(bucket) |
908 | | - self.assertEqual(list(iterator.get_items_from_response({})), []) |
909 | | - |
910 | | - def test_get_items_from_response_non_empty(self): |
911 | | - from gcloud.storage.key import Key |
912 | | - KEY = 'key' |
913 | | - response = {'items': [{'name': KEY}]} |
914 | | - connection = _Connection() |
915 | | - bucket = _Bucket(connection) |
916 | | - iterator = self._makeOne(bucket) |
917 | | - keys = list(iterator.get_items_from_response(response)) |
918 | | - self.assertEqual(len(keys), 1) |
919 | | - key = keys[0] |
920 | | - self.assertTrue(isinstance(key, Key)) |
921 | | - self.assertTrue(key.connection is connection) |
922 | | - self.assertEqual(key.name, KEY) |
923 | | - |
924 | | - |
925 | 963 | class _Connection(object): |
926 | 964 | _delete_ok = False |
927 | 965 |
|
|
0 commit comments