コード例 #1
0
    def test_get_bucket_with_versions(self):
        self._authorize_account()
        self._create_my_bucket()

        # Put many versions of a file into the test bucket. Unroll the loop here for convenience.
        bucket = self.b2_api.get_bucket_by_name('my-bucket')
        bucket.upload(UploadSourceBytes(b'test'), 'test')
        bucket.upload(UploadSourceBytes(b'test'), 'test')
        bucket.upload(UploadSourceBytes(b'test'), 'test')
        bucket.upload(UploadSourceBytes(b'test'), 'test')
        bucket.upload(UploadSourceBytes(b'test'), 'test')
        bucket.upload(UploadSourceBytes(b'test'), 'test')
        bucket.upload(UploadSourceBytes(b'test'), 'test')
        bucket.upload(UploadSourceBytes(b'test'), 'test')
        bucket.upload(UploadSourceBytes(b'test'), 'test')
        bucket.upload(UploadSourceBytes(b'test'), 'test')

        # Now check the output of get-bucket against the canon.
        expected_stdout = '''
        {
            "accountId": "my-account",
            "bucketId": "bucket_0",
            "bucketInfo": {},
            "bucketName": "my-bucket",
            "bucketType": "allPublic",
            "corsRules": [],
            "fileCount": 10,
            "lifecycleRules": [],
            "revision": 1,
            "totalSize": 40
        }
        '''
        self._run_command(['get-bucket', '--showSize', 'my-bucket'],
                          expected_stdout, '', 0)
コード例 #2
0
    def test_ls(self):
        self._authorize_account()
        self._create_my_bucket()

        # Check with no files
        self._run_command(['ls', 'my-bucket'], '', '', 0)

        # Create some files, including files in a folder
        bucket = self.b2_api.get_bucket_by_name('my-bucket')
        bucket.upload(UploadSourceBytes(b''), 'a')
        bucket.upload(UploadSourceBytes(b' '), 'b/b1')
        bucket.upload(UploadSourceBytes(b'   '), 'b/b2')
        bucket.upload(UploadSourceBytes(b'     '), 'c')
        bucket.upload(UploadSourceBytes(b'      '), 'c')

        # Condensed output
        expected_stdout = '''
        a
        b/
        c
        '''
        self._run_command(['ls', 'my-bucket'], expected_stdout, '', 0)

        # Recursive output
        expected_stdout = '''
        a
        b/b1
        b/b2
        c
        '''
        self._run_command(['ls', '--recursive', 'my-bucket'], expected_stdout,
                          '', 0)

        # Check long output.   (The format expects full-length file ids, so it causes whitespace here)
        expected_stdout = '''
                                                                                       9999  upload  1970-01-01  00:00:05          0  a
                                                                                          -       -           -         -          0  b/
                                                                                       9995  upload  1970-01-01  00:00:05          6  c
        '''
        self._run_command(['ls', '--long', 'my-bucket'], expected_stdout, '',
                          0)

        # Check long versions output   (The format expects full-length file ids, so it causes whitespace here)
        expected_stdout = '''
                                                                                       9999  upload  1970-01-01  00:00:05          0  a
                                                                                          -       -           -         -          0  b/
                                                                                       9995  upload  1970-01-01  00:00:05          6  c
                                                                                       9996  upload  1970-01-01  00:00:05          5  c
        '''
        self._run_command(['ls', '--long', '--versions', 'my-bucket'],
                          expected_stdout, '', 0)
コード例 #3
0
    def test_list_parts_with_parts(self):
        self._authorize_account()
        self._create_my_bucket()
        bucket = self.b2_api.get_bucket_by_name('my-bucket')
        file = bucket.start_large_file('file', 'text/plain', {})
        content = six.b('hello world')
        large_file_upload_state = mock.MagicMock()
        large_file_upload_state.has_error.return_value = False
        bucket._upload_part(file.file_id, 1, (0, 11),
                            UploadSourceBytes(content),
                            large_file_upload_state)
        bucket._upload_part(file.file_id, 3, (0, 11),
                            UploadSourceBytes(content),
                            large_file_upload_state)
        expected_stdout = '''
            1         11  2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
            3         11  2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
        '''

        self._run_command(['list_parts', file.file_id], expected_stdout, '', 0)
コード例 #4
0
 def testThree(self):
     file1 = self.bucket.start_large_file('file1.txt', 'text/plain', {})
     content = six.b('hello world')
     content_sha1 = hex_sha1_of_bytes(content)
     large_file_upload_state = mock.MagicMock()
     large_file_upload_state.has_error.return_value = False
     self.bucket._upload_part(
         file1.file_id, 1, (0, 11), UploadSourceBytes(content), large_file_upload_state
     )
     self.bucket._upload_part(
         file1.file_id, 2, (0, 11), UploadSourceBytes(content), large_file_upload_state
     )
     self.bucket._upload_part(
         file1.file_id, 3, (0, 11), UploadSourceBytes(content), large_file_upload_state
     )
     expected_parts = [
         Part('9999', 1, 11, content_sha1),
         Part('9999', 2, 11, content_sha1),
         Part('9999', 3, 11, content_sha1),
     ]
     self.assertEqual(expected_parts, list(self.bucket.list_parts(file1.file_id, batch_size=1)))
