Skip to content

Commit

Permalink
Merge branch 'feature/filesystem-folder-name' into develop
Browse files Browse the repository at this point in the history
 [SVCS-496]
 Closes: #281
 Closes: #308
  • Loading branch information
felliott committed Jan 3, 2018
2 parents fa72951 + a4df848 commit cae41fc
Show file tree
Hide file tree
Showing 2 changed files with 127 additions and 4 deletions.
129 changes: 126 additions & 3 deletions tests/providers/filesystem/test_metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,24 @@ def file_metadata():
'modified': 'Wed, 20 Sep 2017 15:16:02 +0000'
}

@pytest.fixture
def root_metadata():
return {
'path': os.path.join('/')
}

@pytest.fixture
def folder_metadata():
return {
'path': os.path.join('/', 'folder1/')
}

@pytest.fixture
def subfolder_metadata():
return {
'path': os.path.join('/', 'folder1/', 'folder2/')
}


class TestMetadata:

Expand Down Expand Up @@ -97,10 +108,64 @@ def test_file_metadata(self, file_metadata):
'filesystem/code/website/osfstoragecache/77094244-aa24-48da-9437-d8ce6f7a94e9')
}

def test_root_metadata(self, root_metadata):
data = FileSystemFolderMetadata(root_metadata, '')
assert data.path == '/'
assert data.name == ''
assert data.provider == 'filesystem'
assert data.build_path('') == '/'
assert data.materialized_path == '/'
assert data.is_folder is True
assert data.children is None
assert data.kind == 'folder'
assert data.etag is None
assert data.serialized() == {
'extra': {},
'kind': 'folder',
'name': '',
'path': '/',
'provider': 'filesystem',
'materialized': '/',
'etag': '6a2b72b88f67692ff6f4cc3a52798cdc54a6e7c7e6dcbf8463fcb5105b6b949e'
}

assert data.json_api_serialized('7ycmyr') == {
'id': 'filesystem/',
'type': 'files',
'attributes': {
'extra': {},
'kind': 'folder',
'name': '',
'path': '/',
'provider': 'filesystem',
'materialized': '/',
'etag': '6a2b72b88f67692ff6f4cc3a52798cdc54a6e7c7e6dcbf8463fcb5105b6b949e',
'resource': '7ycmyr',
'size': None
},
'links': {
'move': 'http://localhost:7777/v1/resources/7ycmyr/providers/filesystem/',
'upload': ('http://localhost:7777/v1/resources/'
'7ycmyr/providers/filesystem/?kind=file'),
'delete': 'http://localhost:7777/v1/resources/7ycmyr/providers/filesystem/',
'new_folder': ('http://localhost:7777/v1/resources/'
'7ycmyr/providers/filesystem/?kind=folder')
}
}

assert data._json_api_links('cn42d') == {
'move': 'http://localhost:7777/v1/resources/cn42d/providers/filesystem/',
'upload': ('http://localhost:7777/v1/resources/'
'cn42d/providers/filesystem/?kind=file'),
'delete': 'http://localhost:7777/v1/resources/cn42d/providers/filesystem/',
'new_folder': ('http://localhost:7777/v1/resources/'
'cn42d/providers/filesystem/?kind=folder')
}

def test_folder_metadata(self, folder_metadata):
data = FileSystemFolderMetadata(folder_metadata, '/')
assert data.path == '/folder1/'
assert data.name == ''
assert data.name == 'folder1'
assert data.provider == 'filesystem'
assert data.build_path('') == '/'
assert data.materialized_path == '/folder1/'
Expand All @@ -111,7 +176,7 @@ def test_folder_metadata(self, folder_metadata):
assert data.serialized() == {
'extra': {},
'kind': 'folder',
'name': '',
'name': 'folder1',
'path': '/folder1/',
'provider': 'filesystem',
'materialized': '/folder1/',
Expand All @@ -124,7 +189,7 @@ def test_folder_metadata(self, folder_metadata):
'attributes': {
'extra': {},
'kind': 'folder',
'name': '',
'name': 'folder1',
'path': '/folder1/',
'provider': 'filesystem',
'materialized': '/folder1/',
Expand All @@ -150,3 +215,61 @@ def test_folder_metadata(self, folder_metadata):
'new_folder': ('http://localhost:7777/v1/resources/'
'cn42d/providers/filesystem/folder1/?kind=folder')
}

def test_subfolder_metadata(self, subfolder_metadata):
data = FileSystemFolderMetadata(subfolder_metadata, '/')
assert data.path == '/folder1/folder2/'
assert data.name == 'folder2'
assert data.provider == 'filesystem'
assert data.build_path('') == '/'
assert data.materialized_path == '/folder1/folder2/'
assert data.is_folder is True
assert data.children is None
assert data.kind == 'folder'
assert data.etag is None
assert data.serialized() == {
'extra': {},
'kind': 'folder',
'name': 'folder2',
'path': '/folder1/folder2/',
'provider': 'filesystem',
'materialized': '/folder1/folder2/',
'etag': '6a2b72b88f67692ff6f4cc3a52798cdc54a6e7c7e6dcbf8463fcb5105b6b949e'
}

assert data.json_api_serialized('7ycmyr') == {
'id': 'filesystem/folder1/folder2/',
'type': 'files',
'attributes': {
'extra': {},
'kind': 'folder',
'name': 'folder2',
'path': '/folder1/folder2/',
'provider': 'filesystem',
'materialized': '/folder1/folder2/',
'etag': '6a2b72b88f67692ff6f4cc3a52798cdc54a6e7c7e6dcbf8463fcb5105b6b949e',
'resource': '7ycmyr',
'size': None
},
'links': {
'move': 'http://localhost:7777/v1/resources/7ycmyr/providers/filesystem/'
'folder1/folder2/',
'upload': ('http://localhost:7777/v1/resources/'
'7ycmyr/providers/filesystem/folder1/folder2/?kind=file'),
'delete': 'http://localhost:7777/v1/resources/7ycmyr/providers/filesystem/'
'folder1/folder2/',
'new_folder': ('http://localhost:7777/v1/resources/'
'7ycmyr/providers/filesystem/folder1/folder2/?kind=folder')
}
}

assert data._json_api_links('cn42d') == {
'move': 'http://localhost:7777/v1/resources/cn42d/providers/filesystem'
'/folder1/folder2/',
'upload': ('http://localhost:7777/v1/resources/'
'cn42d/providers/filesystem/folder1/folder2/?kind=file'),
'delete': 'http://localhost:7777/v1/resources/cn42d/providers/filesystem'
'/folder1/folder2/',
'new_folder': ('http://localhost:7777/v1/resources/'
'cn42d/providers/filesystem/folder1/folder2/?kind=folder')
}
2 changes: 1 addition & 1 deletion waterbutler/providers/filesystem/metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class FileSystemFolderMetadata(BaseFileSystemMetadata, metadata.BaseFolderMetada

@property
def name(self):
return os.path.split(self.raw['path'])[1]
return os.path.split(self.raw['path'].rstrip('/'))[1]

@property
def path(self):
Expand Down

0 comments on commit cae41fc

Please sign in to comment.