diff --git a/mailbox-core/src/main/java/org/briarproject/mailbox/core/system/RandomIdManager.kt b/mailbox-core/src/main/java/org/briarproject/mailbox/core/system/RandomIdManager.kt index e7379b9903d5ebece7825fad8523a8770e57aec3..66c89d17ca66c261845310241a16d4034abab19c 100644 --- a/mailbox-core/src/main/java/org/briarproject/mailbox/core/system/RandomIdManager.kt +++ b/mailbox-core/src/main/java/org/briarproject/mailbox/core/system/RandomIdManager.kt @@ -3,7 +3,7 @@ package org.briarproject.mailbox.core.system import java.security.SecureRandom import javax.inject.Inject -private const val ID_SIZE = 32 +internal const val ID_SIZE = 32 private const val ID_HEX_SIZE = ID_SIZE * 2 /** diff --git a/mailbox-core/src/test/java/org/briarproject/mailbox/core/TestUtils.kt b/mailbox-core/src/test/java/org/briarproject/mailbox/core/TestUtils.kt index 2025f841c43d7de9eae5293f0adc759d9616710f..23a0b6c77fbc36516e49a97c3b55ad47c2c3bfd7 100644 --- a/mailbox-core/src/test/java/org/briarproject/mailbox/core/TestUtils.kt +++ b/mailbox-core/src/test/java/org/briarproject/mailbox/core/TestUtils.kt @@ -1,7 +1,15 @@ package org.briarproject.mailbox.core +import io.mockk.every +import io.mockk.mockk +import org.briarproject.mailbox.core.contacts.Contact +import org.briarproject.mailbox.core.db.Database +import org.briarproject.mailbox.core.db.Transaction +import org.briarproject.mailbox.core.system.ID_SIZE +import org.briarproject.mailbox.core.system.toHex import org.briarproject.mailbox.core.util.IoUtils import java.io.File +import kotlin.random.Random object TestUtils { @@ -10,4 +18,21 @@ object TestUtils { testDir.parentFile.delete() // Delete if empty } + fun getNewRandomId(): String = Random.nextBytes(ID_SIZE).toHex() + + fun getNewRandomContact(id: Int = Random.nextInt(1, Int.MAX_VALUE)) = Contact( + contactId = id, + token = getNewRandomId(), + inboxId = getNewRandomId(), + outboxId = getNewRandomId(), + ) + + fun <T> everyTransactionWithResult(db: Database, readOnly: Boolean, block: (Transaction) -> T) { + val txn = Transaction(mockk(), readOnly) + every { db.transactionWithResult<T>(true, captureLambda()) } answers { + lambda<(Transaction) -> T>().captured.invoke(txn) + } + block(txn) + } + }