Beispiel #1
0
 def test_all_files__files_available__lists_files(self):
     """ Tests that all_files calls both files() and more_files() and yields File objects. """
     bucket = Bucket(self.mock_api, {})
     names = (
         'f1',
         'f2',
         'f3',
     )
     f1 = File(self.mock_api, bucket, {'fileName': names[0]})
     f2 = File(self.mock_api, bucket, {'fileName': names[1]})
     f3 = File(self.mock_api, bucket, {'fileName': names[2]})
     bucket.files = MagicMock()
     bucket.more_files = MagicMock()
     bucket.files.return_value = [f1]
     bucket.more_files.return_value = [[f2], [f3]]
     args = (
         'prefix',
         'delimiter',
         0,
         'start_name',
     )
     index = 0
     for index, bucket_file in enumerate(bucket.all_files(*args)):
         self.assertTrue(isinstance(bucket_file, File))
         self.assertIs(bucket_file._api, self.mock_api)
         self.assertEqual(bucket_file.name, names[index])
     bucket.files.assert_called_with(*args)
     bucket.more_files.assert_called()
     self.assertEqual(index, len(names) - 1)
Beispiel #2
0
 def test_folder__folder_with_delimiter__lists_files(self):
     """ Tests that the prefix is used as-is if it is suffixed with the delimiter. """
     bucket = Bucket(self.mock_api, {})
     bucket.files = MagicMock()
     delimiter = 'delimiter'
     prefix = 'prefix' + delimiter
     max_files = 0
     bucket.folder(prefix, delimiter, max_files)
     bucket.files.assert_called_with(prefix, delimiter, max_files)
Beispiel #3
0
 def test_file__retrieve_by_id_success__retrieves_file(self):
     """ Tests retrieving a file by its name. """
     file_info = Responses.get_file_info.value.dict
     self.mock_api.get_file_info.return_value = file_info
     bucket = Bucket(self.mock_api, {})
     file_ = bucket.file(file_id=file_info['fileId'])
     self.assertTrue(isinstance(file_, File))
     self.assertIs(file_.bucket, bucket)
     self.assertIs(file_._api, self.mock_api)
     self.assertEqual(file_.name, file_info['fileName'])
Beispiel #4
0
 def test_folder__folder_without_delimiter__appends_delimiter_and_lists_files(
         self):
     """ Tests that the prefix is appended with the delimiter if it lacks it. """
     bucket = Bucket(self.mock_api, {})
     bucket.files = MagicMock()
     prefix = 'prefix'
     delimiter = 'delimiter'
     max_files = 0
     bucket.folder(prefix, delimiter, max_files)
     bucket.files.assert_called_with(prefix + delimiter, delimiter,
                                     max_files)
Beispiel #5
0
 def test_files__lists_bucket_files(self):
     """ Tests the bucket can list its files . """
     self.mock_api.list_files.return_value = Responses.list_files.value.dict
     bucket = Bucket(self.mock_api, {'bucketId': 'bucket_id'})
     args = ('prefix', '/', 'start_name', 50)
     files = bucket.files(*args)
     self.mock_api.list_files.assert_called_with(*args, bucket.id)
     for file_ in files:
         self.assertTrue(isinstance(file_, File))
         self.assertIs(file_.bucket, bucket)
         self.assertIs(file_._api, self.mock_api)
Beispiel #6
0
 def test_upload_iter__upload_success(self):
     bucket_id = 'bucket_id'
     bucket = Bucket(self.mock_api, {'bucketId': bucket_id})
     file_info = Responses.get_file_info.json
     iter_data = [
         ({}, 1, 2),
         ({}, 2, 2),
         (file_info, 0, 2),
     ]
     self.mock_api.upload.return_value = iter(iter_data)
     args = (Path(), 'upload', True, 0)
     for iteration, expected in zip(bucket.upload_iter(*args), iter_data):
         self.assertEqual(iteration, expected)
     self.mock_api.upload.assert_called_with(*args, bucket.id)
Beispiel #7
0
 def test_file__retrieve_by_name_success__retrieves_file(self):
     """ Tests retrieving a file by its id. """
     bucket = Bucket(self.mock_api, {})
     file_name = 'file_name'
     file_data = [File(self.mock_api, bucket, {'fileName': file_name})]
     bucket.files = MagicMock()
     bucket.files.return_value = file_data
     file_ = bucket.file(file_name=file_name)
     bucket.files.assert_called_with(start_name=file_name, max_files=1)
     self.assertTrue(isinstance(file_, File))
     self.assertIs(file_.bucket, bucket)
     self.assertIs(file_._api,
                   self.mock_api)  # pylint: disable = protected-access
     self.assertEqual(file_.name, file_name)
