diff --git a/src/core/tests/utils.py b/src/core/tests/utils.py index 1a7ff7a5353833808dfc718c0e39333343cef4b3..568be24a70ab849ecc8a86440d2bf8478c5bbf60 100644 --- a/src/core/tests/utils.py +++ b/src/core/tests/utils.py @@ -1,8 +1,9 @@ +import uuid from datetime import timedelta from django.test import TestCase -from ..utils import GitRepo, mask_url, scheme_and_netloc_from_url, str2timedelta +from ..utils import GitRepo, mail2uuid, mask_url, scheme_and_netloc_from_url, str2timedelta class UtilsTests(TestCase): @@ -41,6 +42,10 @@ class UtilsTests(TestCase): for check in checks: self.assertEqual(check[1], scheme_and_netloc_from_url(check[0])) + def test_mail2uuid(self): + expected_uuid = uuid.UUID('c25334d0-9539-55e3-92b4-f559c384522b') + self.assertEqual(expected_uuid, mail2uuid('hub@cccv.de')) + class GitRepoOfflineTests(TestCase): def test_invalid_url_local_path(self): diff --git a/src/core/utils.py b/src/core/utils.py index f7a3ca8cbd381d482afd5ffdb055597c2bf38656..e69123e006a352715a7ed5c3948f03bdb545808d 100644 --- a/src/core/utils.py +++ b/src/core/utils.py @@ -4,6 +4,7 @@ import re import shutil import subprocess import tempfile +import uuid from datetime import UTC, datetime, timedelta from io import BytesIO from pathlib import Path @@ -223,6 +224,11 @@ def download_from_url(url: str) -> Tuple[str, bytes]: return filename, data +def mail2uuid(mail: str, prefix: str = 'acct:', suffix: str = '') -> uuid.UUID: + uri = prefix + mail + suffix + return uuid.uuid5(uuid.NAMESPACE_URL, uri) + + class GitCloneError(Exception): pass