def test_cloud_save_default(name, app_cloud_default, tmpdir, empty_txt):
    filepath = pathlib.Path(tmpdir) / name / "empty.txt"

    assert not filepath.exists()
    bucket = Bucket(name)
    bucket.save(empty_txt, name="empty.txt")
    if name == "photos":
        assert filepath.exists()
    else:
        assert not filepath.exists()
Esempio n. 2
0
def app_local(app, tmpdir):
    app.config.update({"GOOGLE_STORAGE_LOCAL_DEST": str(tmpdir)})

    files = Bucket("files")

    storage = GoogleStorage(files)
    storage.init_app(app)

    files.save(FileStorage(stream=io.BytesIO(b"Foo content"),
                           filename="foo.txt"),
               uuid_name=False)
    files.save(FileStorage(stream=io.BytesIO(b"Bar content"),
                           filename="bar.txt"),
               uuid_name=False)

    return app
Esempio n. 3
0
def app_cloud(google_storage_mock, app, tmpdir):
    app.config.update({
        "GOOGLE_STORAGE_LOCAL_DEST": str(tmpdir),
        "GOOGLE_STORAGE_FILES_BUCKET": "files-bucket",
        "GOOGLE_STORAGE_FILES_DELETE_LOCAL": False,
        "GOOGLE_STORAGE_PHOTOS_BUCKET": "photos-bucket",
    })

    files, photos = Bucket("files"), Bucket("photos")

    storage = GoogleStorage(files, photos)
    storage.init_app(app)

    files.save(FileStorage(stream=io.BytesIO(b"Foo content"),
                           filename="foo.txt"),
               uuid_name=False)
    files.save(FileStorage(stream=io.BytesIO(b"Bar content"),
                           filename="bar.txt"),
               uuid_name=False)

    return app
def test_cloud_save_retry(name, app_cloud_retry, tmpdir, empty_txt,
                          google_bucket_error_mock):
    filepath = pathlib.Path(tmpdir) / name / "empty.txt"

    assert not filepath.exists()

    bucket = Bucket(name)
    if name == "photos":
        with pytest.raises(GoogleCloudError):
            bucket.save(empty_txt)

        calls = [mock.call(filepath), mock.call(filepath)]
        assert google_bucket_error_mock.get_blob(
        ).upload_from_filename.call_count == 2
        assert google_bucket_error_mock.get_blob(
        ).upload_from_filename.has_calls(calls)
    else:
        bucket.save(empty_txt)

        calls = [mock.call(filepath), mock.call(filepath), mock.call(filepath)]
        assert google_bucket_error_mock.get_blob(
        ).upload_from_filename.call_count == 3
        assert google_bucket_error_mock.get_blob(
        ).upload_from_filename.has_calls(calls)
def test_bucket_save_none_allowed(filename):
    bucket = Bucket("files", allows=lambda f, p: False)
    with pytest.raises(NotAllowedUploadError) as e_info:
        bucket.save(FileStorage(filename=filename))

    assert str(e_info.value) == "The given file is not allowed in this bucket"