Beispiel #8
0
 def test_more_files__no_available_params__breaks(self):
     """ Tests that the method breaks if the paratemers for the next request are empty. """
     bucket = Bucket(self.mock_api, {})
     bucket._next_files = False
     bucket._next_params = (1, 2, 3)
     self.assertEqual([], list(bucket.more_files()))
     bucket._next_files = True
     bucket._next_params = False
     self.assertEqual([], list(bucket.more_files()))
Beispiel #9
0
 def test_init__bucket_initialized(self):
     """ Tests object attributes are being correctly initialized. """
     bucket_info = Responses.list_buckets.value.dict['buckets'][0]
     bucket = Bucket(self.mock_api, bucket_info)
     self.assertIs(bucket._api, self.mock_api)
     self.assertEqual(bucket.id, bucket_info['bucketId'])
     self.assertEqual(bucket.name, bucket_info['bucketName'])
     self.assertEqual(bucket.type, BucketType(bucket_info['bucketType']))
Beispiel #10
0
 def test_upload__upload_success(self):
     """ Tests uploading a file to the bucket. """
     bucket_id = 'bucket_id'
     bucket = Bucket(self.mock_api, {'bucketId': bucket_id})
     file_info = Responses.get_file_info.json
     self.mock_api.upload.return_value = iter([
         ({}, 1, 2),
         ({}, 2, 2),
         (file_info, 0, 2),
     ])
     args = (Path(), 'upload', True, 0)
     file = bucket.upload(*args)
     self.assertIsInstance(file, File)
     self.assertEqual(file.api, self.mock_api)
     self.assertEqual(file.bucket, bucket)
     self.assertEqual(file.id, file_info['fileId'])
     self.assertEqual(file.name, file_info['fileName'])
     self.mock_api.upload.assert_called_with(*args, bucket.id)
Beispiel #11
0
 def test_str(self):
     """ Tests that the __str__ and __repr__ methods. """
     name = 'bucket_name'
     bucket_id = 'bucket_id'
     bucket = Bucket(self.mock_api, {
         'bucketName': name,
         'bucketId': bucket_id
     })
     self.assertEqual(str(bucket), name)
     self.assertTrue(Bucket.__name__ in repr(bucket))
     self.assertTrue(name in repr(bucket))
     self.assertTrue(bucket_id in repr(bucket))
Beispiel #12
0
 def test_more_files__no_more_files__breaks(self):
     """ Tests that the method breaks if the request returns empty results. """
     bucket = Bucket(self.mock_api, {})
     bucket.files = MagicMock()
     bucket.files.return_value = []
     bucket._next_files = True
     bucket._next_params = (1, 2, 3)
     self.assertEqual([], list(bucket.more_files()))
     bucket.files.assert_called_with(*bucket._next_params,
                                     bucket._next_files)
Beispiel #13
0
 def test_more_files__files_available__yields_files(self):
     """ Tests that more files are listed if available. """
     bucket = Bucket(self.mock_api, {})
     bucket.files = MagicMock()
     names = ('f1', 'f2')
     bucket.files.side_effect = [
         [File(self.mock_api, bucket, {'fileName': names[0]})],
         [File(self.mock_api, bucket, {'fileName': names[1]})],
     ]
     bucket._next_files = True
     bucket._next_params = (1, 2, 3)
     more_files_generator = bucket.more_files()
     for name in names:
         files = next(more_files_generator)
         self.assertTrue(isinstance(files, list))
         self.assertTrue(isinstance(files[0], File))
         self.assertEqual(files[0].name, name)
     self.assertRaises(RuntimeError, next, more_files_generator)
Beispiel #14
0
 def test_delete__delete_success(self):
     """ Tests deleting the bucket. """
     bucket_id = 'bucket_id'
     bucket = Bucket(self.mock_api, {'bucketId': bucket_id})
     bucket.delete()
     self.mock_api.delete_bucket.assert_called_with(bucket.id)
Beispiel #15
0
 def test_file__retrieve_by_name_failure__raises_file_error(self):
     """ Tests failure when retrieving a file by its id. """
     bucket = Bucket(self.mock_api, {})
     bucket.files = MagicMock()
     bucket.files.return_value = []
     self.assertRaises(FileError, bucket.file, file_name='file_name')
Beispiel #16
0
 def test_file__retrieve_by_id_failure__raises_file_error(self):
     """ Tests failure when retrieving a file by its name. """
     self.mock_api.get_file_info.side_effect = ResponseError
     bucket = Bucket(self.mock_api, {})
     self.assertRaises(FileError, bucket.file, 'file_id')