コード例 #5
0
 def test_error_in_state(self):
     file1 = self.bucket.start_large_file('file1.txt', 'text/plain', {})
     content = six.b('hello world')
     file_progress_listener = mock.MagicMock()
     large_file_upload_state = LargeFileUploadState(file_progress_listener)
     large_file_upload_state.set_error('test error')
     try:
         self.bucket._upload_part(file1.file_id, 1, (0, 11),
                                  UploadSourceBytes(content),
                                  large_file_upload_state)
         self.fail('should have thrown')
     except AlreadyFailed:
         pass
コード例 #6
0
    def test_get_bucket_with_hidden(self):
        self._authorize_account()
        self._create_my_bucket()

        # Put some files into the test bucket. Unroll the loop for convenience.
        bucket = self.b2_api.get_bucket_by_name('my-bucket')
        bucket.upload(UploadSourceBytes(b'test'), 'upload1')
        bucket.upload(UploadSourceBytes(b'test'), 'upload2')
        bucket.upload(UploadSourceBytes(b'test'), 'upload3')
        bucket.upload(UploadSourceBytes(b'test'), 'upload4')
        bucket.upload(UploadSourceBytes(b'test'), 'upload5')
        bucket.upload(UploadSourceBytes(b'test'), 'upload6')

        # Hide some new files. Don't check the results here; it will be clear enough that
        # something has failed if the output of 'get-bucket' does not match the canon.
        stdout, stderr = self._get_stdouterr()
        console_tool = ConsoleTool(self.b2_api, stdout, stderr)
        console_tool.run_command(['b2', 'hide_file', 'my-bucket', 'hidden1'])
        console_tool.run_command(['b2', 'hide_file', 'my-bucket', 'hidden2'])
        console_tool.run_command(['b2', 'hide_file', 'my-bucket', 'hidden3'])
        console_tool.run_command(['b2', 'hide_file', 'my-bucket', 'hidden4'])

        # Now check the output of get-bucket against the canon.
        expected_stdout = '''
        {
            "accountId": "my-account",
            "bucketId": "bucket_0",
            "bucketInfo": {},
            "bucketName": "my-bucket",
            "bucketType": "allPublic",
            "corsRules": [],
            "fileCount": 10,
            "lifecycleRules": [],
            "revision": 1,
            "totalSize": 24
        }
        '''
        self._run_command(['get-bucket', '--showSize', 'my-bucket'],
                          expected_stdout, '', 0)
コード例 #7
0
    def test_get_bucket_with_folders(self):
        self._authorize_account()
        self._create_my_bucket()

        # Create a hierarchical structure within the test bucket. Unroll the loop here for
        # convenience.
        bucket = self.b2_api.get_bucket_by_name('my-bucket')
        bucket.upload(UploadSourceBytes(b'test'), 'test')
        bucket.upload(UploadSourceBytes(b'test'), '1/test')
        bucket.upload(UploadSourceBytes(b'test'), '1/2/test')
        bucket.upload(UploadSourceBytes(b'test'), '1/2/3/test')
        bucket.upload(UploadSourceBytes(b'test'), '1/2/3/4/test')
        bucket.upload(UploadSourceBytes(b'test'), '1/2/3/4/5/test')
        bucket.upload(UploadSourceBytes(b'test'), '1/2/3/4/5/6/test')
        bucket.upload(UploadSourceBytes(b'test'), '1/2/3/4/5/6/7/test')
        bucket.upload(UploadSourceBytes(b'test'), '1/2/3/4/5/6/7/8/test')
        bucket.upload(UploadSourceBytes(b'test'), '1/2/3/4/5/6/7/8/9/test')
        bucket.upload(UploadSourceBytes(b'check'), 'check')
        bucket.upload(UploadSourceBytes(b'check'), '1/check')
        bucket.upload(UploadSourceBytes(b'check'), '1/2/check')
        bucket.upload(UploadSourceBytes(b'check'), '1/2/3/check')
        bucket.upload(UploadSourceBytes(b'check'), '1/2/3/4/check')
        bucket.upload(UploadSourceBytes(b'check'), '1/2/3/4/5/check')
        bucket.upload(UploadSourceBytes(b'check'), '1/2/3/4/5/6/check')
        bucket.upload(UploadSourceBytes(b'check'), '1/2/3/4/5/6/7/check')
        bucket.upload(UploadSourceBytes(b'check'), '1/2/3/4/5/6/7/8/check')
        bucket.upload(UploadSourceBytes(b'check'), '1/2/3/4/5/6/7/8/9/check')

        # Now check the output of get-bucket against the canon.
        expected_stdout = '''
        {
            "accountId": "my-account",
            "bucketId": "bucket_0",
            "bucketInfo": {},
            "bucketName": "my-bucket",
            "bucketType": "allPublic",
            "corsRules": [],
            "fileCount": 20,
            "lifecycleRules": [],
            "revision": 1,
            "totalSize": 90
        }
        '''
        self._run_command(['get-bucket', '--showSize', 'my-bucket'],
                          expected_stdout, '', 0)
コード例 #8
0
def upload_file(bucket, file_name, content):
    source = UploadSourceBytes(content)
    bucket.upload(source, file_name)
コード例 #9
0
ファイル: pipelines.py プロジェクト: yanfulin/ptt-beauty
 def _upload_file(self, buf, file_name):
     source = UploadSourceBytes(buf.read())
     self.c.upload(source, file_name)