mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-08-06 13:31:18 +01:00
Add missing field for 1:1 sync messages.
This commit is contained in:
@@ -444,6 +444,7 @@ class IndividualSendJobV2 private constructor(parameters: Parameters, private va
|
||||
timestamp = timestamp,
|
||||
message = dataMessage,
|
||||
editMessage = editMessage,
|
||||
expirationStartTimestamp = if ((dataMessage?.expireTimer ?: 0) > 0) System.currentTimeMillis() else null,
|
||||
unidentifiedStatus = listOf(
|
||||
SyncMessage.Sent.UnidentifiedDeliveryStatus(
|
||||
destinationServiceIdBinary = recipientServiceId.toByteString(),
|
||||
|
||||
@@ -11,6 +11,9 @@ import arrow.core.left
|
||||
import arrow.core.right
|
||||
import assertk.assertThat
|
||||
import assertk.assertions.isEqualTo
|
||||
import assertk.assertions.isGreaterThan
|
||||
import assertk.assertions.isNotNull
|
||||
import assertk.assertions.isNull
|
||||
import assertk.assertions.isTrue
|
||||
import io.mockk.coEvery
|
||||
import io.mockk.coVerify
|
||||
@@ -427,6 +430,46 @@ class IndividualSendJobV2Test {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `Given multi-device and an expiring message, when send succeeds, then sync transcript carries expirationStartTimestamp`() {
|
||||
every { signalStore.account.isMultiDevice } returns true
|
||||
every { outgoingMessage.expiresIn } returns 60_000L
|
||||
dataMessage = DataMessage(timestamp = sentTime, expireTimer = 60)
|
||||
every { outgoingMessage.toDataMessage() } returns dataMessage.right()
|
||||
|
||||
val syncSlot = slot<EnvelopeContent>()
|
||||
val primaryContent = EnvelopeContent.encrypted(Content(dataMessage = dataMessage), ContentHint.RESENDABLE, Optional.empty())
|
||||
coEvery {
|
||||
messageService.sendMessage(any(), any(), any(), any(), any(), any(), any(), any())
|
||||
} returns MessageService.SendSuccess(envelopeContent = primaryContent, sentSealedSender = false, devices = listOf(1)).right()
|
||||
coEvery {
|
||||
messageService.sendSyncMessage(timestamp = any(), envelopeContent = capture(syncSlot), urgent = any(), onEncrypted = any())
|
||||
} returns MessageService.SendSuccess(envelopeContent = primaryContent, sentSealedSender = false, devices = listOf(1)).right()
|
||||
|
||||
createAndRunJob()
|
||||
|
||||
val sent = syncSlot.captured.content.get().syncMessage!!.sent!!
|
||||
assertThat(sent.expirationStartTimestamp).isNotNull().isGreaterThan(0L)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `Given multi-device and a non-expiring message, when send succeeds, then sync transcript omits expirationStartTimestamp`() {
|
||||
every { signalStore.account.isMultiDevice } returns true
|
||||
|
||||
val syncSlot = slot<EnvelopeContent>()
|
||||
coEvery {
|
||||
messageService.sendSyncMessage(timestamp = any(), envelopeContent = capture(syncSlot), urgent = any(), onEncrypted = any())
|
||||
} returns MessageService.SendSuccess(envelopeContent = EnvelopeContent.encrypted(Content(dataMessage = dataMessage), ContentHint.RESENDABLE, Optional.empty()), sentSealedSender = false, devices = listOf(1)).right()
|
||||
coEvery {
|
||||
messageService.sendMessage(any(), any(), any(), any(), any(), any(), any(), any())
|
||||
} returns MessageService.SendSuccess(envelopeContent = EnvelopeContent.encrypted(Content(dataMessage = dataMessage), ContentHint.RESENDABLE, Optional.empty()), sentSealedSender = false, devices = listOf(1)).right()
|
||||
|
||||
createAndRunJob()
|
||||
|
||||
val sent = syncSlot.captured.content.get().syncMessage!!.sent!!
|
||||
assertThat(sent.expirationStartTimestamp).isNull()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `Given an edit of an already-edited message, when run, then target the edited revision's dateSent`() {
|
||||
val editTargetMessageId = messageId + 1
|
||||
|
||||
Reference in New Issue
Block a user