Convert tests from Hamcrest -> AssertK.

This commit is contained in:
Jameson Williams
2025-01-07 22:07:09 -06:00
committed by Greyson Parrelli
parent 33c918defd
commit 1509e3ed79
48 changed files with 1078 additions and 926 deletions

View File

@@ -5,6 +5,9 @@ import android.net.Uri
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.FlakyTest
import androidx.test.platform.app.InstrumentationRegistry
import assertk.assertThat
import assertk.assertions.isEqualTo
import assertk.assertions.isNotEqualTo
import org.junit.Assert.assertArrayEquals
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNotEquals
@@ -22,8 +25,6 @@ import org.thoughtcrime.securesms.attachments.UriAttachment
import org.thoughtcrime.securesms.mms.MediaStream
import org.thoughtcrime.securesms.mms.SentMediaQuality
import org.thoughtcrime.securesms.providers.BlobProvider
import org.thoughtcrime.securesms.testing.assertIs
import org.thoughtcrime.securesms.testing.assertIsNot
import org.thoughtcrime.securesms.util.MediaUtil
import org.thoughtcrime.securesms.util.Util
import org.whispersystems.signalservice.api.crypto.AttachmentCipherInputStream
@@ -142,8 +143,8 @@ class AttachmentTableTest {
val highInfo = SignalDatabase.attachments.getDataFileInfo(highDatabaseAttachment.attachmentId)!!
assertNotEquals(standardInfo, highInfo)
highInfo.file assertIsNot standardInfo.file
highInfo.file.exists() assertIs true
assertThat(highInfo.file).isNotEqualTo(standardInfo.file)
assertThat(highInfo.file.exists()).isEqualTo(true)
}
/**
@@ -174,10 +175,10 @@ class AttachmentTableTest {
val highInfo = SignalDatabase.attachments.getDataFileInfo(highDatabaseAttachment.attachmentId)!!
val secondHighInfo = SignalDatabase.attachments.getDataFileInfo(secondHighDatabaseAttachment.attachmentId)!!
highInfo.file assertIsNot standardInfo.file
secondHighInfo.file assertIs highInfo.file
standardInfo.file.exists() assertIs true
highInfo.file.exists() assertIs true
assertThat(highInfo.file).isNotEqualTo(standardInfo.file)
assertThat(secondHighInfo.file).isEqualTo(highInfo.file)
assertThat(standardInfo.file.exists()).isEqualTo(true)
assertThat(highInfo.file.exists()).isEqualTo(true)
}
@Test

View File

@@ -1,6 +1,8 @@
package org.thoughtcrime.securesms.database
import androidx.test.ext.junit.runners.AndroidJUnit4
import assertk.assertThat
import assertk.assertions.isEqualTo
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
@@ -8,7 +10,6 @@ import org.signal.core.util.count
import org.signal.core.util.readToSingleInt
import org.thoughtcrime.securesms.backup.v2.ArchivedMediaObject
import org.thoughtcrime.securesms.testing.SignalActivityRule
import org.thoughtcrime.securesms.testing.assertIs
@RunWith(AndroidJUnit4::class)
class BackupMediaSnapshotTableTest {
@@ -27,7 +28,7 @@ class BackupMediaSnapshotTableTest {
val count = getSyncedItemCount(pendingSyncTime)
count.assertIs(0)
assertThat(count).isEqualTo(0)
}
@Test
@@ -38,7 +39,7 @@ class BackupMediaSnapshotTableTest {
val count = getSyncedItemCount(pendingSyncTime)
count.assertIs(SEQUENCE_COUNT)
assertThat(count).isEqualTo(SEQUENCE_COUNT)
}
@Test
@@ -56,7 +57,7 @@ class BackupMediaSnapshotTableTest {
.run()
.readToSingleInt(-1)
count.assertIs(50)
assertThat(count).isEqualTo(50)
}
@Test
@@ -77,8 +78,8 @@ class BackupMediaSnapshotTableTest {
val total = getTotalItemCount()
count.assertIs(50)
total.assertIs(SEQUENCE_COUNT)
assertThat(count).isEqualTo(50)
assertThat(total).isEqualTo(SEQUENCE_COUNT)
}
@Test
@@ -96,7 +97,7 @@ class BackupMediaSnapshotTableTest {
val total = getTotalItemCount()
total.assertIs(50)
assertThat(total).isEqualTo(50)
}
private fun getTotalItemCount(): Int {

View File

@@ -1,6 +1,9 @@
package org.thoughtcrime.securesms.database
import android.database.sqlite.SQLiteConstraintException
import assertk.assertThat
import assertk.assertions.isEqualTo
import assertk.assertions.isNull
import org.junit.Assert.fail
import org.junit.Before
import org.junit.Rule
@@ -12,7 +15,6 @@ import org.thoughtcrime.securesms.components.settings.app.subscription.InAppPaym
import org.thoughtcrime.securesms.database.model.InAppPaymentSubscriberRecord
import org.thoughtcrime.securesms.database.model.databaseprotos.InAppPaymentData
import org.thoughtcrime.securesms.testing.SignalActivityRule
import org.thoughtcrime.securesms.testing.assertIs
import org.whispersystems.signalservice.api.storage.IAPSubscriptionId
import org.whispersystems.signalservice.api.subscriptions.SubscriberId
import java.util.Currency
@@ -191,11 +193,11 @@ class InAppPaymentSubscriberTableTest {
.run()
.readToSingleInt()
subscriberCount assertIs 1
assertThat(subscriberCount).isEqualTo(1)
val subscriber = InAppPaymentsRepository.requireSubscriber(InAppPaymentSubscriberRecord.Type.BACKUP)
subscriber.iapSubscriptionId?.originalTransactionId assertIs null
subscriber.iapSubscriptionId?.purchaseToken assertIs "testToken"
subscriber.subscriberId assertIs googleSubscriber.subscriberId
assertThat(subscriber.iapSubscriptionId?.originalTransactionId).isNull()
assertThat(subscriber.iapSubscriptionId?.purchaseToken).isEqualTo("testToken")
assertThat(subscriber.subscriberId).isEqualTo(googleSubscriber.subscriberId)
}
}

View File

@@ -6,6 +6,8 @@
package org.thoughtcrime.securesms.database
import androidx.test.ext.junit.runners.AndroidJUnit4
import assertk.assertThat
import assertk.assertions.isEqualTo
import org.junit.Before
import org.junit.Rule
import org.junit.Test
@@ -14,7 +16,6 @@ import org.signal.core.util.deleteAll
import org.signal.donations.InAppPaymentType
import org.thoughtcrime.securesms.database.model.databaseprotos.InAppPaymentData
import org.thoughtcrime.securesms.testing.SignalActivityRule
import org.thoughtcrime.securesms.testing.assertIs
@RunWith(AndroidJUnit4::class)
class InAppPaymentTableTest {
@@ -37,13 +38,13 @@ class InAppPaymentTableTest {
)
val paymentBeforeUpdate = SignalDatabase.inAppPayments.getById(inAppPaymentId)
paymentBeforeUpdate?.state assertIs InAppPaymentTable.State.CREATED
assertThat(paymentBeforeUpdate?.state).isEqualTo(InAppPaymentTable.State.CREATED)
SignalDatabase.inAppPayments.update(
inAppPayment = paymentBeforeUpdate!!.copy(state = InAppPaymentTable.State.PENDING)
)
val paymentAfterUpdate = SignalDatabase.inAppPayments.getById(inAppPaymentId)
paymentAfterUpdate?.state assertIs InAppPaymentTable.State.PENDING
assertThat(paymentAfterUpdate?.state).isEqualTo(InAppPaymentTable.State.PENDING)
}
}

View File

@@ -5,6 +5,10 @@
package org.thoughtcrime.securesms.database
import assertk.assertThat
import assertk.assertions.isEqualTo
import assertk.assertions.isFalse
import assertk.assertions.isTrue
import org.junit.Test
import org.signal.core.util.forEach
import org.signal.core.util.requireLong
@@ -13,7 +17,6 @@ import org.signal.core.util.select
import org.signal.core.util.updateAll
import org.thoughtcrime.securesms.crash.CrashConfig
import org.thoughtcrime.securesms.dependencies.AppDependencies
import org.thoughtcrime.securesms.testing.assertIs
class LogDatabaseTest {
@@ -37,7 +40,7 @@ class LogDatabaseTest {
promptThreshold = currentTime
)
foundMatch assertIs true
assertThat(foundMatch).isTrue()
}
@Test
@@ -58,7 +61,7 @@ class LogDatabaseTest {
promptThreshold = currentTime
)
foundMatch assertIs true
assertThat(foundMatch).isTrue()
}
@Test
@@ -79,7 +82,7 @@ class LogDatabaseTest {
promptThreshold = currentTime
)
foundMatch assertIs true
assertThat(foundMatch).isTrue()
}
@Test
@@ -100,7 +103,7 @@ class LogDatabaseTest {
promptThreshold = currentTime
)
foundMatch assertIs true
assertThat(foundMatch).isTrue()
}
@Test
@@ -121,7 +124,7 @@ class LogDatabaseTest {
promptThreshold = currentTime
)
foundMatch assertIs true
assertThat(foundMatch).isTrue()
}
@Test
@@ -142,7 +145,7 @@ class LogDatabaseTest {
promptThreshold = currentTime
)
foundMatch assertIs true
assertThat(foundMatch).isTrue()
}
@Test
@@ -163,7 +166,7 @@ class LogDatabaseTest {
promptThreshold = currentTime
)
foundMatch assertIs false
assertThat(foundMatch).isFalse()
}
@Test
@@ -184,7 +187,7 @@ class LogDatabaseTest {
promptThreshold = currentTime
)
foundMatch assertIs false
assertThat(foundMatch).isFalse()
}
@Test
@@ -205,7 +208,7 @@ class LogDatabaseTest {
promptThreshold = currentTime
)
foundMatch assertIs false
assertThat(foundMatch).isFalse()
}
@Test
@@ -231,7 +234,7 @@ class LogDatabaseTest {
promptThreshold = currentTime - 100
)
foundMatch assertIs false
assertThat(foundMatch).isFalse()
}
@Test
@@ -245,7 +248,7 @@ class LogDatabaseTest {
promptThreshold = currentTime - 100
)
foundMatch assertIs false
assertThat(foundMatch).isFalse()
}
@Test
@@ -279,9 +282,9 @@ class LogDatabaseTest {
.run()
.forEach {
if (it.requireNonNullString(LogDatabase.CrashTable.NAME) == "TestName") {
it.requireLong(LogDatabase.CrashTable.LAST_PROMPTED_AT) assertIs currentTime
assertThat(it.requireLong(LogDatabase.CrashTable.LAST_PROMPTED_AT)).isEqualTo(currentTime)
} else {
it.requireLong(LogDatabase.CrashTable.LAST_PROMPTED_AT) assertIs 0
assertThat(it.requireLong(LogDatabase.CrashTable.LAST_PROMPTED_AT)).isEqualTo(0)
}
}
}

View File

@@ -6,6 +6,8 @@
package org.thoughtcrime.securesms.database
import androidx.test.ext.junit.runners.AndroidJUnit4
import assertk.assertThat
import assertk.assertions.hasSize
import org.junit.Before
import org.junit.Rule
import org.junit.Test
@@ -18,7 +20,6 @@ import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.recipients.RecipientId
import org.thoughtcrime.securesms.testing.GroupTestingUtils
import org.thoughtcrime.securesms.testing.SignalActivityRule
import org.thoughtcrime.securesms.testing.assertIsSize
@RunWith(AndroidJUnit4::class)
class NameCollisionTablesTest {
@@ -43,7 +44,7 @@ class NameCollisionTablesTest {
SignalDatabase.threads.getOrCreateThreadIdFor(Recipient.resolved(threadRecipientId))
val actual = SignalDatabase.nameCollisions.getCollisionsForThreadRecipientId(threadRecipientId)
actual assertIsSize 0
assertThat(actual).hasSize(0)
}
@Test
@@ -55,8 +56,8 @@ class NameCollisionTablesTest {
val actualAlice = SignalDatabase.nameCollisions.getCollisionsForThreadRecipientId(alice)
val actualBob = SignalDatabase.nameCollisions.getCollisionsForThreadRecipientId(bob)
actualAlice assertIsSize 2
actualBob assertIsSize 2
assertThat(actualAlice).hasSize(2)
assertThat(actualBob).hasSize(2)
}
@Test
@@ -68,8 +69,8 @@ class NameCollisionTablesTest {
val actualAlice = SignalDatabase.nameCollisions.getCollisionsForThreadRecipientId(alice)
val actualBob = SignalDatabase.nameCollisions.getCollisionsForThreadRecipientId(bob)
actualAlice assertIsSize 0
actualBob assertIsSize 0
assertThat(actualAlice).hasSize(0)
assertThat(actualBob).hasSize(0)
}
@Test
@@ -83,9 +84,9 @@ class NameCollisionTablesTest {
val actualBob = SignalDatabase.nameCollisions.getCollisionsForThreadRecipientId(bob)
val actualCharlie = SignalDatabase.nameCollisions.getCollisionsForThreadRecipientId(charlie)
actualAlice assertIsSize 0
actualBob assertIsSize 2
actualCharlie assertIsSize 2
assertThat(actualAlice).hasSize(0)
assertThat(actualBob).hasSize(2)
assertThat(actualCharlie).hasSize(2)
}
@Test
@@ -99,7 +100,7 @@ class NameCollisionTablesTest {
val actualAlice = SignalDatabase.nameCollisions.getCollisionsForThreadRecipientId(alice)
actualAlice assertIsSize 2
assertThat(actualAlice).hasSize(2)
}
@Test
@@ -110,7 +111,7 @@ class NameCollisionTablesTest {
val actualCollisions = SignalDatabase.nameCollisions.getCollisionsForThreadRecipientId(alice)
actualCollisions assertIsSize 0
assertThat(actualCollisions).hasSize(0)
}
@Test
@@ -124,7 +125,7 @@ class NameCollisionTablesTest {
val actualCollisions = SignalDatabase.nameCollisions.getCollisionsForThreadRecipientId(alice)
actualCollisions assertIsSize 0
assertThat(actualCollisions).hasSize(0)
}
@Test
@@ -137,7 +138,7 @@ class NameCollisionTablesTest {
val actualCollisions = SignalDatabase.nameCollisions.getCollisionsForThreadRecipientId(bob)
actualCollisions assertIsSize 2
assertThat(actualCollisions).hasSize(2)
}
@Test
@@ -154,7 +155,7 @@ class NameCollisionTablesTest {
val collisions = SignalDatabase.nameCollisions.getCollisionsForThreadRecipientId(info.recipientId)
collisions assertIsSize 2
assertThat(collisions).hasSize(2)
}
@Test
@@ -173,7 +174,7 @@ class NameCollisionTablesTest {
val collisions = SignalDatabase.nameCollisions.getCollisionsForThreadRecipientId(info.recipientId)
collisions assertIsSize 0
assertThat(collisions).hasSize(0)
}
@Test
@@ -190,7 +191,7 @@ class NameCollisionTablesTest {
val collisions = SignalDatabase.nameCollisions.getCollisionsForThreadRecipientId(info.recipientId)
collisions assertIsSize 0
assertThat(collisions).hasSize(0)
}
private fun setUpRecipient(recipientId: RecipientId): RecipientId {

View File

@@ -6,6 +6,9 @@
package org.thoughtcrime.securesms.database
import androidx.test.ext.junit.runners.AndroidJUnit4
import assertk.assertThat
import assertk.assertions.isEqualTo
import assertk.assertions.isTrue
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
@@ -14,7 +17,6 @@ import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.storage.StorageRecordUpdate
import org.thoughtcrime.securesms.storage.StorageSyncModels
import org.thoughtcrime.securesms.testing.SignalActivityRule
import org.thoughtcrime.securesms.testing.assertIs
import org.thoughtcrime.securesms.util.MessageTableTestUtils
import org.whispersystems.signalservice.api.storage.SignalContactRecord
import org.whispersystems.signalservice.api.storage.toSignalContactRecord
@@ -52,10 +54,10 @@ class RecipientTableTest_applyStorageSyncContactUpdate {
val newVerifiedStatus: IdentityTable.VerifiedStatus = identities.getIdentityRecord(other.id).get().verifiedStatus
// THEN
oldVerifiedStatus assertIs IdentityTable.VerifiedStatus.VERIFIED
newVerifiedStatus assertIs IdentityTable.VerifiedStatus.DEFAULT
assertThat(oldVerifiedStatus).isEqualTo(IdentityTable.VerifiedStatus.VERIFIED)
assertThat(newVerifiedStatus).isEqualTo(IdentityTable.VerifiedStatus.DEFAULT)
val messages = MessageTableTestUtils.getMessages(SignalDatabase.threads.getThreadIdFor(other.id)!!)
messages.first().isIdentityDefault assertIs true
assertThat(messages.first().isIdentityDefault).isTrue()
}
}

View File

@@ -3,8 +3,8 @@ package org.thoughtcrime.securesms.database
import android.database.Cursor
import androidx.core.content.contentValuesOf
import androidx.test.ext.junit.runners.AndroidJUnit4
import org.hamcrest.MatcherAssert
import org.hamcrest.Matchers
import assertk.assertThat
import assertk.assertions.containsExactlyInAnyOrder
import org.junit.Assert
import org.junit.Assert.assertEquals
import org.junit.Assert.assertFalse
@@ -977,13 +977,16 @@ class RecipientTableTest_getAndPossiblyMerge {
val updatedProfile1: NotificationProfile = SignalDatabase.notificationProfiles.getProfile(profile1.id)!!
val updatedProfile2: NotificationProfile = SignalDatabase.notificationProfiles.getProfile(profile2.id)!!
MatcherAssert.assertThat("Notification Profile 1 should now only contain ACI $recipientIdAci", updatedProfile1.allowedMembers, Matchers.containsInAnyOrder(recipientIdAci))
MatcherAssert.assertThat("Notification Profile 2 should now contain ACI A ($recipientIdAci) and ACI B ($recipientIdAciB)", updatedProfile2.allowedMembers, Matchers.containsInAnyOrder(recipientIdAci, recipientIdAciB))
assertThat(updatedProfile1.allowedMembers, "Notification Profile 1 should now only contain ACI $recipientIdAci")
.containsExactlyInAnyOrder(recipientIdAci)
assertThat(updatedProfile2.allowedMembers, "Notification Profile 2 should now contain ACI A ($recipientIdAci) and ACI B ($recipientIdAciB)")
.containsExactlyInAnyOrder(recipientIdAci, recipientIdAciB)
// Distribution List validation
val updatedList: DistributionListRecord = SignalDatabase.distributionLists.getList(distributionListId)!!
MatcherAssert.assertThat("Distribution list should have updated $recipientIdE164 to $recipientIdAci", updatedList.members, Matchers.containsInAnyOrder(recipientIdAci, recipientIdAciB))
assertThat(updatedList.members, "Distribution list should have updated $recipientIdE164 to $recipientIdAci")
.containsExactlyInAnyOrder(recipientIdAci, recipientIdAciB)
}
private fun smsMessage(sender: RecipientId, time: Long = 0, body: String = "", groupId: Optional<GroupId> = Optional.empty()): IncomingMessage {

View File

@@ -1,15 +1,16 @@
package org.thoughtcrime.securesms.database
import androidx.test.ext.junit.runners.AndroidJUnit4
import org.hamcrest.MatcherAssert.assertThat
import org.hamcrest.Matchers.`is`
import org.hamcrest.Matchers.notNullValue
import org.hamcrest.Matchers.nullValue
import assertk.assertThat
import assertk.assertions.isEqualTo
import assertk.assertions.isNull
import assertk.assertions.isPresent
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.signal.core.util.Hex
import org.signal.libsignal.zkgroup.groups.GroupMasterKey
import org.thoughtcrime.securesms.database.MessageTable.InsertResult
import org.thoughtcrime.securesms.database.model.GroupsV2UpdateMessageConverter
import org.thoughtcrime.securesms.database.model.databaseprotos.DecryptedGroupV2Context
import org.thoughtcrime.securesms.database.model.databaseprotos.GV2UpdateDescription
@@ -19,6 +20,7 @@ import org.thoughtcrime.securesms.database.model.databaseprotos.deleteRequesting
import org.thoughtcrime.securesms.database.model.databaseprotos.groupChange
import org.thoughtcrime.securesms.database.model.databaseprotos.groupContext
import org.thoughtcrime.securesms.groups.GroupId
import org.thoughtcrime.securesms.isAbsent
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.mms.IncomingMessage
import org.thoughtcrime.securesms.recipients.RecipientId
@@ -70,7 +72,7 @@ class SmsDatabaseTest_collapseJoinRequestEventsIfPossible {
)
)
assertThat("result is null when not collapsing", result.orElse(null), nullValue())
assertThat(result, "result is null when not collapsing").isAbsent()
}
/**
@@ -92,7 +94,7 @@ class SmsDatabaseTest_collapseJoinRequestEventsIfPossible {
)
)
assertThat("result is null when not collapsing", result.orElse(null), nullValue())
assertThat(result, "result is null when not collapsing").isAbsent()
}
/**
@@ -123,7 +125,7 @@ class SmsDatabaseTest_collapseJoinRequestEventsIfPossible {
)
)
assertThat("result is null when not collapsing", result.orElse(null), nullValue())
assertThat(result, "result is null when not collapsing").isAbsent()
}
/**
@@ -154,7 +156,7 @@ class SmsDatabaseTest_collapseJoinRequestEventsIfPossible {
)
)
assertThat("result is null when not collapsing", result.orElse(null), nullValue())
assertThat(result, "result is null when not collapsing").isAbsent()
}
/**
@@ -185,8 +187,12 @@ class SmsDatabaseTest_collapseJoinRequestEventsIfPossible {
)
)
assertThat("result is not null when collapsing", result.orElse(null), notNullValue())
assertThat("result message id should be same as latest message", result.get().messageId, `is`(latestMessage.messageId))
assertThat(result, "result is not null when collapsing")
.isPresent()
.given { result: InsertResult ->
assertThat(result.messageId, "result message id should be same as latest message")
.isEqualTo(latestMessage.messageId)
}
}
/**
@@ -221,8 +227,12 @@ class SmsDatabaseTest_collapseJoinRequestEventsIfPossible {
)
)
assertThat("result is not null when collapsing", result.orElse(null), notNullValue())
assertThat("result message id should be same as latest message", result.get().messageId, `is`(latestMessage.messageId))
assertThat(result, "result is not null when collapsing")
.isPresent()
.given { result: InsertResult ->
assertThat(result.messageId, "result message id should be same as latest message")
.isEqualTo(latestMessage.messageId)
}
}
/**
@@ -267,9 +277,13 @@ class SmsDatabaseTest_collapseJoinRequestEventsIfPossible {
)
)
assertThat("result is not null when collapsing", result.orElse(null), notNullValue())
assertThat("result message id should be same as second latest message", result.get().messageId, `is`(secondLatestMessage.messageId))
assertThat("latest message should be deleted", sms.getMessageRecordOrNull(latestMessage.messageId), nullValue())
assertThat(result, "result is not null when collapsing")
.isPresent()
.given { result: InsertResult ->
assertThat(result.messageId, "result message id should be same as second latest message")
.isEqualTo(secondLatestMessage.messageId)
assertThat(sms.getMessageRecordOrNull(latestMessage.messageId), "latest message should be deleted").isNull()
}
}
private fun smsMessage(sender: RecipientId, body: String? = ""): IncomingMessage {

View File

@@ -1,10 +1,11 @@
package org.thoughtcrime.securesms.database
import androidx.test.ext.junit.runners.AndroidJUnit4
import org.hamcrest.MatcherAssert.assertThat
import org.hamcrest.Matchers.containsInAnyOrder
import org.hamcrest.Matchers.hasSize
import org.hamcrest.Matchers.`is`
import assertk.assertThat
import assertk.assertions.containsExactlyInAnyOrder
import assertk.assertions.hasSize
import assertk.assertions.isFalse
import assertk.assertions.isTrue
import org.junit.Assert.assertEquals
import org.junit.Assert.assertFalse
import org.junit.Assert.assertNotNull
@@ -96,11 +97,11 @@ class StorySendTableTest {
val recipientIdsForMessage1 = storySends.getRecipientsToSendTo(messageId1, 100, false)
val recipientIdsForMessage2 = storySends.getRecipientsToSendTo(messageId2, 200, true)
assertThat(recipientIdsForMessage1, hasSize(10))
assertThat(recipientIdsForMessage1, containsInAnyOrder(*recipients1to10.toTypedArray()))
assertThat(recipientIdsForMessage1).hasSize(10)
assertThat(recipientIdsForMessage1).containsExactlyInAnyOrder(*recipients1to10.toTypedArray())
assertThat(recipientIdsForMessage2, hasSize(10))
assertThat(recipientIdsForMessage2, containsInAnyOrder(*recipients11to20.toTypedArray()))
assertThat(recipientIdsForMessage2).hasSize(10)
assertThat(recipientIdsForMessage2).containsExactlyInAnyOrder(*recipients11to20.toTypedArray())
}
@Test
@@ -111,11 +112,11 @@ class StorySendTableTest {
val recipientIdsForMessage1 = storySends.getRecipientsToSendTo(messageId1, 100, false)
val recipientIdsForMessage2 = storySends.getRecipientsToSendTo(messageId2, 100, true)
assertThat(recipientIdsForMessage1, hasSize(5))
assertThat(recipientIdsForMessage1, containsInAnyOrder(*recipients1to10.take(5).toTypedArray()))
assertThat(recipientIdsForMessage1).hasSize(5)
assertThat(recipientIdsForMessage1).containsExactlyInAnyOrder(*recipients1to10.take(5).toTypedArray())
assertThat(recipientIdsForMessage2, hasSize(10))
assertThat(recipientIdsForMessage2, containsInAnyOrder(*recipients6to15.toTypedArray()))
assertThat(recipientIdsForMessage2).hasSize(10)
assertThat(recipientIdsForMessage2).containsExactlyInAnyOrder(*recipients6to15.toTypedArray())
}
@Test
@@ -131,13 +132,13 @@ class StorySendTableTest {
val recipientIdsForMessage2 = storySends.getRecipientsToSendTo(messageId2, 100, true)
val recipientIdsForMessage3 = storySends.getRecipientsToSendTo(messageId3, 100, true)
assertThat(recipientIdsForMessage1, hasSize(0))
assertThat(recipientIdsForMessage1).hasSize(0)
assertThat(recipientIdsForMessage2, hasSize(1))
assertThat(recipientIdsForMessage2, containsInAnyOrder(recipient1))
assertThat(recipientIdsForMessage2).hasSize(1)
assertThat(recipientIdsForMessage2).containsExactlyInAnyOrder(recipient1)
assertThat(recipientIdsForMessage3, hasSize(1))
assertThat(recipientIdsForMessage3, containsInAnyOrder(recipient2))
assertThat(recipientIdsForMessage3).hasSize(1)
assertThat(recipientIdsForMessage3).containsExactlyInAnyOrder(recipient2)
}
@Test
@@ -148,11 +149,11 @@ class StorySendTableTest {
val recipientIdsForMessage1 = storySends.getRecipientsToSendTo(messageId1, 100, true)
val recipientIdsForMessage2 = storySends.getRecipientsToSendTo(messageId2, 100, false)
assertThat(recipientIdsForMessage1, hasSize(10))
assertThat(recipientIdsForMessage1, containsInAnyOrder(*recipients6to15.toTypedArray()))
assertThat(recipientIdsForMessage1).hasSize(10)
assertThat(recipientIdsForMessage1).containsExactlyInAnyOrder(*recipients6to15.toTypedArray())
assertThat(recipientIdsForMessage2, hasSize(5))
assertThat(recipientIdsForMessage2, containsInAnyOrder(*recipients1to10.take(5).toTypedArray()))
assertThat(recipientIdsForMessage2).hasSize(5)
assertThat(recipientIdsForMessage2).containsExactlyInAnyOrder(*recipients1to10.take(5).toTypedArray())
}
@Test
@@ -164,11 +165,11 @@ class StorySendTableTest {
val recipientIdsForMessage1 = storySends.getRemoteDeleteRecipients(messageId1, 100)
val recipientIdsForMessage2 = storySends.getRemoteDeleteRecipients(messageId2, 200)
assertThat(recipientIdsForMessage1, hasSize(10))
assertThat(recipientIdsForMessage1, containsInAnyOrder(*recipients1to10.toTypedArray()))
assertThat(recipientIdsForMessage1).hasSize(10)
assertThat(recipientIdsForMessage1).containsExactlyInAnyOrder(*recipients1to10.toTypedArray())
assertThat(recipientIdsForMessage2, hasSize(10))
assertThat(recipientIdsForMessage2, containsInAnyOrder(*recipients11to20.toTypedArray()))
assertThat(recipientIdsForMessage2).hasSize(10)
assertThat(recipientIdsForMessage2).containsExactlyInAnyOrder(*recipients11to20.toTypedArray())
}
@Test
@@ -179,11 +180,11 @@ class StorySendTableTest {
val recipientIdsForMessage1 = storySends.getRemoteDeleteRecipients(messageId1, 200)
val recipientIdsForMessage2 = storySends.getRemoteDeleteRecipients(messageId2, 200)
assertThat(recipientIdsForMessage1, hasSize(5))
assertThat(recipientIdsForMessage1, containsInAnyOrder(*recipients1to10.take(5).toTypedArray()))
assertThat(recipientIdsForMessage1).hasSize(5)
assertThat(recipientIdsForMessage1).containsExactlyInAnyOrder(*recipients1to10.take(5).toTypedArray())
assertThat(recipientIdsForMessage2, hasSize(5))
assertThat(recipientIdsForMessage2, containsInAnyOrder(*recipients6to15.takeLast(5).toTypedArray()))
assertThat(recipientIdsForMessage2).hasSize(5)
assertThat(recipientIdsForMessage2).containsExactlyInAnyOrder(*recipients6to15.takeLast(5).toTypedArray())
}
@Test
@@ -195,8 +196,8 @@ class StorySendTableTest {
val recipientIdsForMessage2 = storySends.getRemoteDeleteRecipients(messageId2, 200)
assertThat(recipientIdsForMessage2, hasSize(10))
assertThat(recipientIdsForMessage2, containsInAnyOrder(*recipients6to15.toTypedArray()))
assertThat(recipientIdsForMessage2).hasSize(10)
assertThat(recipientIdsForMessage2).containsExactlyInAnyOrder(*recipients6to15.toTypedArray())
}
@Test
@@ -205,7 +206,7 @@ class StorySendTableTest {
val canReply = storySends.canReply(recipients1to10[0], 200)
assertThat(canReply, `is`(true))
assertThat(canReply).isTrue()
}
@Test
@@ -214,7 +215,7 @@ class StorySendTableTest {
val canReply = storySends.canReply(recipients1to10[0], 200)
assertThat(canReply, `is`(false))
assertThat(canReply).isFalse()
}
@Test
@@ -225,8 +226,8 @@ class StorySendTableTest {
val message1OnlyRecipientCanReply = storySends.canReply(recipients1to10[0], 200)
val message2RecipientCanReply = storySends.canReply(recipients6to10[0], 200)
assertThat(message1OnlyRecipientCanReply, `is`(false))
assertThat(message2RecipientCanReply, `is`(true))
assertThat(message1OnlyRecipientCanReply).isFalse()
assertThat(message2RecipientCanReply).isTrue()
}
@Test

View File

@@ -8,6 +8,9 @@ package org.thoughtcrime.securesms.database.helpers.migration
import android.app.Application
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.platform.app.InstrumentationRegistry
import assertk.assertThat
import assertk.assertions.isEmpty
import assertk.assertions.isEqualTo
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
@@ -24,7 +27,6 @@ import org.thoughtcrime.securesms.database.model.InAppPaymentSubscriberRecord
import org.thoughtcrime.securesms.database.model.databaseprotos.FiatValue
import org.thoughtcrime.securesms.database.model.databaseprotos.InAppPaymentData
import org.thoughtcrime.securesms.testing.SignalDatabaseRule
import org.thoughtcrime.securesms.testing.assertIs
import org.whispersystems.signalservice.api.subscriptions.SubscriberId
import java.math.BigDecimal
import java.util.Currency
@@ -46,7 +48,7 @@ class FixInAppCurrencyIfAbleTest {
clearCurrencyCode(subscriber)
migrate()
getCurrencyCode(subscriber) assertIs ""
assertThat(getCurrencyCode(subscriber)).isEmpty()
}
@Test
@@ -57,7 +59,7 @@ class FixInAppCurrencyIfAbleTest {
clearCurrencyCode(subscriber)
migrate()
getCurrencyCode(subscriber) assertIs ""
assertThat(getCurrencyCode(subscriber)).isEmpty()
}
@Test
@@ -67,7 +69,7 @@ class FixInAppCurrencyIfAbleTest {
clearCurrencyCode(subscriber)
migrate()
getCurrencyCode(subscriber) assertIs ""
assertThat(getCurrencyCode(subscriber)).isEmpty()
}
@Test
@@ -77,7 +79,7 @@ class FixInAppCurrencyIfAbleTest {
clearCurrencyCode(subscriber)
migrate()
getCurrencyCode(subscriber) assertIs "USD"
assertThat(getCurrencyCode(subscriber)).isEqualTo("USD")
}
@Test

View File

@@ -8,6 +8,8 @@ package org.thoughtcrime.securesms.jobs
import android.net.Uri
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.platform.app.InstrumentationRegistry
import assertk.assertThat
import assertk.assertions.isTrue
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
@@ -21,7 +23,6 @@ import org.thoughtcrime.securesms.jobmanager.Job
import org.thoughtcrime.securesms.mms.SentMediaQuality
import org.thoughtcrime.securesms.providers.BlobProvider
import org.thoughtcrime.securesms.testing.SignalActivityRule
import org.thoughtcrime.securesms.testing.assertIs
import org.thoughtcrime.securesms.util.MediaUtil
import java.util.Optional
import java.util.concurrent.CountDownLatch
@@ -69,8 +70,8 @@ class AttachmentCompressionJobTest {
jobThread.join()
firstJobResult!!.isSuccess assertIs true
secondJobResult!!.isSuccess assertIs true
assertThat(firstJobResult!!.isSuccess).isTrue()
assertThat(secondJobResult!!.isSuccess).isTrue()
}
private fun createAttachment(id: Long, uri: Uri, transformProperties: AttachmentTable.TransformProperties): UriAttachment {

View File

@@ -1,8 +1,10 @@
package org.thoughtcrime.securesms.jobs
import androidx.test.ext.junit.runners.AndroidJUnit4
import assertk.assertThat
import assertk.assertions.hasSize
import assertk.assertions.isEmpty
import okhttp3.mockwebserver.MockResponse
import org.hamcrest.Matchers
import org.junit.Before
import org.junit.Rule
import org.junit.Test
@@ -21,7 +23,6 @@ import org.thoughtcrime.securesms.database.model.databaseprotos.InAppPaymentData
import org.thoughtcrime.securesms.dependencies.InstrumentationApplicationDependencyProvider
import org.thoughtcrime.securesms.testing.Get
import org.thoughtcrime.securesms.testing.SignalActivityRule
import org.thoughtcrime.securesms.testing.assert
import org.thoughtcrime.securesms.testing.success
import org.thoughtcrime.securesms.util.TestStripePaths
import java.math.BigDecimal
@@ -65,7 +66,7 @@ class InAppPaymentAuthCheckJobTest {
InAppPaymentAuthCheckJob().run()
val receipts = SignalDatabase.donationReceipts.getReceipts(InAppPaymentReceiptRecord.Type.ONE_TIME_DONATION)
receipts assert Matchers.empty()
assertThat(receipts).isEmpty()
}
@Test
@@ -89,7 +90,7 @@ class InAppPaymentAuthCheckJobTest {
InAppPaymentAuthCheckJob().run()
val receipts = SignalDatabase.donationReceipts.getReceipts(InAppPaymentReceiptRecord.Type.ONE_TIME_DONATION)
receipts assert Matchers.hasSize(1)
assertThat(receipts).hasSize(1)
}
private fun initializeMockGetPaymentIntent(status: StripeIntentStatus) {

View File

@@ -3,6 +3,8 @@ package org.thoughtcrime.securesms.messages
import android.database.Cursor
import android.util.Base64
import androidx.test.ext.junit.runners.AndroidJUnit4
import assertk.assertThat
import assertk.assertions.isEqualTo
import org.junit.Before
import org.junit.Rule
import org.junit.Test
@@ -20,7 +22,6 @@ import org.thoughtcrime.securesms.mms.OutgoingMessage
import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.testing.MessageContentFuzzer
import org.thoughtcrime.securesms.testing.SignalActivityRule
import org.thoughtcrime.securesms.testing.assertIs
import org.thoughtcrime.securesms.util.MessageTableTestUtils
import org.whispersystems.signalservice.internal.push.Content
import org.whispersystems.signalservice.internal.push.EditMessage
@@ -201,12 +202,12 @@ class EditMessageSyncProcessorTest {
fun assert() {
syncMessages.zip(localMessages)
.forEach { (v2, v1) ->
v2.assertIs(v1)
assertThat(v2).isEqualTo(v1)
}
syncAttachments.zip(localAttachments)
.forEach { (v2, v1) ->
v2.assertIs(v1)
assertThat(v2).isEqualTo(v1)
}
}

View File

@@ -1,6 +1,9 @@
package org.thoughtcrime.securesms.messages
import androidx.test.ext.junit.runners.AndroidJUnit4
import assertk.assertThat
import assertk.assertions.hasSize
import assertk.assertions.isEqualTo
import okio.ByteString.Companion.toByteString
import org.junit.Before
import org.junit.Rule
@@ -13,7 +16,6 @@ import org.thoughtcrime.securesms.testing.GroupTestingUtils
import org.thoughtcrime.securesms.testing.GroupTestingUtils.asMember
import org.thoughtcrime.securesms.testing.MessageContentFuzzer
import org.thoughtcrime.securesms.testing.SignalActivityRule
import org.thoughtcrime.securesms.testing.assertIs
import org.thoughtcrime.securesms.util.MessageTableTestUtils
import org.whispersystems.signalservice.internal.push.DataMessage
import org.whispersystems.signalservice.internal.push.GroupContextV2
@@ -71,14 +73,14 @@ class MessageContentProcessor__recipientStatusTest {
val secondSyncMessages = MessageTableTestUtils.getMessages(threadId)
val secondReceiptInfo = SignalDatabase.groupReceipts.getGroupReceiptInfo(firstMessageId)
firstSyncMessages.size assertIs 1
firstSyncMessages[0].body assertIs initialTextMessage.body
firstReceiptInfo.first { it.recipientId == harness.others[0] }.status assertIs GroupReceiptTable.STATUS_UNDELIVERED
firstReceiptInfo.first { it.recipientId == harness.others[1] }.status assertIs GroupReceiptTable.STATUS_UNKNOWN
assertThat(firstSyncMessages).hasSize(1)
assertThat(firstSyncMessages[0].body).isEqualTo(initialTextMessage.body)
assertThat(firstReceiptInfo.first { it.recipientId == harness.others[0] }.status).isEqualTo(GroupReceiptTable.STATUS_UNDELIVERED)
assertThat(firstReceiptInfo.first { it.recipientId == harness.others[1] }.status).isEqualTo(GroupReceiptTable.STATUS_UNKNOWN)
secondSyncMessages.size assertIs 1
secondSyncMessages[0].body assertIs initialTextMessage.body
secondReceiptInfo.first { it.recipientId == harness.others[0] }.status assertIs GroupReceiptTable.STATUS_UNDELIVERED
secondReceiptInfo.first { it.recipientId == harness.others[1] }.status assertIs GroupReceiptTable.STATUS_UNDELIVERED
assertThat(secondSyncMessages).hasSize(1)
assertThat(secondSyncMessages[0].body).isEqualTo(initialTextMessage.body)
assertThat(secondReceiptInfo.first { it.recipientId == harness.others[0] }.status).isEqualTo(GroupReceiptTable.STATUS_UNDELIVERED)
assertThat(secondReceiptInfo.first { it.recipientId == harness.others[1] }.status).isEqualTo(GroupReceiptTable.STATUS_UNDELIVERED)
}
}

View File

@@ -6,6 +6,8 @@
package org.thoughtcrime.securesms.messages
import androidx.test.ext.junit.runners.AndroidJUnit4
import assertk.assertThat
import assertk.assertions.isEqualTo
import org.junit.After
import org.junit.Before
import org.junit.Rule
@@ -13,7 +15,6 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.thoughtcrime.securesms.database.SignalDatabase
import org.thoughtcrime.securesms.testing.SignalActivityRule
import org.thoughtcrime.securesms.testing.assertIs
@Suppress("ClassName")
@RunWith(AndroidJUnit4::class)
@@ -41,12 +42,12 @@ class SyncMessageProcessorTest_readSyncs {
val threadId = SignalDatabase.threads.getThreadIdFor(messageHelper.alice)!!
var threadRecord = SignalDatabase.threads.getThreadRecord(threadId)!!
threadRecord.unreadCount assertIs 2
assertThat(threadRecord.unreadCount).isEqualTo(2)
messageHelper.syncReadMessage(messageHelper.alice to message1Timestamp, messageHelper.alice to message2Timestamp)
threadRecord = SignalDatabase.threads.getThreadRecord(threadId)!!
threadRecord.unreadCount assertIs 0
assertThat(threadRecord.unreadCount).isEqualTo(0)
}
@Test
@@ -56,12 +57,12 @@ class SyncMessageProcessorTest_readSyncs {
val threadId = SignalDatabase.threads.getThreadIdFor(messageHelper.alice)!!
var threadRecord = SignalDatabase.threads.getThreadRecord(threadId)!!
threadRecord.unreadCount assertIs 2
assertThat(threadRecord.unreadCount).isEqualTo(2)
messageHelper.syncReadMessage(messageHelper.alice to message2Timestamp)
threadRecord = SignalDatabase.threads.getThreadRecord(threadId)!!
threadRecord.unreadCount assertIs 0
assertThat(threadRecord.unreadCount).isEqualTo(0)
}
@Test
@@ -76,12 +77,12 @@ class SyncMessageProcessorTest_readSyncs {
val threadId = SignalDatabase.threads.getThreadIdFor(messageHelper.alice)!!
var threadRecord = SignalDatabase.threads.getThreadRecord(threadId)!!
threadRecord.unreadCount assertIs 2
assertThat(threadRecord.unreadCount).isEqualTo(2)
messageHelper.syncReadMessage(messageHelper.alice to message2Timestamp, messageHelper.alice to editMessage1Timestamp1, messageHelper.alice to editMessage1Timestamp2)
threadRecord = SignalDatabase.threads.getThreadRecord(threadId)!!
threadRecord.unreadCount assertIs 0
assertThat(threadRecord.unreadCount).isEqualTo(0)
}
@Test
@@ -97,11 +98,11 @@ class SyncMessageProcessorTest_readSyncs {
val threadId = SignalDatabase.threads.getThreadIdFor(messageHelper.group.recipientId)!!
var threadRecord = SignalDatabase.threads.getThreadRecord(threadId)!!
threadRecord.unreadCount assertIs 2
assertThat(threadRecord.unreadCount).isEqualTo(2)
messageHelper.syncReadMessage(messageHelper.bob to message2Timestamp, messageHelper.alice to editMessage1Timestamp1, messageHelper.alice to editMessage1Timestamp2)
threadRecord = SignalDatabase.threads.getThreadRecord(threadId)!!
threadRecord.unreadCount assertIs 0
assertThat(threadRecord.unreadCount).isEqualTo(0)
}
}

View File

@@ -6,7 +6,14 @@
package org.thoughtcrime.securesms.messages
import androidx.test.ext.junit.runners.AndroidJUnit4
import org.hamcrest.Matchers.greaterThan
import assertk.assertThat
import assertk.assertions.hasSize
import assertk.assertions.isEmpty
import assertk.assertions.isEqualTo
import assertk.assertions.isGreaterThan
import assertk.assertions.isNotEqualTo
import assertk.assertions.isNotNull
import assertk.assertions.isNull
import org.junit.After
import org.junit.Before
import org.junit.Ignore
@@ -28,11 +35,6 @@ import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.recipients.RecipientId
import org.thoughtcrime.securesms.testing.MessageContentFuzzer.DeleteForMeSync
import org.thoughtcrime.securesms.testing.SignalActivityRule
import org.thoughtcrime.securesms.testing.assert
import org.thoughtcrime.securesms.testing.assertIs
import org.thoughtcrime.securesms.testing.assertIsNot
import org.thoughtcrime.securesms.testing.assertIsNotNull
import org.thoughtcrime.securesms.testing.assertIsSize
import org.thoughtcrime.securesms.util.IdentityUtil
import org.thoughtcrime.securesms.util.Util
import org.whispersystems.signalservice.api.attachment.AttachmentUploadResult
@@ -70,7 +72,7 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
val threadId = SignalDatabase.threads.getThreadIdFor(messageHelper.alice)!!
var messageCount = SignalDatabase.messages.getMessageCountForThread(threadId)
messageCount assertIs 2
assertThat(messageCount).isEqualTo(2)
// WHEN
messageHelper.syncDeleteForMeMessage(
@@ -79,7 +81,7 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
// THEN
messageCount = SignalDatabase.messages.getMessageCountForThread(threadId)
messageCount assertIs 1
assertThat(messageCount).isEqualTo(1)
}
@Test
@@ -90,7 +92,7 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
val threadId = SignalDatabase.threads.getThreadIdFor(messageHelper.alice)!!
var messageCount = SignalDatabase.messages.getMessageCountForThread(threadId)
messageCount assertIs 2
assertThat(messageCount).isEqualTo(2)
// WHEN
messageHelper.syncDeleteForMeMessage(
@@ -99,7 +101,7 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
// THEN
messageCount = SignalDatabase.messages.getMessageCountForThread(threadId)
messageCount assertIs 1
assertThat(messageCount).isEqualTo(1)
}
@Test
@@ -111,7 +113,7 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
val threadId = SignalDatabase.threads.getThreadIdFor(messageHelper.group.recipientId)!!
var messageCount = SignalDatabase.messages.getMessageCountForThread(threadId)
messageCount assertIs 3
assertThat(messageCount).isEqualTo(3)
// WHEN
messageHelper.syncDeleteForMeMessage(
@@ -120,7 +122,7 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
// THEN
messageCount = SignalDatabase.messages.getMessageCountForThread(threadId)
messageCount assertIs 2
assertThat(messageCount).isEqualTo(2)
}
@Test
@@ -132,7 +134,7 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
val threadId = SignalDatabase.threads.getThreadIdFor(messageHelper.group.recipientId)!!
var messageCount = SignalDatabase.messages.getMessageCountForThread(threadId)
messageCount assertIs 3
assertThat(messageCount).isEqualTo(3)
// WHEN
messageHelper.syncDeleteForMeMessage(
@@ -141,7 +143,7 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
// THEN
messageCount = SignalDatabase.messages.getMessageCountForThread(threadId)
messageCount assertIs 1
assertThat(messageCount).isEqualTo(1)
}
@Test
@@ -152,7 +154,7 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
val threadId = SignalDatabase.threads.getThreadIdFor(messageHelper.alice)!!
var messageCount = SignalDatabase.messages.getMessageCountForThread(threadId)
messageCount assertIs 2
assertThat(messageCount).isEqualTo(2)
// WHEN
messageHelper.syncDeleteForMeMessage(
@@ -161,10 +163,10 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
// THEN
messageCount = SignalDatabase.messages.getMessageCountForThread(threadId)
messageCount assertIs 0
assertThat(messageCount).isEqualTo(0)
val threadRecord = SignalDatabase.threads.getThreadRecord(threadId)
threadRecord assertIs null
assertThat(threadRecord).isNull()
}
@Test
@@ -174,7 +176,7 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
val threadId = SignalDatabase.threads.getThreadIdFor(messageHelper.alice)!!
var messageCount = SignalDatabase.messages.getMessageCountForThread(threadId)
messageCount assertIs 1
assertThat(messageCount).isEqualTo(1)
// WHEN
val nextTextMessageTimestamp = messageHelper.nextStartTime(2)
@@ -185,7 +187,7 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
// THEN
messageCount = SignalDatabase.messages.getMessageCountForThread(threadId)
messageCount assertIs 1
assertThat(messageCount).isEqualTo(1)
}
@Test
@@ -199,11 +201,11 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
val aliceThreadId = SignalDatabase.threads.getThreadIdFor(messageHelper.alice)!!
var aliceMessageCount = SignalDatabase.messages.getMessageCountForThread(aliceThreadId)
aliceMessageCount assertIs 2
assertThat(aliceMessageCount).isEqualTo(2)
val bobThreadId = SignalDatabase.threads.getThreadIdFor(messageHelper.bob)!!
var bobMessageCount = SignalDatabase.messages.getMessageCountForThread(bobThreadId)
bobMessageCount assertIs 2
assertThat(bobMessageCount).isEqualTo(2)
// WHEN
messageHelper.syncDeleteForMeMessage(
@@ -213,10 +215,10 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
// THEN
aliceMessageCount = SignalDatabase.messages.getMessageCountForThread(aliceThreadId)
aliceMessageCount assertIs 1
assertThat(aliceMessageCount).isEqualTo(1)
bobMessageCount = SignalDatabase.messages.getMessageCountForThread(bobThreadId)
bobMessageCount assertIs 1
assertThat(bobMessageCount).isEqualTo(1)
}
@Test
@@ -230,7 +232,7 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
}
val threadId = SignalDatabase.threads.getThreadIdFor(messageHelper.alice)!!
SignalDatabase.messages.getMessageCountForThread(threadId) assertIs 20
assertThat(SignalDatabase.messages.getMessageCountForThread(threadId)).isEqualTo(20)
// WHEN
messageHelper.syncDeleteForMeConversation(
@@ -242,8 +244,8 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
)
// THEN
SignalDatabase.messages.getMessageCountForThread(threadId) assertIs 0
SignalDatabase.threads.getThreadRecord(threadId) assertIs null
assertThat(SignalDatabase.messages.getMessageCountForThread(threadId)).isEqualTo(0)
assertThat(SignalDatabase.threads.getThreadRecord(threadId)).isNull()
}
@Test
@@ -257,7 +259,7 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
}
val threadId = SignalDatabase.threads.getThreadIdFor(messageHelper.alice)!!
SignalDatabase.messages.getMessageCountForThread(threadId) assertIs 20
assertThat(SignalDatabase.messages.getMessageCountForThread(threadId)).isEqualTo(20)
// WHEN
val randomFutureMessages = (1..5).map {
@@ -269,11 +271,11 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
)
// THEN
SignalDatabase.messages.getMessageCountForThread(threadId) assertIs 20
SignalDatabase.threads.getThreadRecord(threadId).assertIsNotNull()
assertThat(SignalDatabase.messages.getMessageCountForThread(threadId)).isEqualTo(20)
assertThat(SignalDatabase.threads.getThreadRecord(threadId)).isNotNull()
harness.inMemoryLogger.flush()
harness.inMemoryLogger.entries().filter { it.message?.contains("Unable to find most recent received at timestamp") == true }.size assertIs 1
assertThat(harness.inMemoryLogger.entries().filter { it.message?.contains("Unable to find most recent received at timestamp") == true }).hasSize(1)
}
@Test
@@ -287,7 +289,7 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
}
val threadId = SignalDatabase.threads.getThreadIdFor(messageHelper.alice)!!
SignalDatabase.messages.getMessageCountForThread(threadId) assertIs 20
assertThat(SignalDatabase.messages.getMessageCountForThread(threadId)).isEqualTo(20)
// WHEN
val nonExpiringMessages = messages.takeLast(5).map { it.recipientId to it.timetamp }
@@ -301,11 +303,11 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
)
// THEN
SignalDatabase.messages.getMessageCountForThread(threadId) assertIs 0
SignalDatabase.threads.getThreadRecord(threadId) assertIs null
assertThat(SignalDatabase.messages.getMessageCountForThread(threadId)).isEqualTo(0)
assertThat(SignalDatabase.threads.getThreadRecord(threadId)).isNull()
harness.inMemoryLogger.flush()
harness.inMemoryLogger.entries().filter { it.message?.contains("Using backup non-expiring messages") == true }.size assertIs 1
assertThat(harness.inMemoryLogger.entries().filter { it.message?.contains("Using backup non-expiring messages") == true }).hasSize(1)
}
@Test
@@ -328,7 +330,7 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
SignalDatabase.calls.insertOneToOneCall(1, System.currentTimeMillis(), alice.id, CallTable.Type.AUDIO_CALL, CallTable.Direction.OUTGOING, CallTable.Event.ACCEPTED)
val threadId = SignalDatabase.threads.getThreadIdFor(messageHelper.alice)!!
SignalDatabase.messages.getMessageCountForThread(threadId) assertIs 23
assertThat(SignalDatabase.messages.getMessageCountForThread(threadId)).isEqualTo(23)
// WHEN
Log.v(TAG, "Processing sync message")
@@ -341,8 +343,8 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
)
// THEN
SignalDatabase.messages.getMessageCountForThread(threadId) assertIs 0
SignalDatabase.threads.getThreadRecord(threadId) assertIs null
assertThat(SignalDatabase.messages.getMessageCountForThread(threadId)).isEqualTo(0)
assertThat(SignalDatabase.threads.getThreadRecord(threadId)).isNull()
}
@Test
@@ -361,7 +363,7 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
SignalDatabase.calls.insertOneToOneCall(1, System.currentTimeMillis(), alice.id, CallTable.Type.AUDIO_CALL, CallTable.Direction.OUTGOING, CallTable.Event.ACCEPTED)
val threadId = SignalDatabase.threads.getThreadIdFor(messageHelper.alice)!!
SignalDatabase.messages.getMessageCountForThread(threadId) assertIs 23
assertThat(SignalDatabase.messages.getMessageCountForThread(threadId)).isEqualTo(23)
// WHEN
messageHelper.syncDeleteForMeConversation(
@@ -373,8 +375,8 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
)
// THEN
SignalDatabase.messages.getMessageCountForThread(threadId) assertIs 3
SignalDatabase.threads.getThreadRecord(threadId).assertIsNotNull()
assertThat(SignalDatabase.messages.getMessageCountForThread(threadId)).isEqualTo(3)
assertThat(SignalDatabase.threads.getThreadRecord(threadId)).isNotNull()
}
@Test
@@ -402,8 +404,8 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
)
// THEN
SignalDatabase.messages.getMessageCountForThread(threadId) assertIs 0
SignalDatabase.threads.getThreadRecord(threadId) assertIs null
assertThat(SignalDatabase.messages.getMessageCountForThread(threadId)).isEqualTo(0)
assertThat(SignalDatabase.threads.getThreadRecord(threadId)).isNull()
}
@Test
@@ -422,7 +424,7 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
}
val threadIds = allMessages.keys.map { SignalDatabase.threads.getThreadIdFor(it)!! }
threadIds.forEach { SignalDatabase.messages.getMessageCountForThread(it) assertIs 20 }
threadIds.forEach { assertThat(SignalDatabase.messages.getMessageCountForThread(it)).isEqualTo(20) }
// WHEN
messageHelper.syncDeleteForMeConversation(
@@ -432,8 +434,8 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
// THEN
threadIds.forEach {
SignalDatabase.messages.getMessageCountForThread(it) assertIs 0
SignalDatabase.threads.getThreadRecord(it) assertIs null
assertThat(SignalDatabase.messages.getMessageCountForThread(it)).isEqualTo(0)
assertThat(SignalDatabase.threads.getThreadRecord(it)).isNull()
}
}
@@ -454,14 +456,14 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
// Cleanup and confirm setup
SignalDatabase.messages.deleteMessage(messageId = oneToOnePlaceHolderMessage, threadId = aliceThreadId, notify = false, updateThread = false)
SignalDatabase.messages.getMessageCountForThread(aliceThreadId) assert greaterThan(0)
assertThat(SignalDatabase.messages.getMessageCountForThread(aliceThreadId)).isGreaterThan(0)
// WHEN
messageHelper.syncDeleteForMeLocalOnlyConversation(messageHelper.alice)
// THEN
SignalDatabase.messages.getMessageCountForThread(aliceThreadId) assertIs 0
SignalDatabase.threads.getThreadRecord(aliceThreadId) assertIs null
assertThat(SignalDatabase.messages.getMessageCountForThread(aliceThreadId)).isEqualTo(0)
assertThat(SignalDatabase.threads.getThreadRecord(aliceThreadId)).isNull()
}
@Ignore("counts are consistent for some reason")
@@ -516,19 +518,19 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
SignalDatabase.messages.deleteMessage(messageId = groupPlaceholderMessage, threadId = aliceThreadId, notify = false, updateThread = false)
SignalDatabase.rawDatabase.withinTransaction {
SignalDatabase.messages.getMessageCountForThread(aliceThreadId) assertIs 16
SignalDatabase.messages.getMessageCountForThread(groupThreadId) assertIs 10
assertThat(SignalDatabase.messages.getMessageCountForThread(aliceThreadId)).isEqualTo(16)
assertThat(SignalDatabase.messages.getMessageCountForThread(groupThreadId)).isEqualTo(10)
}
// WHEN
messageHelper.syncDeleteForMeLocalOnlyConversation(messageHelper.alice, messageHelper.group.recipientId)
// THEN
SignalDatabase.messages.getMessageCountForThread(aliceThreadId) assertIs 0
SignalDatabase.threads.getThreadRecord(aliceThreadId) assertIs null
assertThat(SignalDatabase.messages.getMessageCountForThread(aliceThreadId)).isEqualTo(0)
assertThat(SignalDatabase.threads.getThreadRecord(aliceThreadId)).isNull()
SignalDatabase.messages.getMessageCountForThread(groupThreadId) assertIs 0
SignalDatabase.threads.getThreadRecord(groupThreadId) assertIs null
assertThat(SignalDatabase.messages.getMessageCountForThread(groupThreadId)).isEqualTo(0)
assertThat(SignalDatabase.threads.getThreadRecord(groupThreadId)).isNull()
}
@Test
@@ -542,17 +544,17 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
}
val threadId = SignalDatabase.threads.getThreadIdFor(messageHelper.alice)!!
SignalDatabase.messages.getMessageCountForThread(threadId) assertIs 20
assertThat(SignalDatabase.messages.getMessageCountForThread(threadId)).isEqualTo(20)
// WHEN
messageHelper.syncDeleteForMeLocalOnlyConversation(messageHelper.alice)
// THEN
SignalDatabase.messages.getMessageCountForThread(threadId) assertIs 20
SignalDatabase.threads.getThreadRecord(threadId).assertIsNotNull()
assertThat(SignalDatabase.messages.getMessageCountForThread(threadId)).isEqualTo(20)
assertThat(SignalDatabase.threads.getThreadRecord(threadId)).isNotNull()
harness.inMemoryLogger.flush()
harness.inMemoryLogger.entries().filter { it.message?.contains("Thread is not local only") == true }.size assertIs 1
assertThat(harness.inMemoryLogger.entries().filter { it.message?.contains("Thread is not local only") == true }).hasSize(1)
}
@Test
@@ -570,10 +572,10 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
}
var attachments = SignalDatabase.attachments.getAttachmentsForMessage(message1.messageId)
attachments assertIsSize 4
assertThat(attachments).hasSize(4)
val threadId = SignalDatabase.threads.getThreadIdFor(messageHelper.alice)!!
SignalDatabase.messages.getMessageCountForThread(threadId) assertIs 1
assertThat(SignalDatabase.messages.getMessageCountForThread(threadId)).isEqualTo(1)
// Has all three
SignalDatabase.attachments.finalizeAttachmentAfterUpload(
@@ -620,10 +622,10 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
attachments[0].dataHash
)
SignalDatabase.messages.getMessageCountForThread(threadId) assertIs 1
assertThat(SignalDatabase.messages.getMessageCountForThread(threadId)).isEqualTo(1)
var updatedAttachments = SignalDatabase.attachments.getAttachmentsForMessage(message1.messageId)
updatedAttachments assertIsSize 3
updatedAttachments.forEach { it.attachmentId assertIsNot attachments[0].attachmentId }
assertThat(updatedAttachments).hasSize(3)
updatedAttachments.forEach { assertThat(it.attachmentId).isNotEqualTo(attachments[0].attachmentId) }
messageHelper.syncDeleteForMeAttachment(
conversationId = messageHelper.alice,
@@ -633,10 +635,10 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
attachments[1].dataHash
)
SignalDatabase.messages.getMessageCountForThread(threadId) assertIs 1
assertThat(SignalDatabase.messages.getMessageCountForThread(threadId)).isEqualTo(1)
updatedAttachments = SignalDatabase.attachments.getAttachmentsForMessage(message1.messageId)
updatedAttachments assertIsSize 2
updatedAttachments.forEach { it.attachmentId assertIsNot attachments[1].attachmentId }
assertThat(updatedAttachments).hasSize(2)
updatedAttachments.forEach { assertThat(it.attachmentId).isNotEqualTo(attachments[1].attachmentId) }
messageHelper.syncDeleteForMeAttachment(
conversationId = messageHelper.alice,
@@ -646,10 +648,10 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
attachments[2].dataHash
)
SignalDatabase.messages.getMessageCountForThread(threadId) assertIs 1
assertThat(SignalDatabase.messages.getMessageCountForThread(threadId)).isEqualTo(1)
updatedAttachments = SignalDatabase.attachments.getAttachmentsForMessage(message1.messageId)
updatedAttachments assertIsSize 1
updatedAttachments.forEach { it.attachmentId assertIsNot attachments[2].attachmentId }
assertThat(updatedAttachments).hasSize(1)
updatedAttachments.forEach { assertThat(it.attachmentId).isNotEqualTo(attachments[2].attachmentId) }
messageHelper.syncDeleteForMeAttachment(
conversationId = messageHelper.alice,
@@ -659,11 +661,11 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
attachments[3].dataHash
)
SignalDatabase.messages.getMessageCountForThread(threadId) assertIs 0
assertThat(SignalDatabase.messages.getMessageCountForThread(threadId)).isEqualTo(0)
updatedAttachments = SignalDatabase.attachments.getAttachmentsForMessage(message1.messageId)
updatedAttachments assertIsSize 0
assertThat(updatedAttachments).isEmpty()
SignalDatabase.threads.getThreadRecord(threadId) assertIs null
assertThat(SignalDatabase.threads.getThreadRecord(threadId)).isNull()
}
private fun DatabaseAttachment.copy(

View File

@@ -1,6 +1,8 @@
package org.thoughtcrime.securesms.migrations
import androidx.test.ext.junit.runners.AndroidJUnit4
import assertk.assertThat
import assertk.assertions.isEqualTo
import io.mockk.Called
import io.mockk.coEvery
import io.mockk.verify
@@ -17,7 +19,6 @@ import org.thoughtcrime.securesms.database.model.InAppPaymentSubscriberRecord
import org.thoughtcrime.securesms.database.model.databaseprotos.InAppPaymentData
import org.thoughtcrime.securesms.dependencies.AppDependencies
import org.thoughtcrime.securesms.testing.SignalActivityRule
import org.thoughtcrime.securesms.testing.assertIs
import org.whispersystems.signalservice.api.storage.IAPSubscriptionId
import org.whispersystems.signalservice.api.subscriptions.SubscriberId
@@ -101,7 +102,7 @@ class GooglePlayBillingPurchaseTokenMigrationJobTest {
val sub = SignalDatabase.inAppPaymentSubscribers.getBackupsSubscriber()
sub?.iapSubscriptionId?.purchaseToken assertIs "-"
assertThat(sub?.iapSubscriptionId?.purchaseToken).isEqualTo("-")
}
@Test
@@ -126,7 +127,7 @@ class GooglePlayBillingPurchaseTokenMigrationJobTest {
val sub = SignalDatabase.inAppPaymentSubscribers.getBackupsSubscriber()
sub?.iapSubscriptionId?.purchaseToken assertIs "-"
assertThat(sub?.iapSubscriptionId?.purchaseToken).isEqualTo("-")
}
@Test
@@ -157,6 +158,6 @@ class GooglePlayBillingPurchaseTokenMigrationJobTest {
val sub = SignalDatabase.inAppPaymentSubscribers.getBackupsSubscriber()
sub?.iapSubscriptionId?.purchaseToken assertIs "purchaseToken"
assertThat(sub?.iapSubscriptionId?.purchaseToken).isEqualTo("purchaseToken")
}
}

View File

@@ -1,6 +1,10 @@
package org.thoughtcrime.securesms.migrations
import androidx.test.ext.junit.runners.AndroidJUnit4
import assertk.assertThat
import assertk.assertions.isEqualTo
import assertk.assertions.isNotNull
import assertk.assertions.isTrue
import org.junit.Test
import org.junit.runner.RunWith
import org.signal.core.util.count
@@ -11,8 +15,6 @@ import org.thoughtcrime.securesms.database.SignalDatabase
import org.thoughtcrime.securesms.database.model.InAppPaymentSubscriberRecord
import org.thoughtcrime.securesms.database.model.databaseprotos.InAppPaymentData
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.testing.assertIs
import org.thoughtcrime.securesms.testing.assertIsNotNull
import org.whispersystems.signalservice.api.subscriptions.SubscriberId
import java.util.Currency
@@ -30,7 +32,7 @@ class SubscriberIdMigrationJobTest {
.run()
.readToSingleInt()
actual assertIs 0
assertThat(actual).isEqualTo(0)
}
@Test
@@ -45,11 +47,14 @@ class SubscriberIdMigrationJobTest {
val actual = SignalDatabase.inAppPaymentSubscribers.getByCurrencyCode("USD")
actual.assertIsNotNull()
actual!!.subscriberId.bytes assertIs subscriberId.bytes
actual.paymentMethodType assertIs InAppPaymentData.PaymentMethodType.PAYPAL
actual.requiresCancel assertIs true
actual.currency assertIs Currency.getInstance("USD")
actual.type assertIs InAppPaymentSubscriberRecord.Type.DONATION
assertThat(actual)
.isNotNull()
.given {
assertThat(it.subscriberId.bytes).isEqualTo(subscriberId.bytes)
assertThat(it.paymentMethodType).isEqualTo(InAppPaymentData.PaymentMethodType.PAYPAL)
assertThat(it.requiresCancel).isTrue()
assertThat(it.currency).isEqualTo(Currency.getInstance("USD"))
assertThat(it.type).isEqualTo(InAppPaymentSubscriberRecord.Type.DONATION)
}
}
}

View File

@@ -18,6 +18,9 @@ import androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility
import androidx.test.espresso.matcher.ViewMatchers.withId
import androidx.test.espresso.matcher.ViewMatchers.withText
import androidx.test.ext.junit.runners.AndroidJUnit4
import assertk.assertThat
import assertk.assertions.isNotNull
import assertk.assertions.isNull
import io.reactivex.rxjava3.schedulers.TestScheduler
import okhttp3.mockwebserver.MockResponse
import org.junit.After
@@ -30,8 +33,6 @@ import org.thoughtcrime.securesms.dependencies.InstrumentationApplicationDepende
import org.thoughtcrime.securesms.testing.Put
import org.thoughtcrime.securesms.testing.RxTestSchedulerRule
import org.thoughtcrime.securesms.testing.SignalActivityRule
import org.thoughtcrime.securesms.testing.assertIsNotNull
import org.thoughtcrime.securesms.testing.assertIsNull
import org.thoughtcrime.securesms.testing.success
import org.whispersystems.signalservice.api.util.Usernames
import org.whispersystems.signalservice.internal.push.ReserveUsernameResponse
@@ -65,10 +66,9 @@ class UsernameEditFragmentTest {
scenario.moveToState(Lifecycle.State.RESUMED)
onView(withId(R.id.toolbar)).check { view, noViewFoundException ->
noViewFoundException.assertIsNull()
assertThat(noViewFoundException).isNull()
val toolbar = view as Toolbar
toolbar.navigationIcon.assertIsNotNull()
assertThat(toolbar.navigationIcon).isNotNull()
}
onView(withText(R.string.UsernameEditFragment_username)).check(matches(isDisplayed()))

View File

@@ -1,13 +1,6 @@
package org.thoughtcrime.securesms.testing
import android.database.Cursor
import org.hamcrest.Matcher
import org.hamcrest.MatcherAssert.assertThat
import org.hamcrest.Matchers.hasSize
import org.hamcrest.Matchers.`is`
import org.hamcrest.Matchers.not
import org.hamcrest.Matchers.notNullValue
import org.hamcrest.Matchers.nullValue
import org.signal.core.util.Hex
import org.signal.core.util.logging.Log
import org.signal.core.util.readToList
@@ -35,32 +28,6 @@ fun runSync(runnable: () -> Unit) {
lock.await()
}
/* Various kotlin-ifications of hamcrest matchers */
fun <T : Any?> T.assertIsNull() {
assertThat(this, nullValue())
}
fun <T : Any?> T.assertIsNotNull() {
assertThat(this, notNullValue())
}
infix fun <T : Any?> T.assertIs(expected: T) {
assertThat(this, `is`(expected))
}
infix fun <T : Any> T.assertIsNot(expected: T) {
assertThat(this, not(`is`(expected)))
}
infix fun <E, T : Collection<E>> T.assertIsSize(expected: Int) {
assertThat(this, hasSize(expected))
}
infix fun <T : Any> T.assert(matcher: Matcher<T>) {
assertThat(this, matcher)
}
fun CountDownLatch.awaitFor(duration: Duration) {
if (!await(duration.inWholeMilliseconds, TimeUnit.MILLISECONDS)) {
throw TimeoutException("Latch await took longer than ${duration.inWholeMilliseconds}ms")