diff --git a/src/test/kotlin/org/briarproject/briar/desktop/BriarDesktopTestApp.kt b/src/test/kotlin/org/briarproject/briar/desktop/BriarDesktopTestApp.kt
index 775f69eaed2e6c5af03e08197c1f2fdb4cdc5083..1306fdcf55e42ea72e6cdb43f1ec962c9bba080c 100644
--- a/src/test/kotlin/org/briarproject/briar/desktop/BriarDesktopTestApp.kt
+++ b/src/test/kotlin/org/briarproject/briar/desktop/BriarDesktopTestApp.kt
@@ -5,6 +5,7 @@ import org.briarproject.bramble.BrambleCoreEagerSingletons
 import org.briarproject.bramble.BrambleCoreModule
 import org.briarproject.bramble.api.account.AccountManager
 import org.briarproject.bramble.api.contact.ContactManager
+import org.briarproject.bramble.api.identity.IdentityManager
 import org.briarproject.bramble.api.lifecycle.LifecycleManager
 import org.briarproject.bramble.api.lifecycle.ShutdownManager
 import org.briarproject.briar.BriarCoreEagerSingletons
@@ -27,6 +28,8 @@ internal interface BriarDesktopTestApp : BrambleCoreEagerSingletons, BriarCoreEa
 
     fun getBriarUi(): BriarUi
 
+    fun getIdentityManager(): IdentityManager
+
     fun getContactManager(): ContactManager
 
     fun getSecureRandom(): SecureRandom
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/TestUtils.kt b/src/test/kotlin/org/briarproject/briar/desktop/TestUtils.kt
index c241e8e7a0d9a5dc916b5b8f8b2e55abfafe3fa8..fb6ef1ad1114a87989bc8181ddc8fb0447e6f8dc 100644
--- a/src/test/kotlin/org/briarproject/briar/desktop/TestUtils.kt
+++ b/src/test/kotlin/org/briarproject/briar/desktop/TestUtils.kt
@@ -18,4 +18,18 @@ object TestUtils {
         FileUtils.setRWX(dataDir)
         return dataDir
     }
+
+    internal fun List<BriarDesktopTestApp>.connectAll() {
+        forEachIndexed { i, app1 ->
+            forEachIndexed inner@{ k, app2 ->
+                if (i >= k) return@inner
+                val cm1 = app1.getContactManager()
+                val cm2 = app2.getContactManager()
+                val name1 = app1.getIdentityManager().localAuthor.name
+                val name2 = app2.getIdentityManager().localAuthor.name
+                cm1.addPendingContact(cm2.handshakeLink, name2)
+                cm2.addPendingContact(cm1.handshakeLink, name1)
+            }
+        }
+    }
 }
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/TestWithTwoConnectedTemporaryAccounts.kt b/src/test/kotlin/org/briarproject/briar/desktop/TestWithTwoConnectedTemporaryAccounts.kt
index cf780483d16a28daf1717637dbfa92c76ae354e0..13257a39f4bc4d3359af4050dfbd10d04a5a816f 100644
--- a/src/test/kotlin/org/briarproject/briar/desktop/TestWithTwoConnectedTemporaryAccounts.kt
+++ b/src/test/kotlin/org/briarproject/briar/desktop/TestWithTwoConnectedTemporaryAccounts.kt
@@ -1,11 +1,10 @@
 package org.briarproject.briar.desktop
 
+import org.briarproject.briar.desktop.TestUtils.connectAll
+
 fun main() = RunWithMultipleTemporaryAccounts(listOf("alice", "bob")) {
     forEach {
         it.getDeterministicTestDataCreator().createTestData(5, 20, 50)
     }
-    val app1 = get(0)
-    val app2 = get(1)
-    app1.getContactManager().addPendingContact(app2.getContactManager().handshakeLink, "bob")
-    app2.getContactManager().addPendingContact(app1.getContactManager().handshakeLink, "alice")
+    connectAll()
 }.run()