예제 #1
0
 def test_check_force(self):
     # This checks to make sure that the force parameter is run. If
     # successful. The delete command will fail as the bucket is empty
     # and be caught by the exception.
     cmd_params = CommandParameters(self.session, 'rb', {'force': True}, '')
     cmd_params.parameters['src'] = 's3://mybucket'
     cmd_params.check_force(None)
예제 #2
0
 def test_validate_sse_c_args_missing_sse_c_copy_source(self):
     paths = ['s3://bucket/foo', 's3://bucket/bar']
     params = {'dir_op': False, 'sse_c_copy_source_key': 'foo'}
     cmd_param = CommandParameters('cp', params, '')
     error_msg = '--sse-c-copy-source must be specified'
     with self.assertRaisesRegexp(ParamValidationError, error_msg):
         cmd_param.add_paths(paths)
예제 #3
0
 def test_validate_streaming_paths_upload(self):
     parameters = {'src': '-', 'dest': 's3://bucket'}
     cmd_params = CommandParameters(self.session, 'cp', parameters, '')
     cmd_params._validate_streaming_paths()
     self.assertTrue(cmd_params.parameters['is_stream'])
     self.assertTrue(cmd_params.parameters['only_show_errors'])
     self.assertFalse(cmd_params.parameters['dir_op'])
예제 #4
0
 def test_validate_streaming_paths_upload(self):
     parameters = {'src': '-', 'dest': 's3://bucket'}
     cmd_params = CommandParameters('cp', parameters, '')
     cmd_params._validate_streaming_paths()
     self.assertTrue(cmd_params.parameters['is_stream'])
     self.assertTrue(cmd_params.parameters['only_show_errors'])
     self.assertFalse(cmd_params.parameters['dir_op'])
예제 #5
0
 def test_validate_streaming_paths_download(self):
     paths = ['s3://bucket/key', '-']
     cmd_params = CommandParameters('cp', {}, '')
     cmd_params.add_paths(paths)
     self.assertTrue(cmd_params.parameters['is_stream'])
     self.assertTrue(cmd_params.parameters['only_show_errors'])
     self.assertFalse(cmd_params.parameters['dir_op'])
예제 #6
0
 def test_validate_sse_c_args_missing_sse_c_copy_source_key(self):
     paths = ['s3://bucket/foo', 's3://bucket/bar']
     params = {'dir_op': False, 'sse_c_copy_source': 'AES256'}
     cmd_param = CommandParameters('cp', params, '')
     with self.assertRaisesRegexp(
             ValueError, '--sse-c-copy-source-key must be specified'):
         cmd_param.add_paths(paths)
예제 #7
0
 def test_validate_streaming_paths_download(self):
     parameters = {'src': 'localfile', 'dest': '-'}
     cmd_params = CommandParameters(self.session, 'cp', parameters, '')
     cmd_params._validate_streaming_paths()
     self.assertTrue(cmd_params.parameters['is_stream'])
     self.assertTrue(cmd_params.parameters['only_show_errors'])
     self.assertFalse(cmd_params.parameters['dir_op'])
예제 #8
0
 def test_validate_sse_c_args_missing_sse_c_copy_source_key(self):
     paths = ['s3://bucket/foo', 's3://bucket/bar']
     params = {'dir_op': False, 'sse_c_copy_source': 'AES256'}
     cmd_param = CommandParameters('cp', params, '')
     with self.assertRaisesRegexp(ValueError,
             '--sse-c-copy-source-key must be specified'):
         cmd_param.add_paths(paths)
예제 #9
0
 def test_validate_streaming_paths_download(self):
     parameters = {'src': 'localfile', 'dest': '-'}
     cmd_params = CommandParameters('cp', parameters, '')
     cmd_params._validate_streaming_paths()
     self.assertTrue(cmd_params.parameters['is_stream'])
     self.assertTrue(cmd_params.parameters['only_show_errors'])
     self.assertFalse(cmd_params.parameters['dir_op'])
