|
|
@@ -42,8 +42,10 @@ def test_fs_selection():
|
|
|
with patch('desktop.lib.fs.ProxyFS._has_access') as _has_access:
|
|
|
_has_access.return_value = True
|
|
|
|
|
|
- s3fs, adls, hdfs, abfs, gs = MagicMock(), MagicMock(), MagicMock(), MagicMock(), MagicMock()
|
|
|
- proxy_fs = ProxyFS({'s3a': wrapper(s3fs), 'hdfs': wrapper(hdfs), 'adl': wrapper(adls), 'abfs': wrapper(abfs), 'gs': wrapper(gs)}, 'hdfs')
|
|
|
+ s3fs, adls, hdfs, abfs, gs, ofs = MagicMock(), MagicMock(), MagicMock(), MagicMock(), MagicMock(), MagicMock()
|
|
|
+ proxy_fs = ProxyFS({
|
|
|
+ 's3a': wrapper(s3fs), 'hdfs': wrapper(hdfs), 'adl': wrapper(adls), 'abfs': wrapper(abfs), 'gs': wrapper(gs), 'ofs': wrapper(ofs)},
|
|
|
+ 'hdfs')
|
|
|
proxy_fs.setuser(user)
|
|
|
|
|
|
proxy_fs.isdir('s3a://bucket/key')
|
|
|
@@ -66,6 +68,10 @@ def test_fs_selection():
|
|
|
gs.isdir.assert_called_once_with('gs://net/key')
|
|
|
assert_false(hdfs.isdir.called)
|
|
|
|
|
|
+ proxy_fs.isdir('ofs://volume/bucket/key')
|
|
|
+ ofs.isdir.assert_called_once_with('ofs://volume/bucket/key')
|
|
|
+ assert_false(hdfs.isdir.called)
|
|
|
+
|
|
|
assert_raises(IOError, proxy_fs.stats, 'ftp://host')
|
|
|
|
|
|
def wrapper(mock):
|
|
|
@@ -81,8 +87,10 @@ def test_multi_fs_selection():
|
|
|
with patch('desktop.lib.fs.ProxyFS._has_access') as _has_access:
|
|
|
_has_access.return_value = True
|
|
|
|
|
|
- s3fs, adls, hdfs, abfs, gs = MagicMock(), MagicMock(), MagicMock(), MagicMock(), MagicMock()
|
|
|
- proxy_fs = ProxyFS({'s3a': wrapper(s3fs), 'hdfs': wrapper(hdfs), 'adl': wrapper(adls), 'abfs': wrapper(abfs), 'gs': wrapper(gs)}, 'hdfs')
|
|
|
+ s3fs, adls, hdfs, abfs, gs, ofs = MagicMock(), MagicMock(), MagicMock(), MagicMock(), MagicMock(), MagicMock()
|
|
|
+ proxy_fs = ProxyFS({
|
|
|
+ 's3a': wrapper(s3fs), 'hdfs': wrapper(hdfs), 'adl': wrapper(adls), 'abfs': wrapper(abfs), 'gs': wrapper(gs), 'ofs': wrapper(ofs)},
|
|
|
+ 'hdfs')
|
|
|
proxy_fs.setuser(user)
|
|
|
|
|
|
proxy_fs.copy('s3a://bucket1/key', 's3a://bucket2/key')
|
|
|
@@ -109,8 +117,12 @@ def test_multi_fs_selection():
|
|
|
gs.copyfile.assert_called_once_with('gs://bucket/key', 'key2')
|
|
|
assert_false(hdfs.copyfile.called)
|
|
|
|
|
|
- # Will be addressed in HUE-2934
|
|
|
- assert_raises(NotImplementedError, proxy_fs.copy_remote_dir, 's3a://bucket/key', 'adl://tmp/dir') # Exception can only be thrown if scheme is specified, else default to 1st scheme
|
|
|
+ proxy_fs.copyfile('ofs://volume/bucket/key', 'key2')
|
|
|
+ ofs.copyfile.assert_called_once_with('ofs://volume/bucket/key', 'key2')
|
|
|
+ assert_false(hdfs.copyfile.called)
|
|
|
+
|
|
|
+ # Exception can only be thrown if scheme is specified, else default to 1st scheme
|
|
|
+ assert_raises(NotImplementedError, proxy_fs.copy_remote_dir, 's3a://bucket/key', 'adl://tmp/dir')
|
|
|
|
|
|
|
|
|
def test_constructor_given_invalid_arguments():
|
|
|
@@ -136,8 +148,12 @@ class TestFsPermissions(object):
|
|
|
user_client = make_logged_in_client(username='test', groupname='default', recreate=True, is_superuser=False)
|
|
|
user = User.objects.get(username='test')
|
|
|
|
|
|
- s3fs, adls, hdfs, abfs, gs = MockFs("s3_access"), MockFs("adls_access"), MockFs(), MockFs("abfs_access"), MockFs("gs_access")
|
|
|
- proxy_fs = ProxyFS({'s3a': wrapper(s3fs), 'hdfs': wrapper(hdfs), 'adl': wrapper(adls), 'abfs': wrapper(abfs), 'gs': wrapper(gs)}, 'hdfs')
|
|
|
+ s3fs, adls, hdfs = MockFs("s3_access"), MockFs("adls_access"), MockFs()
|
|
|
+ abfs, gs, ofs = MockFs("abfs_access"), MockFs("gs_access"), MockFs("ofs_access")
|
|
|
+
|
|
|
+ proxy_fs = ProxyFS({
|
|
|
+ 's3a': wrapper(s3fs), 'hdfs': wrapper(hdfs), 'adl': wrapper(adls), 'abfs': wrapper(abfs), 'gs': wrapper(gs), 'ofs': wrapper(ofs)},
|
|
|
+ 'hdfs')
|
|
|
proxy_fs.setuser(user)
|
|
|
|
|
|
f = proxy_fs._get_fs
|
|
|
@@ -146,6 +162,7 @@ class TestFsPermissions(object):
|
|
|
remove_from_group(user.username, 'has_adls')
|
|
|
remove_from_group(user.username, 'has_abfs')
|
|
|
remove_from_group(user.username, 'has_gs')
|
|
|
+ remove_from_group(user.username, 'has_ofs')
|
|
|
|
|
|
# No perms by default
|
|
|
assert_raises(Exception, f, 's3a://bucket')
|
|
|
@@ -154,6 +171,7 @@ class TestFsPermissions(object):
|
|
|
assert_raises(Exception, f, 'adl:/key')
|
|
|
assert_raises(Exception, f, 'abfs:/key')
|
|
|
assert_raises(Exception, f, 'gs://bucket/key')
|
|
|
+ assert_raises(Exception, f, 'ofs://volume/bucket/key')
|
|
|
f('hdfs://path')
|
|
|
f('/tmp')
|
|
|
|
|
|
@@ -163,6 +181,7 @@ class TestFsPermissions(object):
|
|
|
add_permission('test', 'has_adls', permname='adls_access', appname='filebrowser')
|
|
|
add_permission('test', 'has_abfs', permname='abfs_access', appname='filebrowser')
|
|
|
add_permission('test', 'has_gs', permname='gs_access', appname='filebrowser')
|
|
|
+ add_permission('test', 'has_ofs', permname='ofs_access', appname='filebrowser')
|
|
|
|
|
|
f('s3a://bucket')
|
|
|
f('S3A://bucket/key')
|
|
|
@@ -172,18 +191,24 @@ class TestFsPermissions(object):
|
|
|
f('hdfs://path')
|
|
|
f('/tmp')
|
|
|
f('gs://bucket')
|
|
|
+ f('ofs://volume/bucket/key')
|
|
|
finally:
|
|
|
remove_from_group(user.username, 'has_s3')
|
|
|
remove_from_group(user.username, 'has_adls')
|
|
|
remove_from_group(user.username, 'has_abfs')
|
|
|
remove_from_group(user.username, 'has_gs')
|
|
|
+ remove_from_group(user.username, 'has_ofs')
|
|
|
|
|
|
def test_fs_permissions_admin_user(self):
|
|
|
user_client = make_logged_in_client(username='admin', groupname='default', recreate=True, is_superuser=True)
|
|
|
user = User.objects.get(username='admin')
|
|
|
|
|
|
- s3fs, adls, hdfs, abfs, gs = MockFs("s3_access"), MockFs("adls_access"), MockFs(), MockFs("abfs_access"), MockFs("gs_access")
|
|
|
- proxy_fs = ProxyFS({'s3a': wrapper(s3fs), 'hdfs': wrapper(hdfs), 'adl': wrapper(adls), 'abfs': wrapper(abfs), 'gs': wrapper(gs)}, 'hdfs')
|
|
|
+ s3fs, adls, hdfs = MockFs("s3_access"), MockFs("adls_access"), MockFs()
|
|
|
+ abfs, gs, ofs = MockFs("abfs_access"), MockFs("gs_access"), MockFs("ofs_access")
|
|
|
+
|
|
|
+ proxy_fs = ProxyFS({
|
|
|
+ 's3a': wrapper(s3fs), 'hdfs': wrapper(hdfs), 'adl': wrapper(adls), 'abfs': wrapper(abfs), 'gs': wrapper(gs), 'ofs': wrapper(ofs)},
|
|
|
+ 'hdfs')
|
|
|
proxy_fs.setuser(user)
|
|
|
|
|
|
f = proxy_fs._get_fs
|
|
|
@@ -196,3 +221,5 @@ class TestFsPermissions(object):
|
|
|
f('hdfs://path')
|
|
|
f('/tmp')
|
|
|
f('gs://bucket/key')
|
|
|
+ f('ofs://volume/bucket/key')
|
|
|
+
|