mirror of
https://github.com/oxen-io/session-android.git
synced 2025-12-13 15:42:23 +00:00
Migrated to locally-assigned RecipientId's.
Oh boy.
This commit is contained in:
@@ -0,0 +1,300 @@
|
||||
package org.thoughtcrime.securesms.jobmanager.migrations;
|
||||
|
||||
import android.app.Application;
|
||||
import android.content.Context;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
import org.powermock.modules.junit4.PowerMockRunner;
|
||||
import org.thoughtcrime.securesms.jobmanager.Data;
|
||||
import org.thoughtcrime.securesms.jobmanager.JobMigration.JobData;
|
||||
import org.thoughtcrime.securesms.jobmanager.migrations.RecipientIdJobMigration.NewSerializableSyncMessageId;
|
||||
import org.thoughtcrime.securesms.jobmanager.migrations.RecipientIdJobMigration.OldSerializableSyncMessageId;
|
||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
import org.thoughtcrime.securesms.recipients.RecipientId;
|
||||
import org.thoughtcrime.securesms.util.JsonUtils;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.mockito.Matchers.any;
|
||||
import static org.mockito.Matchers.eq;
|
||||
import static org.powermock.api.mockito.PowerMockito.doReturn;
|
||||
import static org.powermock.api.mockito.PowerMockito.mock;
|
||||
import static org.powermock.api.mockito.PowerMockito.mockStatic;
|
||||
import static org.powermock.api.mockito.PowerMockito.when;
|
||||
|
||||
@RunWith(PowerMockRunner.class)
|
||||
@PrepareForTest({ Recipient.class })
|
||||
public class RecipientIdJobMigrationTest {
|
||||
|
||||
@Before
|
||||
public void init() {
|
||||
mockStatic(Recipient.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void migrate_multiDeviceContactUpdateJob() throws Exception {
|
||||
JobData testData = new JobData("MultiDeviceContactUpdateJob", "MultiDeviceContactUpdateJob", new Data.Builder().putBoolean("force_sync", false).putString("address", "+16101234567").build());
|
||||
mockRecipientResolve("+16101234567", 1);
|
||||
|
||||
RecipientIdJobMigration subject = new RecipientIdJobMigration(mock(Application.class));
|
||||
JobData converted = subject.migrate(testData);
|
||||
|
||||
assertEquals("MultiDeviceContactUpdateJob", converted.getFactoryKey());
|
||||
assertEquals("MultiDeviceContactUpdateJob", converted.getQueueKey());
|
||||
assertFalse(converted.getData().getBoolean("force_sync"));
|
||||
assertFalse(converted.getData().hasString("address"));
|
||||
assertEquals("1", converted.getData().getString("recipient"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void migrate_multiDeviceViewOnceOpenJob() throws Exception {
|
||||
OldSerializableSyncMessageId oldId = new OldSerializableSyncMessageId("+16101234567", 1);
|
||||
JobData testData = new JobData("MultiDeviceRevealUpdateJob", null, new Data.Builder().putString("message_id", JsonUtils.toJson(oldId)).build());
|
||||
mockRecipientResolve("+16101234567", 1);
|
||||
|
||||
RecipientIdJobMigration subject = new RecipientIdJobMigration(mock(Application.class));
|
||||
JobData converted = subject.migrate(testData);
|
||||
|
||||
assertEquals("MultiDeviceRevealUpdateJob", converted.getFactoryKey());
|
||||
assertNull(converted.getQueueKey());
|
||||
assertEquals(JsonUtils.toJson(new NewSerializableSyncMessageId("1", 1)), converted.getData().getString("message_id"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void migrate_requestGroupInfoJob() throws Exception {
|
||||
JobData testData = new JobData("RequestGroupInfoJob", null, new Data.Builder().putString("source", "+16101234567").build());
|
||||
mockRecipientResolve("+16101234567", 1);
|
||||
|
||||
RecipientIdJobMigration subject = new RecipientIdJobMigration(mock(Application.class));
|
||||
JobData converted = subject.migrate(testData);
|
||||
|
||||
assertEquals("RequestGroupInfoJob", converted.getFactoryKey());
|
||||
assertNull(converted.getQueueKey());
|
||||
assertEquals("1", converted.getData().getString("source"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void migrate_sendDeliveryReceiptJob() throws Exception {
|
||||
JobData testData = new JobData("SendDeliveryReceiptJob", null, new Data.Builder().putString("address", "+16101234567").build());
|
||||
mockRecipientResolve("+16101234567", 1);
|
||||
|
||||
RecipientIdJobMigration subject = new RecipientIdJobMigration(mock(Application.class));
|
||||
JobData converted = subject.migrate(testData);
|
||||
|
||||
assertEquals("SendDeliveryReceiptJob", converted.getFactoryKey());
|
||||
assertNull(converted.getQueueKey());
|
||||
assertEquals("1", converted.getData().getString("recipient"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void migrate_multiDeviceVerifiedUpdateJob() throws Exception {
|
||||
JobData testData = new JobData("MultiDeviceVerifiedUpdateJob", "__MULTI_DEVICE_VERIFIED_UPDATE__", new Data.Builder().putString("destination", "+16101234567")
|
||||
.putString("identity_key", "abc")
|
||||
.putInt("verified_status", 1)
|
||||
.putLong("timestamp", 123)
|
||||
.build());
|
||||
mockRecipientResolve("+16101234567", 1);
|
||||
|
||||
RecipientIdJobMigration subject = new RecipientIdJobMigration(mock(Application.class));
|
||||
JobData converted = subject.migrate(testData);
|
||||
|
||||
assertEquals("MultiDeviceVerifiedUpdateJob", converted.getFactoryKey());
|
||||
assertEquals("__MULTI_DEVICE_VERIFIED_UPDATE__", converted.getQueueKey());
|
||||
assertEquals("abc", converted.getData().getString("identity_key"));
|
||||
assertEquals(1, converted.getData().getInt("verified_status"));
|
||||
assertEquals(123, converted.getData().getLong("timestamp"));
|
||||
assertEquals("1", converted.getData().getString("destination"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void migrate_retrieveProfileJob() throws Exception {
|
||||
JobData testData = new JobData("RetrieveProfileJob", null, new Data.Builder().putString("address", "+16101234567").build());
|
||||
mockRecipientResolve("+16101234567", 1);
|
||||
|
||||
RecipientIdJobMigration subject = new RecipientIdJobMigration(mock(Application.class));
|
||||
JobData converted = subject.migrate(testData);
|
||||
|
||||
assertEquals("RetrieveProfileJob", converted.getFactoryKey());
|
||||
assertNull(converted.getQueueKey());
|
||||
assertEquals("1", converted.getData().getString("recipient"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void migrate_pushGroupSendJob_null() throws Exception {
|
||||
JobData testData = new JobData("PushGroupSendJob", "someGroupId", new Data.Builder().putString("filter_address", null)
|
||||
.putLong("message_id", 123)
|
||||
.build());
|
||||
mockRecipientResolve("someGroupId", 5);
|
||||
|
||||
RecipientIdJobMigration subject = new RecipientIdJobMigration(mock(Application.class));
|
||||
JobData converted = subject.migrate(testData);
|
||||
|
||||
assertEquals("PushGroupSendJob", converted.getFactoryKey());
|
||||
assertEquals(RecipientId.from(5).toQueueKey(), converted.getQueueKey());
|
||||
assertNull(converted.getData().getString("filter_recipient"));
|
||||
assertFalse(converted.getData().hasString("filter_address"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void migrate_pushGroupSendJob_nonNull() throws Exception {
|
||||
JobData testData = new JobData("PushGroupSendJob", "someGroupId", new Data.Builder().putString("filter_address", "+16101234567")
|
||||
.putLong("message_id", 123)
|
||||
.build());
|
||||
mockRecipientResolve("+16101234567", 1);
|
||||
mockRecipientResolve("someGroupId", 5);
|
||||
|
||||
RecipientIdJobMigration subject = new RecipientIdJobMigration(mock(Application.class));
|
||||
JobData converted = subject.migrate(testData);
|
||||
|
||||
assertEquals("PushGroupSendJob", converted.getFactoryKey());
|
||||
assertEquals(RecipientId.from(5).toQueueKey(), converted.getQueueKey());
|
||||
assertEquals("1", converted.getData().getString("filter_recipient"));
|
||||
assertFalse(converted.getData().hasString("filter_address"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void migrate_pushGroupUpdateJob() throws Exception {
|
||||
JobData testData = new JobData("PushGroupUpdateJob", null, new Data.Builder().putString("source", "+16101234567").putString("group_id", "abc").build());
|
||||
mockRecipientResolve("+16101234567", 1);
|
||||
|
||||
RecipientIdJobMigration subject = new RecipientIdJobMigration(mock(Application.class));
|
||||
JobData converted = subject.migrate(testData);
|
||||
|
||||
assertEquals("PushGroupUpdateJob", converted.getFactoryKey());
|
||||
assertNull(converted.getQueueKey());
|
||||
assertEquals("1", converted.getData().getString("source"));
|
||||
assertEquals("abc", converted.getData().getString("group_id"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void migrate_directoryRefreshJob_null() throws Exception {
|
||||
JobData testData = new JobData("DirectoryRefreshJob", "DirectoryRefreshJob", new Data.Builder().putString("address", null).putBoolean("notify_of_new_users", true).build());
|
||||
|
||||
RecipientIdJobMigration subject = new RecipientIdJobMigration(mock(Application.class));
|
||||
JobData converted = subject.migrate(testData);
|
||||
|
||||
assertEquals("DirectoryRefreshJob", converted.getFactoryKey());
|
||||
assertEquals("DirectoryRefreshJob", converted.getQueueKey());
|
||||
assertNull(converted.getData().getString("recipient"));
|
||||
assertTrue(converted.getData().getBoolean("notify_of_new_users"));
|
||||
assertFalse(converted.getData().hasString("address"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void migrate_directoryRefreshJob_nonNull() throws Exception {
|
||||
JobData testData = new JobData("DirectoryRefreshJob", "DirectoryRefreshJob", new Data.Builder().putString("address", "+16101234567").putBoolean("notify_of_new_users", true).build());
|
||||
mockRecipientResolve("+16101234567", 1);
|
||||
|
||||
RecipientIdJobMigration subject = new RecipientIdJobMigration(mock(Application.class));
|
||||
JobData converted = subject.migrate(testData);
|
||||
|
||||
assertEquals("DirectoryRefreshJob", converted.getFactoryKey());
|
||||
assertEquals("DirectoryRefreshJob", converted.getQueueKey());
|
||||
assertTrue(converted.getData().getBoolean("notify_of_new_users"));
|
||||
assertEquals("1", converted.getData().getString("recipient"));
|
||||
assertFalse(converted.getData().hasString("address"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void migrate_retrieveProfileAvatarJob() throws Exception {
|
||||
JobData testData = new JobData("RetrieveProfileAvatarJob", "RetrieveProfileAvatarJob+16101234567", new Data.Builder().putString("address", "+16101234567").putString("profile_avatar", "abc").build());
|
||||
mockRecipientResolve("+16101234567", 1);
|
||||
|
||||
RecipientIdJobMigration subject = new RecipientIdJobMigration(mock(Application.class));
|
||||
JobData converted = subject.migrate(testData);
|
||||
|
||||
assertEquals("RetrieveProfileAvatarJob", converted.getFactoryKey());
|
||||
assertEquals("RetrieveProfileAvatarJob::" + RecipientId.from(1).toQueueKey(), converted.getQueueKey());
|
||||
assertEquals("1", converted.getData().getString("recipient"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void migrate_multiDeviceReadUpdateJob_empty() throws Exception {
|
||||
JobData testData = new JobData("MultiDeviceReadUpdateJob", null, new Data.Builder().putStringArray("message_ids", new String[0]).build());
|
||||
|
||||
RecipientIdJobMigration subject = new RecipientIdJobMigration(mock(Application.class));
|
||||
JobData converted = subject.migrate(testData);
|
||||
|
||||
assertEquals("MultiDeviceReadUpdateJob", converted.getFactoryKey());
|
||||
assertNull(converted.getQueueKey());
|
||||
assertEquals(0, converted.getData().getStringArray("message_ids").length);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void migrate_multiDeviceReadUpdateJob_twoIds() throws Exception {
|
||||
OldSerializableSyncMessageId id1 = new OldSerializableSyncMessageId("+16101234567", 1);
|
||||
OldSerializableSyncMessageId id2 = new OldSerializableSyncMessageId("+16101112222", 2);
|
||||
|
||||
JobData testData = new JobData("MultiDeviceReadUpdateJob", null, new Data.Builder().putStringArray("message_ids", new String[]{ JsonUtils.toJson(id1), JsonUtils.toJson(id2) }).build());
|
||||
mockRecipientResolve("+16101234567", 1);
|
||||
mockRecipientResolve("+16101112222", 2);
|
||||
|
||||
RecipientIdJobMigration subject = new RecipientIdJobMigration(mock(Application.class));
|
||||
JobData converted = subject.migrate(testData);
|
||||
|
||||
assertEquals("MultiDeviceReadUpdateJob", converted.getFactoryKey());
|
||||
assertNull(converted.getQueueKey());
|
||||
|
||||
String[] updated = converted.getData().getStringArray("message_ids");
|
||||
assertEquals(2, updated.length);
|
||||
|
||||
assertEquals(JsonUtils.toJson(new NewSerializableSyncMessageId("1", 1)), updated[0]);
|
||||
assertEquals(JsonUtils.toJson(new NewSerializableSyncMessageId("2", 2)), updated[1]);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void migrate_pushTextSendJob() throws Exception {
|
||||
JobData testData = new JobData("PushTextSendJob", "+16101234567", new Data.Builder().putLong("message_id", 1).build());
|
||||
mockRecipientResolve("+16101234567", 1);
|
||||
|
||||
RecipientIdJobMigration subject = new RecipientIdJobMigration(mock(Application.class));
|
||||
JobData converted = subject.migrate(testData);
|
||||
|
||||
assertEquals("PushTextSendJob", converted.getFactoryKey());
|
||||
assertEquals(RecipientId.from(1).toQueueKey(), converted.getQueueKey());
|
||||
assertEquals(1, converted.getData().getLong("message_id"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void migrate_pushMediaSendJob() throws Exception {
|
||||
JobData testData = new JobData("PushMediaSendJob", "+16101234567", new Data.Builder().putLong("message_id", 1).build());
|
||||
mockRecipientResolve("+16101234567", 1);
|
||||
|
||||
RecipientIdJobMigration subject = new RecipientIdJobMigration(mock(Application.class));
|
||||
JobData converted = subject.migrate(testData);
|
||||
|
||||
assertEquals("PushMediaSendJob", converted.getFactoryKey());
|
||||
assertEquals(RecipientId.from(1).toQueueKey(), converted.getQueueKey());
|
||||
assertEquals(1, converted.getData().getLong("message_id"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void migrate_smsSendJob() throws Exception {
|
||||
JobData testData = new JobData("SmsSendJob", "+16101234567", new Data.Builder().putLong("message_id", 1).putInt("run_attempt", 0).build());
|
||||
mockRecipientResolve("+16101234567", 1);
|
||||
|
||||
RecipientIdJobMigration subject = new RecipientIdJobMigration(mock(Application.class));
|
||||
JobData converted = subject.migrate(testData);
|
||||
|
||||
assertEquals("SmsSendJob", converted.getFactoryKey());
|
||||
assertEquals(RecipientId.from(1).toQueueKey(), converted.getQueueKey());
|
||||
assertEquals(1, converted.getData().getLong("message_id"));
|
||||
assertEquals(0, converted.getData().getInt("run_attempt"));
|
||||
}
|
||||
|
||||
private void mockRecipientResolve(String address, long recipientId) throws Exception {
|
||||
doReturn(mockRecipient(recipientId)).when(Recipient.class, "external", any(Context.class), eq(address));
|
||||
}
|
||||
|
||||
private Recipient mockRecipient(long id) {
|
||||
Recipient recipient = mock(Recipient.class);
|
||||
when(recipient.getId()).thenReturn(RecipientId.from(id));
|
||||
return recipient;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package org.thoughtcrime.securesms.database;
|
||||
package org.thoughtcrime.securesms.phonenumbers;
|
||||
|
||||
|
||||
import org.junit.Before;
|
||||
@@ -6,32 +6,32 @@ import org.junit.Test;
|
||||
|
||||
import static junit.framework.Assert.assertEquals;
|
||||
|
||||
public class AddressTest {
|
||||
public class PhoneNumberFormatterTest {
|
||||
|
||||
@Before
|
||||
public void setup() {}
|
||||
|
||||
@Test
|
||||
public void testAddressString() throws Exception {
|
||||
Address.ExternalAddressFormatter formatter = new Address.ExternalAddressFormatter("+14152222222");
|
||||
PhoneNumberFormatter formatter = new PhoneNumberFormatter("+14152222222");
|
||||
assertEquals(formatter.format("bonbon"), "bonbon");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAddressShortCode() throws Exception {
|
||||
Address.ExternalAddressFormatter formatter = new Address.ExternalAddressFormatter("+14152222222");
|
||||
PhoneNumberFormatter formatter = new PhoneNumberFormatter("+14152222222");
|
||||
assertEquals(formatter.format("40404"), "40404");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEmailAddress() throws Exception {
|
||||
Address.ExternalAddressFormatter formatter = new Address.ExternalAddressFormatter("+14152222222");
|
||||
PhoneNumberFormatter formatter = new PhoneNumberFormatter("+14152222222");
|
||||
assertEquals(formatter.format("junk@junk.net"), "junk@junk.net");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNumberArbitrary() throws Exception {
|
||||
Address.ExternalAddressFormatter formatter = new Address.ExternalAddressFormatter("+14152222222");
|
||||
PhoneNumberFormatter formatter = new PhoneNumberFormatter("+14152222222");
|
||||
assertEquals(formatter.format("(415) 111-1122"), "+14151111122");
|
||||
assertEquals(formatter.format("(415) 111 1123"), "+14151111123");
|
||||
assertEquals(formatter.format("415-111-1124"), "+14151111124");
|
||||
@@ -42,13 +42,13 @@ public class AddressTest {
|
||||
assertEquals(formatter.format("911"), "911");
|
||||
assertEquals(formatter.format("+456-7890"), "+4567890");
|
||||
|
||||
formatter = new Address.ExternalAddressFormatter("+442079460010");
|
||||
formatter = new PhoneNumberFormatter("+442079460010");
|
||||
assertEquals(formatter.format("(020) 7946 0018"), "+442079460018");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUsNumbers() {
|
||||
Address.ExternalAddressFormatter formatter = new Address.ExternalAddressFormatter("+16105880522");
|
||||
PhoneNumberFormatter formatter = new PhoneNumberFormatter("+16105880522");
|
||||
|
||||
assertEquals("+551234567890", formatter.format("+551234567890"));
|
||||
assertEquals("+11234567890", formatter.format("(123) 456-7890"));
|
||||
@@ -62,7 +62,7 @@ public class AddressTest {
|
||||
|
||||
@Test
|
||||
public void testBrNumbers() {
|
||||
Address.ExternalAddressFormatter formatter = new Address.ExternalAddressFormatter("+5521912345678");
|
||||
PhoneNumberFormatter formatter = new PhoneNumberFormatter("+5521912345678");
|
||||
|
||||
assertEquals("+16105880522", formatter.format("+16105880522"));
|
||||
assertEquals("+552187654321", formatter.format("8765 4321"));
|
||||
@@ -80,13 +80,13 @@ public class AddressTest {
|
||||
|
||||
@Test
|
||||
public void testGroup() throws Exception {
|
||||
Address.ExternalAddressFormatter formatter = new Address.ExternalAddressFormatter("+14152222222");
|
||||
PhoneNumberFormatter formatter = new PhoneNumberFormatter("+14152222222");
|
||||
assertEquals(formatter.format("__textsecure_group__!foobar"), "__textsecure_group__!foobar");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLostLocalNumber() throws Exception {
|
||||
Address.ExternalAddressFormatter formatter = new Address.ExternalAddressFormatter("US", true);
|
||||
PhoneNumberFormatter formatter = new PhoneNumberFormatter("US", true);
|
||||
assertEquals(formatter.format("(415) 111-1122"), "+14151111122");
|
||||
}
|
||||
}
|
||||
@@ -18,7 +18,6 @@ import static android.provider.ContactsContract.Intents.Insert.PHONE;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@@ -63,7 +62,7 @@ public final class RecipientExporterTest {
|
||||
private Recipient givenRecipient(String profileName, Address address) {
|
||||
Recipient recipient = mock(Recipient.class);
|
||||
when(recipient.getProfileName()).thenReturn(profileName);
|
||||
when(recipient.getAddress()).thenReturn(address);
|
||||
when(recipient.requireAddress()).thenReturn(address);
|
||||
return recipient;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user