Exemple #1
0
def test_path(app, mock_backend):
    storage = fs.Storage('test')
    backend = mock_backend.return_value
    backend.root = '/root'

    app.configure(storage)
    assert storage.path('file.test') == '/root/file.test'
def test_url(app):
    storage = fs.Storage('test')

    app.configure(storage)

    expected_url = url_for('fs.get_file', fs=storage.name, filename='test.txt')
    assert storage.url('test.txt') == expected_url
Exemple #3
0
def test_read(app, mock_backend):
    storage = fs.Storage('test')
    app.configure(storage)

    backend = mock_backend.return_value
    backend.read.return_value = 'content'

    assert storage.read('file.test') == 'content'
Exemple #4
0
def test_no_root(app, mock_backend):
    storage = fs.Storage('test')
    backend = mock_backend.return_value
    backend.root = None

    app.configure(storage, SERVER_NAME='somewhere')

    assert storage.root is None
Exemple #5
0
def test_list_files(app, mock_backend):
    storage = fs.Storage('test')
    backend = mock_backend.return_value
    backend.list_files.return_value = ['one.txt']

    app.configure(storage)

    assert storage.list_files() == ['one.txt']
Exemple #6
0
def test_path_not_supported(app, mock_backend):
    storage = fs.Storage('test')
    backend = mock_backend.return_value
    backend.root = None

    app.configure(storage)

    with pytest.raises(fs.OperationNotSupported):
        storage.path('file.test')
Exemple #7
0
def test_write_file_exists(app, mock_backend):
    storage = fs.Storage('test')
    app.configure(storage)

    backend = mock_backend.return_value
    backend.exists.return_value = True

    with pytest.raises(fs.FileExists):
        storage.write('file.test', 'content')
Exemple #8
0
def test_read_not_found(app, mock_backend):
    storage = fs.Storage('test')
    app.configure(storage)

    backend = mock_backend.return_value
    backend.exists.return_value = False

    with pytest.raises(fs.FileNotFound):
        storage.read('file.test')
Exemple #9
0
def test_write_overwritable(app, mock_backend):
    storage = fs.Storage('test', overwrite=True)
    app.configure(storage)

    backend = mock_backend.return_value

    storage.write('file.test', 'content')

    backend.write.assert_called_with('file.test', 'content')
Exemple #10
0
def test_write(app, mock_backend):
    storage = fs.Storage('test')
    app.configure(storage)

    backend = mock_backend.return_value
    backend.exists.return_value = False

    storage.write('file.test', 'content')
    backend.exists.assert_called_with('file.test')
    backend.write.assert_called_with('file.test', 'content')
Exemple #11
0
def test_delete(app, mock_backend):
    storage = fs.Storage('test')

    app.configure(storage)

    backend = mock_backend.return_value

    storage.delete('test.txt')

    backend.delete.assert_called_with('test.txt')
Exemple #12
0
def test_open(app, mock_backend):
    storage = fs.Storage('test')
    app.configure(storage)

    backend = mock_backend.return_value
    backend.open.return_value = io.StringIO('content')

    with storage.open('file.test') as f:
        assert f.read() == 'content'

    backend.open.assert_called_with('file.test', 'r')
Exemple #13
0
def test_open_write_new_file(app, mock_backend):
    storage = fs.Storage('test')
    app.configure(storage)

    backend = mock_backend.return_value
    backend.open.return_value = io.StringIO('content')

    with storage.open('file.test', 'w') as f:
        f.write('test')

    backend.open.assert_called_with('file.test', 'w')
def test_get_file_not_found(app, mock_backend):
    storage = fs.Storage('test')
    backend = mock_backend.return_value
    backend.exists.return_value = False

    app.configure(storage)

    file_url = url_for('fs.get_file', fs='test', filename='test.txt')

    response = app.test_client().get(file_url)
    assert response.status_code == 404
Exemple #15
0
def test_save_file_exists(app, mock_backend, utils, faker):
    storage = fs.Storage('test')
    app.configure(storage)

    f = utils.file(faker.binary())

    backend = mock_backend.return_value
    backend.exists.return_value = True

    with pytest.raises(fs.FileExists):
        storage.save(f, 'test.png')
Exemple #16
0
def test_url(app):
    storage = fs.Storage('test')

    app.configure(storage)

    params = {'fs': storage.name, 'filename': 'test.txt'}
    expected_url = url_for('fs.get_file', **params)
    assert storage.url('test.txt') == expected_url

    params['_external'] = True
    expected_url = url_for('fs.get_file', **params)
    assert storage.url('test.txt', external=True) == expected_url
Exemple #17
0
def test_exists(app, mock_backend):
    storage = fs.Storage('test')
    app.configure(storage)

    backend = mock_backend.return_value

    backend.exists.return_value = True
    assert storage.exists('file.test')
    backend.exists.assert_called_with('file.test')

    backend.exists.return_value = False
    assert not storage.exists('other.test')
