|
| 1 | +import io |
| 2 | + |
1 | 3 | import unittest2 |
2 | 4 |
|
3 | 5 |
|
@@ -266,6 +268,41 @@ def set_contents_from_filename(self, filename): |
266 | 268 | bucket.upload_file(FILENAME, KEY) |
267 | 269 | self.assertEqual(_uploaded, [(bucket, KEY, FILENAME)]) |
268 | 270 |
|
| 271 | + def test_upload_file_object_no_key(self): |
| 272 | + from gcloud.test_credentials import _Monkey |
| 273 | + from gcloud.storage import bucket as MUT |
| 274 | + FILENAME = 'file.txt' |
| 275 | + FILEOBJECT = MockFile(FILENAME) |
| 276 | + _uploaded = [] |
| 277 | + class _Key(object): |
| 278 | + def __init__(self, bucket, name): |
| 279 | + self._bucket = bucket |
| 280 | + self._name = name |
| 281 | + def set_contents_from_file(self, fh): |
| 282 | + _uploaded.append((self._bucket, self._name, fh)) |
| 283 | + bucket = self._makeOne() |
| 284 | + with _Monkey(MUT, Key=_Key): |
| 285 | + bucket.upload_file_object(FILEOBJECT) |
| 286 | + self.assertEqual(_uploaded, [(bucket, FILENAME, FILEOBJECT)]) |
| 287 | + |
| 288 | + def test_upload_file_object_explicit_key(self): |
| 289 | + from gcloud.test_credentials import _Monkey |
| 290 | + from gcloud.storage import bucket as MUT |
| 291 | + FILENAME = 'file.txt' |
| 292 | + FILEOBJECT = MockFile(FILENAME) |
| 293 | + KEY = 'key' |
| 294 | + _uploaded = [] |
| 295 | + class _Key(object): |
| 296 | + def __init__(self, bucket, name): |
| 297 | + self._bucket = bucket |
| 298 | + self._name = name |
| 299 | + def set_contents_from_file(self, fh): |
| 300 | + _uploaded.append((self._bucket, self._name, fh)) |
| 301 | + bucket = self._makeOne() |
| 302 | + with _Monkey(MUT, Key=_Key): |
| 303 | + bucket.upload_file_object(FILEOBJECT, KEY) |
| 304 | + self.assertEqual(_uploaded, [(bucket, KEY, FILEOBJECT)]) |
| 305 | + |
269 | 306 | def test_has_metdata_none_set(self): |
270 | 307 | NONESUCH = 'nonesuch' |
271 | 308 | bucket = self._makeOne() |
@@ -788,4 +825,10 @@ def delete_bucket(self, bucket, force=False): |
788 | 825 | if not self._delete_ok: |
789 | 826 | raise NotFoundError('miss', None) |
790 | 827 | return True |
791 | | - |
| 828 | + |
| 829 | + |
| 830 | +class MockFile(io.StringIO): |
| 831 | + name = None |
| 832 | + def __init__(self, name, buffer_ = None): |
| 833 | + super(MockFile, self).__init__(buffer_) |
| 834 | + self.name = name |
0 commit comments