예제 #10
0
    def test_check_path_type_fail(self):
        # This tests the class's ability to determine whether the correct
        # path types have been passed for a particular command. It test every
        # possible combination that is incorrect for every command.
        cmds = {'cp': ['local', 'locallocal', 's3'],
                'mv': ['local', 'locallocal', 's3'],
                'rm': ['local', 'locallocal', 's3s3', 'locals3', 's3local'],
                'ls': ['local', 'locallocal', 's3s3', 'locals3', 's3local'],
                'sync': ['local', 'locallocal', 's3'],
                'mb': ['local', 'locallocal', 's3s3', 'locals3', 's3local'],
                'rb': ['local', 'locallocal', 's3s3', 'locals3', 's3local']}
        s3_file = 's3://' + self.bucket + '/' + 'text1.txt'
        local_file = self.loc_files[0]

        combos = {'s3s3': [s3_file, s3_file],
                  's3local': [s3_file, local_file],
                  'locals3': [local_file, s3_file],
                  's3': [s3_file],
                  'local': [local_file],
                  'locallocal': [local_file, local_file]}

        for cmd in cmds.keys():
            cmd_param = CommandParameters(cmd, {}, '')
            cmd_param.add_region(mock.Mock())
            wrong_paths = cmds[cmd]
            for path_args in wrong_paths:
                with self.assertRaises(TypeError):
                    cmd_param.check_path_type(combos[path_args])
예제 #11
0
 def test_check_force(self):
     # This checks to make sure that the force parameter is run. If
     # successful. The delete command will fail as the bucket is empty
     # and be caught by the exception.
     cmd_params = CommandParameters(self.session, 'rb', {'force': True},'')
     cmd_params.parameters['src'] = 's3://mybucket'
     cmd_params.check_force(None)
예제 #12
0
 def test_validate_streaming_paths_download(self):
     paths = ['s3://bucket/key', '-']
     cmd_params = CommandParameters('cp', {}, '')
     cmd_params.add_paths(paths)
     self.assertTrue(cmd_params.parameters['is_stream'])
     self.assertTrue(cmd_params.parameters['only_show_errors'])
     self.assertFalse(cmd_params.parameters['dir_op'])
예제 #13
0
 def test_validate_sse_c_args_wrong_path_type(self):
     paths = ['s3://bucket/foo', self.file_creator.rootdir]
     params = {'dir_op': False, 'sse_c_copy_source': 'AES256',
               'sse_c_copy_source_key': 'foo'}
     cmd_param = CommandParameters('cp', params, '')
     with self.assertRaisesRegexp(ValueError,
                                  'only supported for copy operations'):
         cmd_param.add_paths(paths)
예제 #14
0
    def test_adds_is_move(self):
        params = {}
        CommandParameters('mv', params, '')
        self.assertTrue(params.get('is_move'))

        # is_move should only be true for mv
        params = {}
        CommandParameters('cp', params, '')
        self.assertFalse(params.get('is_move'))
예제 #15
0
    def test_check_path_type_fail(self):
        # This tests the class's ability to determine whether the correct
        # path types have been passed for a particular command. It test every
        # possible combination that is incorrect for every command.
        cmds = {
            'cp': ['local', 'locallocal', 's3'],
            'mv': ['local', 'locallocal', 's3'],
            'rm': ['local', 'locallocal', 's3s3', 'locals3', 's3local'],
            'ls': ['local', 'locallocal', 's3s3', 'locals3', 's3local'],
            'sync': ['local', 'locallocal', 's3'],
            'mb': ['local', 'locallocal', 's3s3', 'locals3', 's3local'],
            'rb': ['local', 'locallocal', 's3s3', 'locals3', 's3local']
        }
        s3_file = 's3://' + self.bucket + '/' + 'text1.txt'
        local_file = self.loc_files[0]

        combos = {
            's3s3': [s3_file, s3_file],
            's3local': [s3_file, local_file],
            'locals3': [local_file, s3_file],
            's3': [s3_file],
            'local': [local_file],
            'locallocal': [local_file, local_file]
        }

        for cmd in cmds.keys():
            cmd_param = CommandParameters(cmd, {}, '')
            cmd_param.add_region(mock.Mock())
            wrong_paths = cmds[cmd]
            for path_args in wrong_paths:
                with self.assertRaises(TypeError):
                    cmd_param.check_path_type(combos[path_args])
예제 #16
0
    def test_check_src_path_pass(self):
        # This tests to see if all of the checks on the source path works.  It
        # does so by testing if s3 objects and and prefixes exist as well as
        # local files and directories.  All of these should not throw an
        # exception.
        s3_file = 's3://' + self.bucket + '/' + 'text1.txt'
        local_file = self.loc_files[0]
        s3_prefix = 's3://' + self.bucket
        local_dir = self.loc_files[3]

        # :var files: a list of tuples where the first element is a single
        #     element list of file paths. The second element is a boolean
        #     representing if the operation is a directory operation.
        files = [([s3_file], False), ([local_file], False),
                 ([s3_prefix], True), ([local_dir], True)]

        parameters = {}
        for filename in files:
            parameters['dir_op'] = filename[1]
            cmd_parameter = CommandParameters('put', parameters, '')
            cmd_parameter.add_region(mock.Mock())
            cmd_parameter.check_src_path(filename[0])
