diff --git a/src/core/tests/utils.py b/src/core/tests/utils.py
index a69dab3c921ad22cb63b78ace318f5538b256656..b39677a3372b26cdc7bc28b18ced6fabc03143d1 100644
--- a/src/core/tests/utils.py
+++ b/src/core/tests/utils.py
@@ -1,9 +1,13 @@
 import uuid
 from datetime import timedelta
 
+from django.conf import settings
 from django.test import TestCase
+from django.urls import reverse
+from django.utils.timezone import now
 
-from core.utils import GitRepo, mail2uuid, mask_url, scheme_and_netloc_from_url, str2timedelta
+from core.models import Assembly, Conference, ConferenceMember, Event, PlatformUser, Room
+from core.utils import GitRepo, mail2uuid, mask_url, resolve_internal_url, scheme_and_netloc_from_url, str2timedelta
 
 
 class UtilsTests(TestCase):
@@ -47,6 +51,46 @@ class UtilsTests(TestCase):
         self.assertEqual(expected_uuid, mail2uuid('hub@cccv.de'))
 
 
+class InternalUrlTests(TestCase):
+    def setUp(self):
+        self.conference1 = Conference(slug='foo', name='Foo Conference', start=now() - timedelta(days=1), end=now() + timedelta(days=1))
+        self.conference1.save()
+
+        self.user = PlatformUser(username='bernd')
+        self.user.save()
+        ConferenceMember(conference=self.conference1, user=self.user).save()
+
+        self.assembly1a = Assembly(conference=self.conference1, slug='fnord', name='Fnord Assembly', is_official=True)
+        self.assembly1a.save()
+
+        self.room1a = Room(conference=self.conference1, assembly=self.assembly1a, name='Saal 1', room_type=Room.RoomType.LECTURE_HALL)
+        self.room1a.save()
+
+        self.valid_event = {
+            'conference': self.conference1,
+            'assembly': self.assembly1a,
+            'name': 'testEvent',
+            'slug': 'testEvent',
+            'kind': Event.Kind.ASSEMBLY,
+            'room': self.room1a,
+            'schedule_start': now(),
+            'schedule_duration': timedelta(hours=1),
+            'is_public': True,
+        }
+
+    def test_resolve_internal_url(self):
+        base_url = settings.PLAINUI_BASE_URL
+        checks = [
+            ('https://example.com/foo?bar=baz', 'https://example.com/foo?bar=baz'),
+            ('conference://assemblies', base_url + reverse('plainui:assemblies')),
+            ('conference://assemblies?foo=bar', base_url + reverse('plainui:assemblies') + '?foo=bar'),
+            ('assembly://fnord', base_url + reverse('plainui:assembly', kwargs={'assembly_slug': 'fnord'})),
+        ]
+
+        for check in checks:
+            self.assertEqual(check[1], resolve_internal_url(check[0]))
+
+
 class GitRepoOfflineTests(TestCase):
     def test_invalid_url_local_path(self):
         with self.assertRaisesMessage(ValueError, 'Invalid protocol file'):