Add support for resending badly-encrypted stories.

This commit is contained in:
Greyson Parrelli
2022-08-11 13:37:37 -04:00
committed by Alex Hart
parent 7873ec2b67
commit c6be427883
11 changed files with 288 additions and 71 deletions

View File

@@ -0,0 +1,85 @@
package org.thoughtcrime.securesms.jobmanager.migrations;
import org.junit.Test;
import org.thoughtcrime.securesms.database.GroupDatabase;
import org.thoughtcrime.securesms.database.MmsSmsDatabase;
import org.thoughtcrime.securesms.groups.GroupId;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.JobMigration;
import org.thoughtcrime.securesms.jobs.FailingJob;
import org.thoughtcrime.securesms.jobs.SendReadReceiptJob;
import org.thoughtcrime.securesms.jobs.SenderKeyDistributionSendJob;
import org.thoughtcrime.securesms.recipients.RecipientId;
import org.thoughtcrime.securesms.util.Util;
import java.util.ArrayList;
import java.util.Optional;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class SenderKeyDistributionSendJobRecipientMigrationTest {
private final GroupDatabase mockDatabase = mock(GroupDatabase.class);
private final SenderKeyDistributionSendJobRecipientMigration testSubject = new SenderKeyDistributionSendJobRecipientMigration(mockDatabase);
private static final GroupId GROUP_ID = GroupId.pushOrThrow(Util.getSecretBytes(32));
@Test
public void normalMigration() {
// GIVEN
JobMigration.JobData jobData = new JobMigration.JobData(SenderKeyDistributionSendJob.KEY,
"asdf",
new Data.Builder()
.putString("recipient_id", RecipientId.from(1).serialize())
.putBlobAsString("group_id", GROUP_ID.getDecodedId())
.build());
GroupDatabase.GroupRecord mockGroup = mock(GroupDatabase.GroupRecord.class);
when(mockGroup.getRecipientId()).thenReturn(RecipientId.from(2));
when(mockDatabase.getGroup(GROUP_ID)).thenReturn(Optional.of(mockGroup));
// WHEN
JobMigration.JobData result = testSubject.migrate(jobData);
// THEN
assertEquals(RecipientId.from(1).serialize(), result.getData().getString("recipient_id"));
assertEquals(RecipientId.from(2).serialize(), result.getData().getString("thread_recipient_id"));
}
@Test
public void cannotFindGroup() {
// GIVEN
JobMigration.JobData jobData = new JobMigration.JobData(SenderKeyDistributionSendJob.KEY,
"asdf",
new Data.Builder()
.putString("recipient_id", RecipientId.from(1).serialize())
.putBlobAsString("group_id", GROUP_ID.getDecodedId())
.build());
// WHEN
JobMigration.JobData result = testSubject.migrate(jobData);
// THEN
assertEquals(FailingJob.KEY, result.getFactoryKey());
}
@Test
public void missingGroupId() {
// GIVEN
JobMigration.JobData jobData = new JobMigration.JobData(SenderKeyDistributionSendJob.KEY,
"asdf",
new Data.Builder()
.putString("recipient_id", RecipientId.from(1).serialize())
.build());
// WHEN
JobMigration.JobData result = testSubject.migrate(jobData);
// THEN
assertEquals(FailingJob.KEY, result.getFactoryKey());
}
}