Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions cterasdk/core/cloudfs.py
Original file line number Diff line number Diff line change
Expand Up @@ -295,15 +295,16 @@ def find(self, name, owner, include=None):
Find a Cloud Drive Folder
:param str name: Name of the Cloud Drive Folder to find
:param cterasdk.core.types.UserAccount owner: Cloud drive folder owner
:param str,cterasdk.core.types.UserAccount owner: Cloud drive folder owner's name or a UserAccount object
:param list[str] include: List of metadata fields to include in the response
:returns: A Cloud Drive Folder
"""
include = union(include or [], CloudDrives.default)
owner_name = owner.name if hasattr(owner, 'name') else owner
builder = query.QueryParamBuilder().include(include)
builder.addFilter(query.FilterBuilder('name').eq(name))
builder.addFilter(query.FilterBuilder('owner', True).eq(owner.name))
builder.addFilter(query.FilterBuilder('owner', True).eq(owner_name))
builder.put('includeDeleted', True)
param = builder.build()

Expand Down
28 changes: 28 additions & 0 deletions tests/ut/core/admin/test_cloudfs_cloud_drives.py
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,26 @@ def test_add_cloud_drive_with_local_owner_raise(self):

self.assertEqual(error_message, str(error.exception))

def test_find_with_user_account_owner(self):
self._init_global_admin()
with mock.patch("cterasdk.core.cloudfs.query.iterator") as query_iterator_mock:
query_iterator_mock.return_value = iter([munch.Munch({'name': self._name, 'owner': self._owner})])
cloudfs.CloudDrives(self._global_admin).find(self._name, self._local_user_account)
query_iterator_mock.assert_called_once_with(self._global_admin, '/cloudDrives', mock.ANY)
actual_param = query_iterator_mock.call_args[0][2]
expected_query_params = self._get_find_folder_params(self._owner)
self._assert_equal_objects(actual_param, expected_query_params)

def test_find_with_string_owner(self):
self._init_global_admin()
with mock.patch("cterasdk.core.cloudfs.query.iterator") as query_iterator_mock:
query_iterator_mock.return_value = iter([munch.Munch({'name': self._name, 'owner': self._owner})])
cloudfs.CloudDrives(self._global_admin).find(self._name, self._owner)
query_iterator_mock.assert_called_once_with(self._global_admin, '/cloudDrives', mock.ANY)
actual_param = query_iterator_mock.call_args[0][2]
expected_query_params = self._get_find_folder_params(self._owner)
self._assert_equal_objects(actual_param, expected_query_params)

def test_delete_with_local_owner(self):
self._init_global_admin()
with mock.patch("cterasdk.core.cloudfs.query.iterator") as query_iterator_mock:
Expand Down Expand Up @@ -212,6 +232,14 @@ def _get_add_cloud_drive_object(self, winacls=True, description=None, quota=None
)
return add_cloud_drive_param

def _get_find_folder_params(self, owner_name):
include = union([], cloudfs.CloudDrives.default)
builder = query.QueryParamBuilder().include(include)
builder.addFilter(query.FilterBuilder('name').eq(self._name))
builder.addFilter(query.FilterBuilder('owner', True).eq(owner_name))
builder.put('includeDeleted', True)
return builder.build()

def _mock_get_user_base_object_ref(self):
user_object = self._get_user_object(baseObjectRef=self._owner)
self._mock_get_user(user_object)
Expand Down
3 changes: 2 additions & 1 deletion tests/ut/core/admin/test_cloudfs_zones.py
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,8 @@ def _get_device_objects(self):
@staticmethod
def _find_cloud_folder(folder_name, folder_owner, include):
# pylint: disable=unused-argument
folder_info = TestCoreZones._cloud_folders[folder_owner.name][folder_name]
owner_name = folder_owner.name if hasattr(folder_owner, 'name') else folder_owner
folder_info = TestCoreZones._cloud_folders[owner_name][folder_name]
param = Object()
param.uid = folder_info['uid']
param.owner = folder_info['owner']
Expand Down
Loading