|
2 | 2 | """utils tests for this package.""" |
3 | 3 | from imio.esign.testing import IMIO_ESIGN_INTEGRATION_TESTING # noqa: E501 |
4 | 4 | from imio.esign.utils import add_files_to_session |
| 5 | +from imio.esign.utils import get_file_uid_url |
5 | 6 | from imio.esign.utils import get_session_annotation |
6 | 7 | from imio.esign.utils import remove_context_from_session |
7 | 8 | from imio.esign.utils import remove_files_from_session |
8 | 9 | from imio.esign.utils import remove_session |
| 10 | +from imio.pyutils.utils import shortuid_decode_id |
9 | 11 | from plone import api |
10 | 12 | from plone.app.testing import setRoles |
11 | 13 | from plone.app.testing import TEST_USER_ID |
@@ -293,6 +295,33 @@ def test_remove_session(self): |
293 | 295 | self.assertEqual(len(annot["c_uids"]), 2) |
294 | 296 | self.assertEqual(len(annot["sessions"]), 1) |
295 | 297 |
|
| 298 | + def test_get_file_uid_url(self): |
| 299 | + """Test generating file download URL from UID.""" |
| 300 | + uid = "f40682caafc045b4b81973bd82ea9ab6" |
| 301 | + # Test error when no root_url is configured |
| 302 | + with self.assertRaises(Exception) as cm: |
| 303 | + get_file_uid_url(uid) |
| 304 | + self.assertIn("No root URL provided", str(cm.exception)) |
| 305 | + |
| 306 | + api.portal.set_registry_record("imio.esign.file_url", "https://downloads.files.com") |
| 307 | + |
| 308 | + result = get_file_uid_url(uid) |
| 309 | + self.assertEqual(result, "https://downloads.files.com/Rzgwy-9BVG9-viEts-5GBkn-Rm") |
| 310 | + |
| 311 | + result = get_file_uid_url(uid, separator="_", block_size=3) |
| 312 | + self.assertEqual(result, "https://downloads.files.com/Rzg_wy9_BVG_9vi_Ets_5GB_knR_m") |
| 313 | + |
| 314 | + custom_url = "https://custom.domain.org/" |
| 315 | + result = get_file_uid_url(uid, root_url=custom_url) |
| 316 | + self.assertEqual(result, "https://custom.domain.org/Rzgwy-9BVG9-viEts-5GBkn-Rm") |
| 317 | + |
| 318 | + # Test with another UID to verify encoding works |
| 319 | + uid2 = self.uids[0] |
| 320 | + result2 = get_file_uid_url(uid2) |
| 321 | + self.assertTrue(result2.startswith("https://downloads.files.com/")) |
| 322 | + suid = result2[len("https://downloads.files.com/") :] |
| 323 | + self.assertEqual(shortuid_decode_id(suid, separator="-"), uid2) # correctly decoded |
| 324 | + |
296 | 325 |
|
297 | 326 | # example of annotation content |
298 | 327 | """ |
|
0 commit comments