Beispiel #1
0
    def test_fails(self, mock_makedirs, mock_getsize):
        """Tests calling ScaleFileManager.upload_files() when Workspace.upload_files() fails"""
        def new_getsize(path):
            return 100
        mock_getsize.side_effect = new_getsize

        upload_dir = os.path.join('upload', 'dir')
        work_dir = os.path.join('work', 'dir')

        workspace = storage_test_utils.create_workspace()
        file_1 = ScaleFile()
        file_1.media_type = None  # Scale should auto-detect text/plain
        remote_path_1 = 'my/remote/path/file.txt'
        local_path_1 = 'my/local/path/file.txt'
        file_2 = ScaleFile()
        file_2.media_type = 'application/json'
        remote_path_2 = 'my/remote/path/2/file.json'
        local_path_2 = 'my/local/path/2/file.json'
        workspace.upload_files = MagicMock()
        workspace.upload_files.side_effect = Exception
        workspace.delete_files = MagicMock()
        delete_work_dir = os.path.join(work_dir, 'delete', get_valid_filename(workspace.name))

        files = [(file_1, local_path_1, remote_path_1), (file_2, local_path_2, remote_path_2)]
        self.assertRaises(Exception, ScaleFile.objects.upload_files, upload_dir, work_dir, workspace, files)
Beispiel #2
0
    def test_success(self, mock_getsize):
        """Tests calling ScaleFileManager.upload_files() successfully"""
        def new_getsize(path):
            return 100
        mock_getsize.side_effect = new_getsize

        workspace = storage_test_utils.create_workspace()
        file_1 = ScaleFile()
        file_1.media_type = None  # Scale should auto-detect text/plain
        remote_path_1 = 'my/remote/path/file.txt'
        local_path_1 = 'my/local/path/file.txt'
        file_1.file_path = remote_path_1
        file_2 = ScaleFile()
        file_2.media_type = 'application/json'
        remote_path_2 = 'my/remote/path/2/file.json'
        local_path_2 = 'my/local/path/2/file.json'
        file_2.file_path = remote_path_2
        workspace.upload_files = MagicMock()

        files = [FileUpload(file_1, local_path_1), FileUpload(file_2, local_path_2)]
        models = ScaleFile.objects.upload_files(workspace, files)

        workspace.upload_files.assert_called_once_with([FileUpload(file_1, local_path_1),
                                                        FileUpload(file_2, local_path_2)])

        self.assertEqual('file.txt', models[0].file_name)
        self.assertEqual(remote_path_1, models[0].file_path)
        self.assertEqual('text/plain', models[0].media_type)
        self.assertEqual(workspace.id, models[0].workspace_id)
        self.assertEqual('file.json', models[1].file_name)
        self.assertEqual(remote_path_2, models[1].file_path)
        self.assertEqual('application/json', models[1].media_type)
        self.assertEqual(workspace.id, models[1].workspace_id)
Beispiel #3
0
    def test_success(self, mock_getsize):
        '''Tests calling ScaleFileManager.upload_files() successfully'''
        def new_getsize(path):
            return 100

        mock_getsize.side_effect = new_getsize

        upload_dir = os.path.join('upload', 'dir')
        work_dir = os.path.join('work', 'dir')

        workspace = storage_test_utils.create_workspace()
        file_1 = ScaleFile()
        file_1.media_type = None  # Scale should auto-detect text/plain
        remote_path_1 = u'my/remote/path/file.txt'
        local_path_1 = u'my/local/path/file.txt'
        file_2 = ScaleFile()
        file_2.media_type = u'application/json'
        remote_path_2 = u'my/remote/path/2/file.json'
        local_path_2 = u'my/local/path/2/file.json'
        workspace.upload_files = MagicMock()
        workspace.delete_files = MagicMock()
        workspace_work_dir = ScaleFile.objects._get_workspace_work_dir(
            work_dir, workspace)

        files = [(file_1, local_path_1, remote_path_1),
                 (file_2, local_path_2, remote_path_2)]
        models = ScaleFile.objects.upload_files(upload_dir, work_dir,
                                                workspace, files)

        workspace.upload_files.assert_called_once_with(
            upload_dir, workspace_work_dir, [(local_path_1, remote_path_1),
                                             (local_path_2, remote_path_2)])
        self.assertListEqual(workspace.delete_files.call_args_list, [])

        self.assertEqual(u'file.txt', models[0].file_name)
        self.assertEqual(remote_path_1, models[0].file_path)
        self.assertEqual(u'text/plain', models[0].media_type)
        self.assertEqual(workspace.id, models[0].workspace_id)
        self.assertEqual(u'file.json', models[1].file_name)
        self.assertEqual(remote_path_2, models[1].file_path)
        self.assertEqual(u'application/json', models[1].media_type)
        self.assertEqual(workspace.id, models[1].workspace_id)
