diff --git a/tests/providers/osfstorage/fixtures.py b/tests/providers/osfstorage/fixtures.py index ca9e76b1b0..eb82270525 100644 --- a/tests/providers/osfstorage/fixtures.py +++ b/tests/providers/osfstorage/fixtures.py @@ -95,6 +95,11 @@ def folder_children_metadata(): with open(os.path.join(os.path.dirname(__file__), 'fixtures/root_provider.json')) as fp: return json.load(fp)['folder_children_metadata'] +@pytest.fixture +def folder_children_metadata_minimal(): + with open(os.path.join(os.path.dirname(__file__), 'fixtures/root_provider.json')) as fp: + return json.load(fp)['folder_children_metadata_minimal'] + @pytest.fixture def download_response(): diff --git a/tests/providers/osfstorage/fixtures/root_provider.json b/tests/providers/osfstorage/fixtures/root_provider.json index 1907f27b4c..7c62c0875a 100644 --- a/tests/providers/osfstorage/fixtures/root_provider.json +++ b/tests/providers/osfstorage/fixtures/root_provider.json @@ -66,6 +66,32 @@ "latestVersionSeen": null } ], + "folder_children_metadata_minimal": [ + { + "id": "59c0054cb7d1c90114c456af", + "kind": "folder", + "name": "New Folder", + "path": "/59c0054cb7d1c90114c456af/" + }, + { + "id": "59a9b637b7d1c903ab5a8f58", + "kind": "file", + "name": "one", + "path": "/59a9b637b7d1c903ab5a8f58" + }, + { + "id": "59a9b628b7d1c903ab5a8f52", + "kind": "file", + "name": "doc.rst", + "path": "/59a9b628b7d1c903ab5a8f52" + }, + { + "id": "59a5adb9b7d1c901cd40f0e9", + "kind": "file", + "name": "video.mp4", + "path": "/59a5adb9b7d1c901cd40f0e9" + } + ], "file_metadata": { "checkout": null, "contentType": null, diff --git a/tests/providers/osfstorage/test_provider.py b/tests/providers/osfstorage/test_provider.py index c6b3f50dff..a3d0117e16 100644 --- a/tests/providers/osfstorage/test_provider.py +++ b/tests/providers/osfstorage/test_provider.py @@ -24,7 +24,7 @@ file_lineage, file_metadata, file_metadata_object, file_path, folder_lineage, folder_metadata, - folder_children_metadata, folder_path, + folder_children_metadata, folder_children_metadata_minimal, folder_path, revisions_metadata, revision_metadata_object, download_response, download_path, upload_response, upload_path, root_path, @@ -210,7 +210,7 @@ async def test_delete_folder_contents(self, provider_one, file_path, folder_path children_url, params = build_signed_url_without_auth(provider_one, 'GET', folder_path.identifier, 'children', - user_id=provider_one.auth['id']) + user_id=provider_one.auth['id'], minimal=False) aiohttpretty.register_json_uri('GET', children_url, params=params, status=200, body=folder_children_metadata) @@ -227,7 +227,7 @@ class TestMetadata: async def test_provider_metadata_empty(self, provider_one, folder_path, mock_time): url, params = build_signed_url_without_auth(provider_one, 'GET', folder_path.identifier, - 'children', user_id=provider_one.auth['id']) + 'children', user_id=provider_one.auth['id'], minimal=False) aiohttpretty.register_json_uri('GET', url, params=params, status_code=200, body=[]) res = await provider_one.metadata(folder_path) @@ -241,7 +241,7 @@ async def test_provider_metadata_folder(self, provider_one, folder_path, folder_children_metadata, mock_time): url, params = build_signed_url_without_auth(provider_one, 'GET', folder_path.identifier, - 'children', user_id=provider_one.auth['id']) + 'children', user_id=provider_one.auth['id'], minimal=False) aiohttpretty.register_json_uri('GET', url, params=params, status=200, body=folder_children_metadata) @@ -276,7 +276,7 @@ async def test_provider_metadata_without_id(self, provider_one, folder_path, folder_children_metadata, mock_time): url, params = build_signed_url_without_auth(provider_one, 'GET', folder_path.identifier, - 'children') + 'children', minimal=False) aiohttpretty.register_json_uri('GET', url, params=params, status=200, body=folder_children_metadata) folder_path._parts[-1]._id = None @@ -732,7 +732,7 @@ async def test_validate_path_404s(self, provider_one, file_lineage, mock_time): async def test_revalidate_path_new(self, provider_one, folder_path, folder_children_metadata, mock_time): url, params = build_signed_url_without_auth(provider_one, 'GET', folder_path.identifier, - 'children', user_id=provider_one.auth['id']) + 'children', user_id=provider_one.auth['id'], minimal=False) aiohttpretty.register_json_uri('GET', url, params=params, status=200, body=folder_children_metadata) @@ -745,7 +745,7 @@ async def test_revalidate_path_new(self, provider_one, folder_path, folder_child async def test_revalidate_path_existing(self, provider_one, folder_path, folder_children_metadata, mock_time): url, params = build_signed_url_without_auth(provider_one, 'GET', folder_path.identifier, - 'children', user_id=provider_one.auth['id']) + 'children', user_id=provider_one.auth['id'], minimal=False) aiohttpretty.register_json_uri('GET', url, params=params, status=200, body=folder_children_metadata) @@ -1253,3 +1253,21 @@ async def test_intra_copy_reject_by_quota(self, provider_one, auth, credentials, src_provider.can_intra_copy.assert_called_once_with(dst_provider, src_path) src_provider.intra_copy.assert_not_called() src_provider.download.assert_not_called() + +class TestMinimalMetadataDAZ: + + @pytest.mark.asyncio + @pytest.mark.aiohttpretty + async def test_minimal_metadata(self, provider_one, folder_path, folder_children_metadata_minimal): + + url, params = build_signed_url_without_auth(provider_one, 'GET', folder_path.identifier, + 'children', user_id=provider_one.auth['id'], minimal=True) + aiohttpretty.register_json_uri('GET', url, params=params, status=200, + body=folder_children_metadata_minimal) + + metadata = await provider_one.metadata(folder_path, minimal=True) + + assert [type(metadata_item) for metadata_item in metadata] == [OsfStorageFolderMetadata, OsfStorageFileMetadata, OsfStorageFileMetadata, OsfStorageFileMetadata] + assert [metadata_item.name for metadata_item in metadata] == ['New Folder', 'one', 'doc.rst', 'video.mp4'] + assert [metadata_item.path for metadata_item in metadata] == ['/59c0054cb7d1c90114c456af/', '/59a9b637b7d1c903ab5a8f58', '/59a9b628b7d1c903ab5a8f52', '/59a5adb9b7d1c901cd40f0e9'] + assert [metadata_item.provider for metadata_item in metadata] == ['osfstorage', 'osfstorage', 'osfstorage', 'osfstorage'] diff --git a/waterbutler/providers/osfstorage/provider.py b/waterbutler/providers/osfstorage/provider.py index 11a03d7582..9244737abc 100644 --- a/waterbutler/providers/osfstorage/provider.py +++ b/waterbutler/providers/osfstorage/provider.py @@ -532,7 +532,7 @@ async def _item_metadata(self, path, revision=None): async def _children_metadata(self, path, **kwargs): resp = await self.make_signed_request( 'GET', - self.build_url(path.identifier, 'children', user_id=self.auth.get('id'), minimal=kwargs.get('minimal')), + self.build_url(path.identifier, 'children', user_id=self.auth.get('id'), minimal=kwargs.get('minimal', False)), expects=(200, ) ) resp_json = await resp.json()