예제 #1
0
def test_GoogleColdlineStorage_download_file_missing(capsys):
    local_file_path = 'test_file_to_upload.txt'
    file_path_in_bucket = 'test.txt'

    expected_output = "Could not find provided file: '%s'\n" % file_path_in_bucket

    def download_file(path_bucket, local_path):
        raise google.api_core.exceptions.NotFound("")

    with mock.patch.object(storage, 'Client') as client, mock.patch.object(
            storage, 'Blob') as blob:
        client_mock = mockify_dict({
            'download_blob_to_file': download_file,
            'get_bucket': lambda x: x
        })
        client.return_value = client_mock

        blob.return_value = mockify_dict({'name': file_path_in_bucket})

        gcs = GoogleColdlineStorage("somebucket")
        gcs.download_file(file_path_in_bucket=file_path_in_bucket,
                          file_path_on_disk=local_file_path)

        captured = capsys.readouterr()
        assert captured.out == expected_output
예제 #2
0
def test_GoogleColdlineStorage_download_file():
    local_file_path = 'test_file_to_upload.txt'
    mock_file_content = "# mock file with no real data used to run tests"

    file_path_in_bucket = 'test.txt'

    def download_file(path_bucket, local_path):
        with open(local_file_path, 'w') as f:
            f.write(mock_file_content)

    with mock.patch.object(storage, 'Client') as client, mock.patch.object(
            storage, 'Blob') as blob:
        client_mock = mockify_dict({
            'download_blob_to_file': download_file,
            'get_bucket': lambda x: x
        })
        client.return_value = client_mock

        blob.return_value = mockify_dict({'name': file_path_in_bucket})

        gcs = GoogleColdlineStorage("somebucket")
        gcs.download_file(file_path_in_bucket=file_path_in_bucket,
                          file_path_on_disk=local_file_path)

        with open(local_file_path) as f:
            read_text = f.read()

        if os.path.isfile(local_file_path):
            os.remove(local_file_path)

        assert read_text == mock_file_content
예제 #3
0
def test_GoogleColdlineStorage_delete_file():
    file_path_in_bucket = 'test.txt'

    with mock.patch.object(storage, 'Client') as client:
        mock_blob = mockify_dict({'delete': lambda *args, **kwargs: True})
        mock_bucket = mockify_dict({'blob': lambda x: mock_blob})
        client.return_value = mockify_dict(
            {'get_bucket': lambda x: mock_bucket})

        gcs = GoogleColdlineStorage("somebucket")
        result = gcs.delete_file(file_path_in_bucket=file_path_in_bucket)

        assert result == True
예제 #4
0
def test_GoogleColdlineStorage_list_all_files(capsys):
    expected_out = "test_file0.jpg\ntest_file1.jpg\ntest_file2.jpg\ntest_file3.jpg\ntest_file4.jpg\ntest_file5.jpg" \
                   "\ntest_file6.jpg\ntest_file7.jpg\ntest_file8.jpg\ntest_file9.jpg\n"
    with mock.patch.object(storage, 'Client') as client:
        mock_bucket = mockify_dict({
            'list_blobs':
            lambda:
            [mockify_dict({'name': "test_file%s.jpg" % x}) for x in range(10)]
        })
        client.return_value = mockify_dict(
            {'get_bucket': lambda x: mock_bucket})

        gcs = GoogleColdlineStorage("somebucket")
        gcs.list_files()

        captured = capsys.readouterr()
        assert captured.out == expected_out
예제 #5
0
def test_GoogleColdlineStorage_get_all_files():
    expected_file_list = [
        'test_file0.jpg', 'test_file1.jpg', 'test_file2.jpg', 'test_file3.jpg',
        'test_file4.jpg', 'test_file5.jpg', 'test_file6.jpg', 'test_file7.jpg',
        'test_file8.jpg', 'test_file9.jpg'
    ]

    with mock.patch.object(storage, 'Client') as client:
        mock_bucket = mockify_dict({
            'list_blobs':
            lambda:
            [mockify_dict({'name': "test_file%s.jpg" % x}) for x in range(10)]
        })
        client.return_value = mockify_dict(
            {'get_bucket': lambda x: mock_bucket})

        gcs = GoogleColdlineStorage("somebucket")
        assert gcs.get_files() == expected_file_list
