From ebee3f72e6a8be59857f337501760cf9ac74315b Mon Sep 17 00:00:00 2001 From: Clark Date: Fri, 21 Jun 2024 10:58:35 -0400 Subject: [PATCH] Add test infrastructure for backup binprotos. --- .../assets/backupTests/account-data.binproto | Bin 0 -> 218 bytes .../registered-blocked-contact.binproto | Bin 0 -> 204 bytes .../story-distribution-list.binproto | Bin 0 -> 454 bytes .../backupTests/unregistered-contact.binproto | Bin 0 -> 209 bytes .../backup/v2/ImportExportTestSuite.kt | 74 ++++++++++++++++++ 5 files changed, 74 insertions(+) create mode 100644 app/src/androidTest/assets/backupTests/account-data.binproto create mode 100644 app/src/androidTest/assets/backupTests/registered-blocked-contact.binproto create mode 100644 app/src/androidTest/assets/backupTests/story-distribution-list.binproto create mode 100644 app/src/androidTest/assets/backupTests/unregistered-contact.binproto create mode 100644 app/src/androidTest/java/org/thoughtcrime/securesms/backup/v2/ImportExportTestSuite.kt diff --git a/app/src/androidTest/assets/backupTests/account-data.binproto b/app/src/androidTest/assets/backupTests/account-data.binproto new file mode 100644 index 0000000000000000000000000000000000000000..54ebb6e04ae667d9af177e3fb99b0799c6a15c9a GIT binary patch literal 218 zcmV<0044tk2muh-`k?ZZMzNS&jaG0COPna$E~^@lRzXyaGz z0Cm~e5)5K*VqsrqWps2dHZ~eI3Ls@?TyxM4un+~~yL?JV@|MeGRQHL2BZw9071$*G zE|U@vVZi~S0M$YliNXaK*hzZu7z82<_SWDg;JlbaXl?3LxyeXvZ`&8ZM(V&8J7n zj73vrB4Jo7PtIE4-l$E^Wf>9!RZ~P50ZJ+e0T2Ng0Vn}50XUExLI?1lkB;xSk4OPf U0ayWG0cZhm0eAs`0Re~s0{WFwlmGw# literal 0 HcmV?d00001 diff --git a/app/src/androidTest/assets/backupTests/registered-blocked-contact.binproto b/app/src/androidTest/assets/backupTests/registered-blocked-contact.binproto new file mode 100644 index 0000000000000000000000000000000000000000..439129a11cd9a7ccfa2015c1cae0e59cb4e916b9 GIT binary patch literal 204 zcmV;-05ksy2muh-`k)LP15N+6tl4PT#& zs?r|wnLx|le4`{yAJPplac9})^;BM>h^V+2^8@v=)RV=vT3~P-xtQ9NPNZXjRKU;GB&1Bmy`{u$-F{Q+VQ5+tLc?!Y# zIr&x$CPGFW%tCrVW1>-w5fTWELKRWixNY}O%K%1*CKj-!2vj9NO_8V~3Y%b>uhv+X2Yb$}i=WphIHw4MEf#gF&QH>Dj0?TU&X>hPBsc;D} zpaCfXE)L&Hh2WC>qDlcq2_^+*10g*Q4kaxvftl}LZkeC!R?`&q{$BI#{~L`UF;}QP!!QVfg+W&o`pkYxY> literal 0 HcmV?d00001 diff --git a/app/src/androidTest/assets/backupTests/unregistered-contact.binproto b/app/src/androidTest/assets/backupTests/unregistered-contact.binproto new file mode 100644 index 0000000000000000000000000000000000000000..cf9413316047bdd1e5eb0dbbcf67afdb79f5fe52 GIT binary patch literal 209 zcmV;?051Ot2muh-`k)LP> { + val testFiles = InstrumentationRegistry.getInstrumentation().context.resources.assets.list(TESTS_FOLDER) + return testFiles?.map { arrayOf(it) }!!.toList() + } + } + + @Before + fun setup() { + SignalStore.svr.setMasterKey(MasterKey(MASTER_KEY), "1234") + SignalStore.account.setE164(SELF_E164) + SignalStore.account.setAci(SELF_ACI) + SignalStore.account.setPni(SELF_PNI) + SignalStore.account.generateAciIdentityKeyIfNecessary() + SignalStore.account.generatePniIdentityKeyIfNecessary() + } + + @Test + fun testBinProto() { + val binProtoBytes: ByteArray = InstrumentationRegistry.getInstrumentation().context.resources.assets.open("${TESTS_FOLDER}/$path").use { + StreamUtil.readFully(it) + } + import(binProtoBytes) + val generatedBackupData = BackupRepository.export() + compare(binProtoBytes, generatedBackupData) + } + + private fun import(importData: ByteArray) { + BackupRepository.import( + length = importData.size.toLong(), + inputStreamFactory = { ByteArrayInputStream(importData) }, + selfData = BackupRepository.SelfData(SELF_ACI, SELF_PNI, SELF_E164, SELF_PROFILE_KEY), + plaintext = true + ) + } + + // TODO compare with libsignal's library + private fun compare(import: ByteArray, export: ByteArray) { + } +}