Exemple #18
0
def test_url_from_config_with_scheme(app):
    http = fs.Storage('http')
    https = fs.Storage('https')

    app.configure(http,
                  https,
                  HTTP_FS_URL='http://somewhere.com/static',
                  HTTPS_FS_URL='https://somewhere.com/static')

    assert http.url('test.txt') == 'http://somewhere.com/static/test.txt'
    assert https.url('test.txt') == 'https://somewhere.com/static/test.txt'

    with app.test_request_context(
            environ_overrides={'wsgi.url_scheme': 'http'}):
        assert http.url('test.txt') == 'http://somewhere.com/static/test.txt'
        assert https.url('test.txt') == 'https://somewhere.com/static/test.txt'

    with app.test_request_context(
            environ_overrides={'wsgi.url_scheme': 'https'}):
        assert http.url('test.txt') == 'http://somewhere.com/static/test.txt'
        assert https.url('test.txt') == 'https://somewhere.com/static/test.txt'
def test_get_file(app, mock_backend):
    storage = fs.Storage('test')
    backend = mock_backend.return_value
    backend.serve.return_value = 'content'.encode('utf-8')

    app.configure(storage)

    file_url = url_for('fs.get_file', fs='test', filename='test.txt')

    response = app.test_client().get(file_url)
    assert response.status_code == 200
    assert response.data == 'content'.encode('utf-8')
 def storage(self, app, tmpdir):
     app.instance_path = str(tmpdir)
     storage = fs.Storage('test', fs.ALL)
     fs.init_app(app, storage)
     db.init_app(app)
     yield storage
     with app.test_request_context():
         db_name = app.config['MONGODB_DB']
         try:
             db.connection.client.drop_database(db_name)
         except TypeError:
             db.connection.drop_database(db_name)
Exemple #21
0
def test_save_from_file(app, mock_backend, utils, faker):
    storage = fs.Storage('test')
    f = utils.file(faker.binary())

    app.configure(storage)

    backend = mock_backend.return_value
    backend.exists.return_value = False

    filename = storage.save(f, 'test.png')

    assert filename == 'test.png'
    backend.save.assert_called_with(f, 'test.png')
Exemple #22
0
def test_save_with_filename(app, mock_backend, utils):
    storage = fs.Storage('test')
    content = 'test'
    wfs = utils.filestorage('test.txt', content)

    app.configure(storage)

    backend = mock_backend.return_value
    backend.exists.return_value = False

    filename = storage.save(wfs, 'other.gif')

    assert filename == 'other.gif'
    backend.save.assert_called_with(wfs, 'other.gif')
Exemple #23
0
def test_save_with_upload_to_and_prefix(app, mock_backend, utils):
    storage = fs.Storage('test', upload_to='upload_to')
    content = 'test'
    wfs = utils.filestorage('test.txt', content)

    app.configure(storage)

    backend = mock_backend.return_value
    backend.exists.return_value = False

    filename = storage.save(wfs, prefix='prefix')

    assert filename == 'upload_to/prefix/test.txt'
    backend.save.assert_called_with(wfs, 'upload_to/prefix/test.txt')
Exemple #24
0
def test_url_from_config_without_scheme(app):
    storage = fs.Storage('test')

    app.configure(storage, TEST_FS_URL='somewhere.com/static')

    assert storage.url('test.txt') == 'http://somewhere.com/static/test.txt'

    with app.test_request_context(
            environ_overrides={'wsgi.url_scheme': 'http'}):
        assert storage.url(
            'test.txt') == 'http://somewhere.com/static/test.txt'

    with app.test_request_context(
            environ_overrides={'wsgi.url_scheme': 'https'}):
        assert storage.url(
            'test.txt') == 'https://somewhere.com/static/test.txt'
Exemple #25
0
def test_metadata(app, mock_backend):
    storage = fs.Storage('test')
    app.configure(storage)

    backend = mock_backend.return_value
    backend.metadata.return_value = {}

    url = url_for('fs.get_file',
                  filename='file.test',
                  fs=storage.name,
                  _external=True)

    metadata = storage.metadata('file.test')
    assert metadata['filename'] == 'file.test'
    assert metadata['url'] == url
    backend.metadata.assert_called_with('file.test')
Exemple #26
0
def test_in_operator(app, mock_backend):
    storage = fs.Storage('test')
    app.configure(storage)

    backend = mock_backend.return_value

    backend.exists.return_value = True
    assert 'file.test' in storage
    assert 'file.test' in storage
    assert backend.exists.call_count == 2
    backend.exists.assert_called_with('file.test')

    backend.exists.reset_mock()
    backend.exists.return_value = False
    assert 'other.test' not in storage
    assert 'other.test' not in storage
    assert backend.exists.call_count == 2
    backend.exists.assert_called_with('other.test')
Exemple #27
0
def test_by_name(app, mock_backend):
    storage = fs.Storage('test_storage')
    app.configure(storage)

    assert fs.by_name('test_storage') == storage