mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-24 03:35:58 +00:00
Do most of the proto and database groundwork for the new mediaName.
This commit is contained in:
committed by
Cody Henthorne
parent
e705495638
commit
38c8f852bf
@@ -15,6 +15,7 @@ import org.junit.Before
|
||||
import org.junit.Ignore
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.signal.core.util.Base64.decodeBase64OrThrow
|
||||
import org.signal.core.util.copyTo
|
||||
import org.signal.core.util.readFully
|
||||
import org.signal.core.util.stream.NullOutputStream
|
||||
@@ -200,7 +201,7 @@ class AttachmentTableTest {
|
||||
|
||||
// Give data to attachment table
|
||||
val cipherInputStream = AttachmentCipherInputStream.createForAttachment(cipherFile, plaintext.size.toLong(), key, badlyPaddedDigest, null, 4)
|
||||
SignalDatabase.attachments.finalizeAttachmentAfterDownload(mmsId, attachmentId, cipherInputStream, iv)
|
||||
SignalDatabase.attachments.finalizeAttachmentAfterDownload(mmsId, attachmentId, cipherInputStream)
|
||||
|
||||
// Verify the digest has been updated to the properly padded one
|
||||
val properlyPaddedPlaintext = PaddingInputStream(plaintext.inputStream(), plaintext.size.toLong()).readFully()
|
||||
@@ -231,7 +232,7 @@ class AttachmentTableTest {
|
||||
|
||||
// Give data to attachment table
|
||||
val cipherInputStream = AttachmentCipherInputStream.createForAttachment(cipherFile, plaintext.size.toLong(), key, digest, null, 4)
|
||||
SignalDatabase.attachments.finalizeAttachmentAfterDownload(mmsId, attachmentId, cipherInputStream, iv)
|
||||
SignalDatabase.attachments.finalizeAttachmentAfterDownload(mmsId, attachmentId, cipherInputStream)
|
||||
|
||||
// Verify the digest hasn't changed
|
||||
val newDigest = SignalDatabase.attachments.getAttachment(attachmentId)!!.remoteDigest!!
|
||||
@@ -239,7 +240,7 @@ class AttachmentTableTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
fun resetArchiveTransferStateByDigest_singleMatch() {
|
||||
fun resetArchiveTransferStateByPlaintextHashAndRemoteKey_singleMatch() {
|
||||
// Given an attachment with some digest
|
||||
val blob = BlobProvider.getInstance().forData(byteArrayOf(1, 2, 3, 4, 5)).createForSingleSessionInMemory()
|
||||
val attachment = createAttachment(1, blob, AttachmentTable.TransformProperties.empty())
|
||||
@@ -248,8 +249,9 @@ class AttachmentTableTest {
|
||||
SignalDatabase.attachments.setArchiveTransferState(attachmentId, AttachmentTable.ArchiveTransferState.FINISHED)
|
||||
|
||||
// Reset the transfer state by digest
|
||||
val digest = SignalDatabase.attachments.getAttachment(attachmentId)!!.remoteDigest!!
|
||||
SignalDatabase.attachments.resetArchiveTransferStateByDigest(digest)
|
||||
val plaintextHash = SignalDatabase.attachments.getAttachment(attachmentId)!!.dataHash!!.decodeBase64OrThrow()
|
||||
val remoteKey = SignalDatabase.attachments.getAttachment(attachmentId)!!.remoteKey!!.decodeBase64OrThrow()
|
||||
SignalDatabase.attachments.resetArchiveTransferStateByPlaintextHashAndRemoteKey(plaintextHash, remoteKey)
|
||||
|
||||
// Verify it's been reset
|
||||
assertThat(SignalDatabase.attachments.getAttachment(attachmentId)!!.archiveTransferState).isEqualTo(AttachmentTable.ArchiveTransferState.NONE)
|
||||
|
||||
@@ -22,7 +22,6 @@ object AttachmentTableTestUtil {
|
||||
remoteId = SignalServiceAttachmentRemoteId.V4("somewhere-${Random.nextLong()}"),
|
||||
cdnNumber = Cdn.CDN_3.cdnNumber,
|
||||
key = databaseAttachment.remoteKey?.let { Base64.decode(it) } ?: Util.getSecretBytes(64),
|
||||
iv = databaseAttachment.remoteIv ?: Util.getSecretBytes(16),
|
||||
digest = Random.nextBytes(32),
|
||||
incrementalDigest = Random.nextBytes(16),
|
||||
incrementalDigestChunkSize = 5,
|
||||
|
||||
@@ -726,7 +726,7 @@ class AttachmentTableTest_deduping {
|
||||
}
|
||||
|
||||
fun upload(attachmentId: AttachmentId, uploadTimestamp: Long = System.currentTimeMillis()) {
|
||||
SignalDatabase.attachments.createKeyIvIfNecessary(attachmentId)
|
||||
SignalDatabase.attachments.createRemoteKeyIfNecessary(attachmentId)
|
||||
SignalDatabase.attachments.finalizeAttachmentAfterUpload(attachmentId, AttachmentTableTestUtil.createUploadResult(attachmentId, uploadTimestamp))
|
||||
|
||||
val attachment = SignalDatabase.attachments.getAttachment(attachmentId)!!
|
||||
@@ -747,8 +747,7 @@ class AttachmentTableTest_deduping {
|
||||
SignalDatabase.attachments.finalizeAttachmentAfterDownload(
|
||||
mmsId = 1,
|
||||
attachmentId = attachmentId,
|
||||
inputStream = LimitedInputStream(paddedData.inputStream(), data.size.toLong()),
|
||||
iv = Util.getSecretBytes(16)
|
||||
inputStream = LimitedInputStream(paddedData.inputStream(), data.size.toLong())
|
||||
)
|
||||
}
|
||||
|
||||
@@ -842,7 +841,6 @@ class AttachmentTableTest_deduping {
|
||||
|
||||
assertEquals(lhsAttachment.remoteLocation, rhsAttachment.remoteLocation)
|
||||
assertEquals(lhsAttachment.remoteKey, rhsAttachment.remoteKey)
|
||||
assertArrayEquals(lhsAttachment.remoteIv, rhsAttachment.remoteIv)
|
||||
assertArrayEquals(lhsAttachment.remoteDigest, rhsAttachment.remoteDigest)
|
||||
assertArrayEquals(lhsAttachment.incrementalDigest, rhsAttachment.incrementalDigest)
|
||||
assertEquals(lhsAttachment.incrementalMacChunkSize, rhsAttachment.incrementalMacChunkSize)
|
||||
|
||||
@@ -146,7 +146,8 @@ class BackupMediaSnapshotTableTest {
|
||||
val mismatches = SignalDatabase.backupMediaSnapshots.getMediaObjectsWithNonMatchingCdn(remoteData)
|
||||
assertThat(mismatches.size).isEqualTo(1)
|
||||
assertThat(mismatches[0].cdn).isEqualTo(99)
|
||||
assertThat(mismatches[0].digest).isEqualTo(localData[1].digest)
|
||||
assertThat(mismatches[0].plaintextHash).isEqualTo(localData[1].plaintextHash)
|
||||
assertThat(mismatches[0].remoteKey).isEqualTo(localData[1].remoteKey)
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -300,7 +301,8 @@ class BackupMediaSnapshotTableTest {
|
||||
mediaId = "media_id_$seed",
|
||||
thumbnailMediaId = "thumbnail_media_id_$seed",
|
||||
cdn = cdn,
|
||||
digest = Util.toByteArray(seed)
|
||||
plaintextHash = Util.toByteArray(seed),
|
||||
remoteKey = Util.toByteArray(seed)
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -684,7 +684,6 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
|
||||
cdn = this.cdn,
|
||||
location = this.remoteLocation,
|
||||
key = this.remoteKey,
|
||||
iv = this.remoteIv,
|
||||
digest = digest,
|
||||
incrementalDigest = this.incrementalDigest,
|
||||
incrementalMacChunkSize = this.incrementalMacChunkSize,
|
||||
@@ -718,7 +717,6 @@ class SyncMessageProcessorTest_synchronizeDeleteForMe {
|
||||
remoteId = SignalServiceAttachmentRemoteId.V4(this.remoteLocation ?: "some-location"),
|
||||
cdnNumber = this.cdn.cdnNumber,
|
||||
key = this.remoteKey?.let { Base64.decode(it) } ?: Util.getSecretBytes(64),
|
||||
iv = this.remoteIv ?: Util.getSecretBytes(16),
|
||||
digest = digest,
|
||||
incrementalDigest = this.incrementalDigest,
|
||||
incrementalDigestChunkSize = this.incrementalMacChunkSize,
|
||||
|
||||
Reference in New Issue
Block a user