예제 #17
0
    def test_check_src_path_pass(self):
        # This tests to see if all of the checks on the source path works.  It
        # does so by testing if s3 objects and and prefixes exist as well as
        # local files and directories.  All of these should not throw an
        # exception.
        s3_file = 's3://' + self.bucket + '/' + 'text1.txt'
        local_file = self.loc_files[0]
        s3_prefix = 's3://' + self.bucket
        local_dir = self.loc_files[3]

        # :var files: a list of tuples where the first element is a single
        #     element list of file paths. The second element is a boolean
        #     representing if the operation is a directory operation.
        files = [([s3_file], False), ([local_file], False),
                 ([s3_prefix], True), ([local_dir], True)]

        parameters = {}
        for filename in files:
            parameters['dir_op'] = filename[1]
            cmd_parameter = CommandParameters('put', parameters, '')
            cmd_parameter.add_region(mock.Mock())
            cmd_parameter.check_src_path(filename[0])
예제 #18
0
 def test_add_path_for_non_existsent_local_path_download(self):
     non_existent_path = os.path.join(self.file_creator.rootdir, 'foo')
     paths = ['s3://bucket', non_existent_path]
     cmd_param = CommandParameters('cp', {'dir_op': True}, '')
     cmd_param.add_paths(paths)
     self.assertTrue(os.path.exists(non_existent_path))
예제 #19
0
 def test_validate_streaming_paths_error(self):
     parameters = {'src': '-', 'dest': 's3://bucket'}
     cmd_params = CommandParameters('sync', parameters, '')
     with self.assertRaises(ValueError):
         cmd_params._validate_streaming_paths()
예제 #20
0
 def test_add_path_for_non_existsent_local_path_download(self):
     non_existent_path = os.path.join(self.file_creator.rootdir, 'foo')
     paths = ['s3://bucket', non_existent_path]
     cmd_param = CommandParameters('cp', {'dir_op': True}, '')
     cmd_param.add_paths(paths)
     self.assertTrue(os.path.exists(non_existent_path))
예제 #21
0
 def test_validate_no_streaming_paths(self):
     parameters = {'src': 'localfile', 'dest': 's3://bucket'}
     cmd_params = CommandParameters(self.session, 'cp', parameters, '')
     cmd_params._validate_streaming_paths()
     self.assertFalse(cmd_params.parameters['is_stream'])
예제 #22
0
 def test_validate_no_streaming_paths(self):
     parameters = {'src': 'localfile', 'dest': 's3://bucket'}
     cmd_params = CommandParameters('cp', parameters, '')
     cmd_params._validate_streaming_paths()
     self.assertFalse(cmd_params.parameters['is_stream'])
예제 #23
0
 def test_validate_no_streaming_paths(self):
     paths = [self.file_creator.rootdir, 's3://bucket']
     cmd_params = CommandParameters('cp', {}, '')
     cmd_params.add_paths(paths)
     self.assertFalse(cmd_params.parameters['is_stream'])
예제 #24
0
 def test_validate_streaming_paths_error(self):
     parameters = {'src': '-', 'dest': 's3://bucket'}
     cmd_params = CommandParameters('sync', parameters, '')
     with self.assertRaises(ValueError):
         cmd_params._validate_streaming_paths()
예제 #25
0
 def test_validate_non_existent_local_path_upload(self):
     non_existent_path = os.path.join(self.file_creator.rootdir, 'foo')
     paths = [non_existent_path, 's3://bucket/']
     cmd_param = CommandParameters('cp', {}, '')
     with self.assertRaises(RuntimeError):
         cmd_param.add_paths(paths)
예제 #26
0
 def test_validate_non_existent_local_path_upload(self):
     non_existent_path = os.path.join(self.file_creator.rootdir, 'foo')
     paths = [non_existent_path, 's3://bucket/']
     cmd_param = CommandParameters('cp', {}, '')
     with self.assertRaises(RuntimeError):
         cmd_param.add_paths(paths)
예제 #27
0
 def test_validate_no_streaming_paths(self):
     paths = [self.file_creator.rootdir, 's3://bucket']
     cmd_params = CommandParameters('cp', {}, '')
     cmd_params.add_paths(paths)
     self.assertFalse(cmd_params.parameters['is_stream'])
예제 #28
0
 def test_validate_sse_c_args_missing_sse(self):
     paths = ['s3://bucket/foo', 's3://bucket/bar']
     params = {'dir_op': False, 'sse_c_key': 'foo'}
     cmd_param = CommandParameters('cp', params, '')
     with self.assertRaisesRegex(ValueError, '--sse-c must be specified'):
         cmd_param.add_paths(paths)