Beispiel #4
0
    def test_success(self, mock_getsize):
        """Tests calling ScaleFileManager.upload_files() successfully"""
        def new_getsize(path):
            return 100

        mock_getsize.side_effect = new_getsize

        workspace = storage_test_utils.create_workspace()
        file_1 = ScaleFile()
        file_1.media_type = None  # Scale should auto-detect text/plain
        remote_path_1 = 'my/remote/path/file.txt'
        local_path_1 = 'my/local/path/file.txt'
        file_1.file_path = remote_path_1
        file_2 = ScaleFile()
        file_2.media_type = 'application/json'
        remote_path_2 = 'my/remote/path/2/file.json'
        local_path_2 = 'my/local/path/2/file.json'
        file_2.file_path = remote_path_2
        workspace.upload_files = MagicMock()

        files = [
            FileUpload(file_1, local_path_1),
            FileUpload(file_2, local_path_2)
        ]
        models = ScaleFile.objects.upload_files(workspace, files)

        workspace.upload_files.assert_called_once_with([
            FileUpload(file_1, local_path_1),
            FileUpload(file_2, local_path_2)
        ])

        self.assertEqual('file.txt', models[0].file_name)
        self.assertEqual(remote_path_1, models[0].file_path)
        self.assertEqual('text/plain', models[0].media_type)
        self.assertEqual(workspace.id, models[0].workspace_id)
        self.assertEqual('file.json', models[1].file_name)
        self.assertEqual(remote_path_2, models[1].file_path)
        self.assertEqual('application/json', models[1].media_type)
        self.assertEqual(workspace.id, models[1].workspace_id)
Beispiel #5
0
    def test_success(self, mock_getsize):
        '''Tests calling ScaleFileManager.upload_files() successfully'''
        def new_getsize(path):
            return 100
        mock_getsize.side_effect = new_getsize

        upload_dir = os.path.join('upload', 'dir')
        work_dir = os.path.join('work', 'dir')

        workspace = storage_test_utils.create_workspace()
        file_1 = ScaleFile()
        file_1.media_type = None  # Scale should auto-detect text/plain
        remote_path_1 = u'my/remote/path/file.txt'
        local_path_1 = u'my/local/path/file.txt'
        file_2 = ScaleFile()
        file_2.media_type = u'application/json'
        remote_path_2 = u'my/remote/path/2/file.json'
        local_path_2 = u'my/local/path/2/file.json'
        workspace.upload_files = MagicMock()
        workspace.delete_files = MagicMock()
        workspace_work_dir = ScaleFile.objects._get_workspace_work_dir(work_dir, workspace)

        files = [(file_1, local_path_1, remote_path_1), (file_2, local_path_2, remote_path_2)]
        models = ScaleFile.objects.upload_files(upload_dir, work_dir, workspace, files)

        workspace.upload_files.assert_called_once_with(upload_dir, workspace_work_dir,
                                                       [(local_path_1, remote_path_1), (local_path_2, remote_path_2)])
        self.assertListEqual(workspace.delete_files.call_args_list, [])

        self.assertEqual(u'file.txt', models[0].file_name)
        self.assertEqual(remote_path_1, models[0].file_path)
        self.assertEqual(u'text/plain', models[0].media_type)
        self.assertEqual(workspace.id, models[0].workspace_id)
        self.assertEqual(u'file.json', models[1].file_name)
        self.assertEqual(remote_path_2, models[1].file_path)
        self.assertEqual(u'application/json', models[1].media_type)
        self.assertEqual(workspace.id, models[1].workspace_id)