Add tests for user files endpoint and add regex filter

This commit is contained in:
Joseph Schorr 2017-04-21 16:13:18 -04:00
parent 4bb725dce0
commit 5bba018009
2 changed files with 61 additions and 22 deletions

View file

@ -1,15 +1,53 @@
import pytest
from data.userfiles import DelegateUserfiles
from mock import Mock
from io import BytesIO
@pytest.mark.parametrize('path,expected', [
('foo', 'test/foo'),
('bar', 'test/bar'),
('/bar', 'test/bar'),
('../foo', 'test/foo'),
('foo/bar/baz', 'test/baz'),
('foo/../baz', 'test/baz'),
from data.userfiles import DelegateUserfiles, Userfiles
from test.fixtures import app, appconfig, database_uri, init_db_path, sqlitedb_file
@pytest.mark.parametrize('prefix,path,expected', [
('test', 'foo', 'test/foo'),
('test', 'bar', 'test/bar'),
('test', '/bar', 'test/bar'),
('test', '../foo', 'test/foo'),
('test', 'foo/bar/baz', 'test/baz'),
('test', 'foo/../baz', 'test/baz'),
(None, 'foo', 'foo'),
(None, 'foo/bar/baz', 'baz'),
])
def test_filepath(path, expected):
userfiles = DelegateUserfiles(None, None, 'local_us', 'test')
def test_filepath(prefix, path, expected):
userfiles = DelegateUserfiles(None, None, 'local_us', prefix)
assert userfiles.get_file_id_path(path) == expected
def test_lookup_userfile(app, client):
uuid = 'deadbeef-dead-beef-dead-beefdeadbeef'
bad_uuid = 'deadduck-dead-duck-dead-duckdeadduck'
upper_uuid = 'DEADBEEF-DEAD-BEEF-DEAD-BEEFDEADBEEF'
def _stream_read_file(locations, path):
if path.find(uuid) > 0 or path.find(upper_uuid) > 0:
return BytesIO("hello world")
raise IOError('Not found!')
storage_mock = Mock()
storage_mock.stream_read_file = _stream_read_file
app.config['USERFILES_PATH'] = 'foo'
Userfiles(app, distributed_storage=storage_mock)
rv = client.open('/userfiles/' + uuid, method='GET')
assert rv.status_code == 200
rv = client.open('/userfiles/' + upper_uuid, method='GET')
assert rv.status_code == 200
rv = client.open('/userfiles/' + bad_uuid, method='GET')
assert rv.status_code == 404
rv = client.open('/userfiles/foo/bar/baz', method='GET')
assert rv.status_code == 404