From d2318231fd74e92a6a23b3a1f38dfa708090ff43 Mon Sep 17 00:00:00 2001 From: Nicolas ROCHE Date: Tue, 24 Jan 2023 16:10:16 +0100 Subject: [PATCH] cmis: reload object after folder creation (#73794) --- passerelle/apps/cmis/models.py | 1 + tests/test_cmis.py | 22 +++++++++++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/passerelle/apps/cmis/models.py b/passerelle/apps/cmis/models.py index d4b61b27..064369cc 100644 --- a/passerelle/apps/cmis/models.py +++ b/passerelle/apps/cmis/models.py @@ -262,6 +262,7 @@ class CMISGateway: except ObjectNotFoundException: self._logger.debug("'%s' not found" % basepath) folder = folder.createFolder(path_part) + folder = self.get_object(folder.getObjectId()) self._logger.debug("create folder '%s'" % basepath) return folder diff --git a/tests/test_cmis.py b/tests/test_cmis.py index 03420e64..98194c79 100644 --- a/tests/test_cmis.py +++ b/tests/test_cmis.py @@ -314,10 +314,16 @@ def test_get_or_create_folder_already_existing(monkeypatch): def test_get_or_create_folder_one_level_creation(monkeypatch): + whatever_folder = Mock() + whatever_folder.getObjectId.return_value = '123' root_folder = Mock() - root_folder.createFolder.return_value = 'folder' + root_folder.createFolder.return_value = whatever_folder default_repository = Mock( - rootFolder=root_folder, **{'getObjectByPath.side_effect': ObjectNotFoundException()} + rootFolder=root_folder, + **{ + 'getObjectByPath.side_effect': ObjectNotFoundException(), + 'getObject.return_value': 'folder', + }, ) cmis_client_cls = Mock(return_value=Mock(spec=CmisClient, defaultRepository=default_repository)) import passerelle.apps.cmis.models @@ -330,12 +336,17 @@ def test_get_or_create_folder_one_level_creation(monkeypatch): def test_get_or_create_folder_two_level_creation(monkeypatch): + man_folder = Mock() + man_folder.getObjectId.return_value = '456' + whatever_folder_reloaded = Mock() + whatever_folder_reloaded.createFolder.return_value = man_folder whatever_folder = Mock() - whatever_folder.createFolder.return_value = 'folder' + whatever_folder.getObjectId.return_value = '123' root_folder = Mock() root_folder.createFolder.return_value = whatever_folder default_repository = Mock(rootFolder=root_folder) default_repository.getObjectByPath.side_effect = ObjectNotFoundException() + default_repository.getObject.side_effect = [whatever_folder_reloaded, 'folder'] cmis_client_cls = Mock(return_value=Mock(spec=CmisClient, defaultRepository=default_repository)) import passerelle.apps.cmis.models @@ -346,12 +357,12 @@ def test_get_or_create_folder_two_level_creation(monkeypatch): [call('/whatever/man'), call('/whatever'), call('/whatever/man')] ) root_folder.createFolder.assert_called_once_with('whatever') - whatever_folder.createFolder.assert_called_once_with('man') + whatever_folder_reloaded.createFolder.assert_called_once_with('man') def test_get_or_create_folder_with_some_existing_and_some_not(monkeypatch): whatever_folder = Mock() - whatever_folder.createFolder.return_value = 'folder' + whatever_folder.getObjectId.return_value = '123' def getObjectByPath(path): if path == '/whatever': @@ -364,6 +375,7 @@ def test_get_or_create_folder_with_some_existing_and_some_not(monkeypatch): root_folder = Mock() default_repository = Mock(rootFolder=root_folder) default_repository.getObjectByPath.side_effect = getObjectByPath + default_repository.getObject.return_value = 'folder' cmis_client_cls = Mock(return_value=Mock(spec=CmisClient, defaultRepository=default_repository)) import passerelle.apps.cmis.models -- 2.39.2