예제 #6
0
def test_GoogleColdlineStorage_upload_file_with_no_bucket_name(capsys):
    local_file_path = 'test_file_to_upload.txt'
    file_path_in_bucket = 'test.txt'

    expected_output = "() {'filename': '%s'}\n" % local_file_path

    with mock.patch.object(storage, 'Client') as client:
        mock_blob = mockify_dict({
            'upload_from_filename':
            lambda *args, **kwargs: print(args, kwargs)
        })
        mock_bucket = mockify_dict({'blob': lambda x: mock_blob})
        client.return_value = mockify_dict(
            {'get_bucket': lambda x: mock_bucket})

        gcs = GoogleColdlineStorage("somebucket")
        gcs.upload_file(file_path_on_disk=local_file_path)

        captured = capsys.readouterr()
        assert captured.out == expected_output
예제 #7
0
def test_GoogleColdlineStorage_delete_file_not_found():
    file_path_in_bucket = 'test.txt'

    with mock.patch.object(storage, 'Client') as client:

        def raise_error(message):
            raise google.api_core.exceptions.NotFound(message)

        mock_blob = mockify_dict({
            'delete':
            lambda *args, **kwargs: raise_error("")
        })
        mock_bucket = mockify_dict({'blob': lambda x: mock_blob})
        client.return_value = mockify_dict(
            {'get_bucket': lambda x: mock_bucket})

        gcs = GoogleColdlineStorage("somebucket")
        result = gcs.delete_file(file_path_in_bucket=file_path_in_bucket)

        assert result == False
예제 #8
0
def test_GoogleColdlineStorage_init_with_missing_bucket():
    def raise_error(message):
        raise google.api_core.exceptions.NotFound(message)

    with mock.patch.object(storage, 'Client') as client:
        client.return_value = mockify_dict({
            'get_bucket': raise_error,
            'create_bucket': lambda x: x
        })

        gcs = GoogleColdlineStorage("somebucket")
        assert type(gcs) == GoogleColdlineStorage
예제 #9
0
def test_env_delete_file_invoked_file_found(monkeypatch):
    try:

        monkeypatch.setattr(coldsync.main, 'gcs', mockify_dict({
            'delete_file': lambda _: True
        }))

        runner = CliRunner()
        file_path = "remote_upload_path.txt"
        result = runner.invoke(delete_file, [file_path])
        assert result.output == "File '%s' removed\n" % file_path

    except SystemExit:
        pass
    except exceptions.DefaultCredentialsError:
        pass
예제 #10
0
def test_env_download_file_invoked(monkeypatch):
    try:

        monkeypatch.setattr(coldsync.main, 'gcs', mockify_dict({
            'download_file': lambda x, y: print('ok')
        }))

        file_name = 'test.txt'
        runner = CliRunner()

        result = runner.invoke(download_file, ["remote_upload_path.txt", file_name])
        print(result)
        assert result.output == "ok\n"

    except SystemExit:
        pass
    except exceptions.DefaultCredentialsError:
        pass
예제 #11
0
def test_env_get_file_list_invoked(monkeypatch):
    expected_file_list = ['test_file0.jpg', 'test_file1.jpg', 'test_file2.jpg', 'test_file3.jpg', 'test_file4.jpg',
                          'test_file5.jpg', 'test_file6.jpg', 'test_file7.jpg', 'test_file8.jpg', 'test_file9.jpg']
    try:
        monkeypatch.setattr(coldsync.main, 'gcs', mockify_dict({
            'get_files': lambda: print(expected_file_list)
        }))

        runner = CliRunner()
        result = runner.invoke(list_files)
        assert result.exit_code == 0
        assert result.output == "['test_file0.jpg', 'test_file1.jpg', 'test_file2.jpg', 'test_file3.jpg', " \
                                "'test_file4.jpg', 'test_file5.jpg', 'test_file6.jpg', 'test_file7.jpg', " \
                                "'test_file8.jpg', 'test_file9.jpg']\nNone\n"

    except SystemExit:
        pass
    except exceptions.DefaultCredentialsError:
        pass
예제 #12
0
def test_env_upload_file_invoked(monkeypatch):
    try:

        monkeypatch.setattr(coldsync.main, 'gcs', mockify_dict({
            'upload_file': lambda _, __: print('ok')
        }))

        file_name = 'test.txt'
        runner = CliRunner()
        with runner.isolated_filesystem():
            with open(file_name, 'w') as f:
                f.write('Hello World!')

            result = runner.invoke(upload_file, [file_name, '--remote_path', "remote_upload_path.txt"])
            assert result.output == "test.txt remote_upload_path.txt\nok\n"

    except SystemExit:
        pass
    except exceptions.DefaultCredentialsError:
        pass
예제 #13
0
def test_GoogleColdlineStorage_init_with_existing_bucket():
    with mock.patch.object(storage, 'Client') as client:
        client.return_value = mockify_dict({'get_bucket': lambda x: x})

        gcs = GoogleColdlineStorage("somebucket")
        assert type(gcs) == GoogleColdlineStorage