import unittest from unittest.mock import MagicMock, patch from mdrsclient.models import Doi, Folder, Laboratories, Laboratory from mdrsclient.services import MdrsService TIMESTAMP = "2026-01-01T00:00:00+09:00" DOI = "10.60178/cbs.20260429-001" LABORATORY = Laboratory(id=1, name="mylab", pi_name="PI", full_name="My Laboratory") def make_locked_folder() -> Folder: return Folder( id="f1", pid=None, name="root", access_level=4, lock=True, size=0, laboratory_id=1, description="", created_at=TIMESTAMP, updated_at=TIMESTAMP, restrict_opened_at=None, metadata=[], sub_folders=[], path="/root/", ) class TestFindFolderByDoi(unittest.TestCase): """The DOI response carries the folder id as a field, not as a nested object.""" def test_a_locked_doi_folder_is_unlocked_with_its_folder_id(self): laboratories = Laboratories() laboratories.append(LABORATORY) with ( patch("mdrsclient.services.DoiApi") as doi_api, patch("mdrsclient.services.FoldersApi") as folders_api, patch("mdrsclient.services.LaboratoriesApi") as laboratories_api, ): doi_api.return_value.retrieve.return_value = Doi(id="20260429-001", doi=DOI, folder_id="f1") folders_api.return_value.retrieve.return_value = make_locked_folder() laboratories_api.return_value.list.return_value = laboratories folder, laboratory = MdrsService(MagicMock()).find_folder_by_doi(DOI, "secret") folders_api.return_value.auth.assert_called_once_with("f1", "secret") self.assertEqual(folder.id, "f1") self.assertEqual(laboratory.name, "mylab") if __name__ == "__main__": unittest.main()