diff --git a/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationViewModel.kt b/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationViewModel.kt index 1b0cae45c3323ff9e24e3b9a0dc855d98646b8d5..70dc74982218b28c8c2f5f5f7fa067f9508c816d 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationViewModel.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationViewModel.kt @@ -281,6 +281,9 @@ constructor( else -> throw IllegalArgumentException("Only introduction requests are supported for the time being.") } + // reload all messages to also show request response message + // todo: might be better to have an event to react to, also for (all) outgoing messages + loadMessages(txn, contactItem.value!!) } } } diff --git a/src/test/kotlin/org/briarproject/briar/desktop/BriarDesktopTestApp.kt b/src/test/kotlin/org/briarproject/briar/desktop/BriarDesktopTestApp.kt index 1306fdcf55e42ea72e6cdb43f1ec962c9bba080c..2c91bde366d5f88de22abcb18d3b7d3dfba501cc 100644 --- a/src/test/kotlin/org/briarproject/briar/desktop/BriarDesktopTestApp.kt +++ b/src/test/kotlin/org/briarproject/briar/desktop/BriarDesktopTestApp.kt @@ -5,11 +5,13 @@ 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.event.EventBus 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 import org.briarproject.briar.BriarCoreModule +import org.briarproject.briar.api.introduction.IntroductionManager import org.briarproject.briar.api.test.TestDataCreator import org.briarproject.briar.desktop.testdata.DeterministicTestDataCreator import org.briarproject.briar.desktop.ui.BriarUi @@ -28,8 +30,12 @@ internal interface BriarDesktopTestApp : BrambleCoreEagerSingletons, BriarCoreEa fun getBriarUi(): BriarUi + fun getEventBus(): EventBus + fun getIdentityManager(): IdentityManager + fun getIntroductionManager(): IntroductionManager + 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 fb6ef1ad1114a87989bc8181ddc8fb0447e6f8dc..02c07e0715a91b33cd2e720899696582f62476ec 100644 --- a/src/test/kotlin/org/briarproject/briar/desktop/TestUtils.kt +++ b/src/test/kotlin/org/briarproject/briar/desktop/TestUtils.kt @@ -23,13 +23,17 @@ object TestUtils { 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) + connectApps(app1, app2) } } } + + internal fun connectApps(app1: BriarDesktopTestApp, app2: BriarDesktopTestApp) { + 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/TestWithThreeConnectedTemporaryAccounts.kt b/src/test/kotlin/org/briarproject/briar/desktop/TestWithThreeConnectedTemporaryAccounts.kt new file mode 100644 index 0000000000000000000000000000000000000000..14ecdd29c28e27caa8ae6dd5edb333aca910249c --- /dev/null +++ b/src/test/kotlin/org/briarproject/briar/desktop/TestWithThreeConnectedTemporaryAccounts.kt @@ -0,0 +1,36 @@ +package org.briarproject.briar.desktop + +import org.briarproject.bramble.api.contact.Contact +import org.briarproject.bramble.api.contact.event.ContactAddedEvent +import org.briarproject.briar.desktop.TestUtils.connectApps + +fun main() = RunWithMultipleTemporaryAccounts(listOf("alice", "bob", "eve")) { + val alice = this[0] + val bob = this[1] + val eve = this[2] + + listOf(bob, eve).forEach { + it.getDeterministicTestDataCreator().createTestData(1, 2, 0, 0, 0) + connectApps(alice, it) + } + + // alice introduces eve to bob + alice.run { + var eve: Contact? = null + var bob: Contact? = null + getEventBus().addListener { + when (it) { + is ContactAddedEvent -> { + val contact = getContactManager().getContact(it.contactId) + when (contact.author.name) { + "eve" -> eve = contact + "bob" -> bob = contact + } + if (eve != null && bob != null) { + getIntroductionManager().makeIntroduction(eve!!, bob!!, "Eve and Bob") + } + } + } + } + } +}.run() diff --git a/src/test/kotlin/org/briarproject/briar/desktop/testdata/DeterministicTestDataCreatorImpl.kt b/src/test/kotlin/org/briarproject/briar/desktop/testdata/DeterministicTestDataCreatorImpl.kt index 8b8da8e91e4f0afc5d0c47ff56cc0f8dc06581a2..9c336eee4d4378a5807c5969539eff434dd8926d 100644 --- a/src/test/kotlin/org/briarproject/briar/desktop/testdata/DeterministicTestDataCreatorImpl.kt +++ b/src/test/kotlin/org/briarproject/briar/desktop/testdata/DeterministicTestDataCreatorImpl.kt @@ -82,8 +82,7 @@ class DeterministicTestDataCreatorImpl @Inject internal constructor( numPrivateGroups: Int, numPrivateGroupPosts: Int, ) { - require(numContacts != 0) - require(numPrivateGroups != 0) + require(numContacts != 0 || numPrivateGroups != 0) require(!(avatarPercent < 0 || avatarPercent > 100)) ioExecutor.execute { try {