The rest of the storage service unwrapping.

This commit is contained in:
Greyson Parrelli
2024-11-13 10:35:02 -05:00
parent 8746f483c0
commit 7dd1fc09c0
33 changed files with 754 additions and 1692 deletions

View File

@@ -307,9 +307,9 @@ class ContactRecordProcessorTest {
val result = subject.merge(remote, local, TestKeyGenerator(STORAGE_ID_C))
// THEN
assertEquals(local.aci, result.aci)
assertEquals(local.number.get(), result.number.get())
assertEquals(local.pni.get(), result.pni.get())
assertEquals(local.proto.aci, result.proto.aci)
assertEquals(local.proto.e164, result.proto.e164)
assertEquals(local.proto.pni, result.proto.pni)
}
@Test
@@ -339,9 +339,9 @@ class ContactRecordProcessorTest {
val result = subject.merge(remote, local, TestKeyGenerator(STORAGE_ID_C))
// THEN
assertEquals(local.aci, result.aci)
assertEquals(local.number.get(), result.number.get())
assertEquals(local.pni.get(), result.pni.get())
assertEquals(local.proto.aci, result.proto.aci)
assertEquals(local.proto.e164, result.proto.e164)
assertEquals(local.proto.pni, result.proto.pni)
}
@Test
@@ -371,9 +371,9 @@ class ContactRecordProcessorTest {
val result = subject.merge(remote, local, TestKeyGenerator(STORAGE_ID_C))
// THEN
assertEquals(remote.aci, result.aci)
assertEquals(remote.number.get(), result.number.get())
assertEquals(remote.pni.get(), result.pni.get())
assertEquals(remote.proto.aci, result.proto.aci)
assertEquals(remote.proto.e164, result.proto.e164)
assertEquals(remote.proto.pni, result.proto.pni)
}
@Test
@@ -403,9 +403,9 @@ class ContactRecordProcessorTest {
val result = subject.merge(remote, local, TestKeyGenerator(STORAGE_ID_C))
// THEN
assertEquals("Ghost", result.nicknameGivenName.get())
assertEquals("Spider", result.nicknameFamilyName.get())
assertEquals("Spidey Friend", result.note.get())
assertEquals("Ghost", result.proto.nickname?.given)
assertEquals("Spider", result.proto.nickname?.family)
assertEquals("Spidey Friend", result.proto.note)
}
private fun buildRecord(id: StorageId = STORAGE_ID_A, record: ContactRecord): SignalContactRecord {

View File

@@ -14,13 +14,10 @@ import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.storage.StorageSyncHelper.IdDifferenceResult;
import org.thoughtcrime.securesms.util.RemoteConfig;
import org.whispersystems.signalservice.api.push.ServiceId.ACI;
import org.whispersystems.signalservice.api.storage.SignalAccountRecord;
import org.whispersystems.signalservice.api.storage.SignalContactRecord;
import org.whispersystems.signalservice.api.storage.SignalGroupV1Record;
import org.whispersystems.signalservice.api.storage.SignalGroupV2Record;
import org.whispersystems.signalservice.api.storage.SignalRecord;
import org.whispersystems.signalservice.api.storage.SignalStorageRecord;
import org.whispersystems.signalservice.api.storage.StorageId;
import org.whispersystems.signalservice.internal.storage.protos.ContactRecord;
import java.util.Arrays;
import java.util.HashMap;
@@ -28,6 +25,8 @@ import java.util.List;
import java.util.Map;
import java.util.Optional;
import okio.ByteString;
import static junit.framework.TestCase.assertTrue;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -132,13 +131,16 @@ public final class StorageSyncHelperTest {
byte[] profileKey = new byte[32];
byte[] profileKeyCopy = profileKey.clone();
SignalContactRecord a = contactBuilder(1, ACI_A, E164_A, "a").setProfileKey(profileKey).build();
SignalContactRecord b = contactBuilder(1, ACI_A, E164_A, "a").setProfileKey(profileKeyCopy).build();
ContactRecord contactA = contactBuilder(ACI_A, E164_A, "a").profileKey(ByteString.of(profileKey)).build();
ContactRecord contactB = contactBuilder(ACI_A, E164_A, "a").profileKey(ByteString.of(profileKeyCopy)).build();
assertEquals(a, b);
assertEquals(a.hashCode(), b.hashCode());
SignalContactRecord signalContactA = new SignalContactRecord(StorageId.forContact(byteArray(1)), contactA);
SignalContactRecord signalContactB = new SignalContactRecord(StorageId.forContact(byteArray(1)), contactB);
assertFalse(StorageSyncHelper.profileKeyChanged(update(a, b)));
assertEquals(signalContactA, signalContactB);
assertEquals(signalContactA.hashCode(), signalContactB.hashCode());
assertFalse(StorageSyncHelper.profileKeyChanged(update(signalContactA, signalContactB)));
}
@Test
@@ -147,23 +149,23 @@ public final class StorageSyncHelperTest {
byte[] profileKeyCopy = profileKey.clone();
profileKeyCopy[0] = 1;
SignalContactRecord a = contactBuilder(1, ACI_A, E164_A, "a").setProfileKey(profileKey).build();
SignalContactRecord b = contactBuilder(1, ACI_A, E164_A, "a").setProfileKey(profileKeyCopy).build();
ContactRecord contactA = contactBuilder(ACI_A, E164_A, "a").profileKey(ByteString.of(profileKey)).build();
ContactRecord contactB = contactBuilder(ACI_A, E164_A, "a").profileKey(ByteString.of(profileKeyCopy)).build();
assertNotEquals(a, b);
assertNotEquals(a.hashCode(), b.hashCode());
SignalContactRecord signalContactA = new SignalContactRecord(StorageId.forContact(byteArray(1)), contactA);
SignalContactRecord signalContactB = new SignalContactRecord(StorageId.forContact(byteArray(1)), contactB);
assertTrue(StorageSyncHelper.profileKeyChanged(update(a, b)));
assertNotEquals(signalContactA, signalContactB);
assertNotEquals(signalContactA.hashCode(), signalContactB.hashCode());
assertTrue(StorageSyncHelper.profileKeyChanged(update(signalContactA, signalContactB)));
}
private static SignalContactRecord.Builder contactBuilder(int key,
ACI aci,
String e164,
String profileName)
{
return new SignalContactRecord.Builder(byteArray(key), aci, null)
.setE164(e164)
.setProfileGivenName(profileName);
private static ContactRecord.Builder contactBuilder(ACI aci, String e164, String profileName) {
return new ContactRecord.Builder()
.aci(aci.toString())
.e164(e164)
.givenName(profileName);
}
private static <E extends SignalRecord<?>> StorageRecordUpdate<E> update(E oldRecord, E newRecord) {