diff --git a/.gitmodules b/.gitmodules index 4c9da7d56b..3eeceff104 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "Pods"] path = Pods url = https://github.com/signalapp/Signal-Pods.git +[submodule "SignalServiceKit/tests/MessageBackup/Signal-Message-Backup-Tests"] + path = SignalServiceKit/tests/MessageBackup/Signal-Message-Backup-Tests + url = https://github.com/signalapp/Signal-Message-Backup-Tests diff --git a/Signal.xcodeproj/project.pbxproj b/Signal.xcodeproj/project.pbxproj index 885d72b49d..ecb9a12997 100644 --- a/Signal.xcodeproj/project.pbxproj +++ b/Signal.xcodeproj/project.pbxproj @@ -1671,6 +1671,12 @@ D91AC9402B63393300814975 /* OWSGroupCallMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = D91AC93F2B63393300814975 /* OWSGroupCallMessage.swift */; }; D91F0B4E2B193A5C0086DB30 /* GroupCallRecordRingUpdateDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9B91D8D2B17E2A600BCB11A /* GroupCallRecordRingUpdateDelegate.swift */; }; D91F0B4F2B193A7A0086DB30 /* GroupCallRecordRingUpdateDelegateTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = D91F0B4B2B1939B60086DB30 /* GroupCallRecordRingUpdateDelegateTest.swift */; }; + D9247E9E2BFBED2A00DFEF6F /* registered-blocked-contact.jsonproto in Resources */ = {isa = PBXBuildFile; fileRef = D9247E982BFBED2A00DFEF6F /* registered-blocked-contact.jsonproto */; }; + D9247E9F2BFBED2A00DFEF6F /* unregistered-contact.jsonproto in Resources */ = {isa = PBXBuildFile; fileRef = D9247E992BFBED2A00DFEF6F /* unregistered-contact.jsonproto */; }; + D9247EA02BFBED2A00DFEF6F /* account-data.jsonproto in Resources */ = {isa = PBXBuildFile; fileRef = D9247E9A2BFBED2A00DFEF6F /* account-data.jsonproto */; }; + D9247EA12BFBED2A00DFEF6F /* account-data.binproto in Resources */ = {isa = PBXBuildFile; fileRef = D9247E9B2BFBED2A00DFEF6F /* account-data.binproto */; }; + D9247EA22BFBED2A00DFEF6F /* unregistered-contact.binproto in Resources */ = {isa = PBXBuildFile; fileRef = D9247E9C2BFBED2A00DFEF6F /* unregistered-contact.binproto */; }; + D9247EA32BFBED2A00DFEF6F /* registered-blocked-contact.binproto in Resources */ = {isa = PBXBuildFile; fileRef = D9247E9D2BFBED2A00DFEF6F /* registered-blocked-contact.binproto */; }; D925937A28B0497900D5D437 /* LocalUserLeaveGroupJob.swift in Sources */ = {isa = PBXBuildFile; fileRef = D925937928B0497900D5D437 /* LocalUserLeaveGroupJob.swift */; }; D925C7BB2B7BEC0F00AC73B0 /* OutgoingCallLogEventSyncMessageTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = D925C7BA2B7BEC0F00AC73B0 /* OutgoingCallLogEventSyncMessageTest.swift */; }; D925F5512983399D00158EE4 /* CircleButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = D925F5502983399D00158EE4 /* CircleButton.swift */; }; @@ -1786,9 +1792,6 @@ D9AE0ADB29188A170063488B /* LegacyMessageDecryptJobRecord.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9AE0ADA29188A170063488B /* LegacyMessageDecryptJobRecord.swift */; }; D9AE0ADD2918B2960063488B /* JobRecord+Columns.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9AE0ADC2918B2960063488B /* JobRecord+Columns.swift */; }; D9B0AC7429EF42960070F31C /* TSInfoMessage+DisplayableGroupUpdateItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9B0AC7329EF42960070F31C /* TSInfoMessage+DisplayableGroupUpdateItem.swift */; }; - D9B6FD752BF2B94A00BB7DF1 /* account-data.jsonproto in Resources */ = {isa = PBXBuildFile; fileRef = D9B6FD742BF2B94A00BB7DF1 /* account-data.jsonproto */; }; - D9B6FD7A2BF40A7200BB7DF1 /* unregistered-contact.jsonproto in Resources */ = {isa = PBXBuildFile; fileRef = D9B6FD782BF40A7200BB7DF1 /* unregistered-contact.jsonproto */; }; - D9B6FD852BF53FCF00BB7DF1 /* registered-blocked-contact.jsonproto in Resources */ = {isa = PBXBuildFile; fileRef = D9B6FD7C2BF53C0100BB7DF1 /* registered-blocked-contact.jsonproto */; }; D9B8541229137C150058F97B /* JobRecord.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9B8541129137C150058F97B /* JobRecord.swift */; }; D9B95A9629E6830B00D7CB95 /* JobRecordTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9B95A9429E682E900D7CB95 /* JobRecordTest.swift */; }; D9B95A9829E8906200D7CB95 /* OWSDeviceTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9B95A9729E8906200D7CB95 /* OWSDeviceTest.swift */; }; @@ -4572,6 +4575,12 @@ D91AC93F2B63393300814975 /* OWSGroupCallMessage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OWSGroupCallMessage.swift; sourceTree = ""; }; D91F0B4B2B1939B60086DB30 /* GroupCallRecordRingUpdateDelegateTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupCallRecordRingUpdateDelegateTest.swift; sourceTree = ""; }; D91F7A2C2935A32F00012C64 /* DonationMode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DonationMode.swift; sourceTree = ""; }; + D9247E982BFBED2A00DFEF6F /* registered-blocked-contact.jsonproto */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "registered-blocked-contact.jsonproto"; path = "Signal-Message-Backup-Tests/test-cases/registered-blocked-contact.jsonproto"; sourceTree = ""; }; + D9247E992BFBED2A00DFEF6F /* unregistered-contact.jsonproto */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "unregistered-contact.jsonproto"; path = "Signal-Message-Backup-Tests/test-cases/unregistered-contact.jsonproto"; sourceTree = ""; }; + D9247E9A2BFBED2A00DFEF6F /* account-data.jsonproto */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "account-data.jsonproto"; path = "Signal-Message-Backup-Tests/test-cases/account-data.jsonproto"; sourceTree = ""; }; + D9247E9B2BFBED2A00DFEF6F /* account-data.binproto */ = {isa = PBXFileReference; lastKnownFileType = file; name = "account-data.binproto"; path = "Signal-Message-Backup-Tests/test-cases/account-data.binproto"; sourceTree = ""; }; + D9247E9C2BFBED2A00DFEF6F /* unregistered-contact.binproto */ = {isa = PBXFileReference; lastKnownFileType = file; name = "unregistered-contact.binproto"; path = "Signal-Message-Backup-Tests/test-cases/unregistered-contact.binproto"; sourceTree = ""; }; + D9247E9D2BFBED2A00DFEF6F /* registered-blocked-contact.binproto */ = {isa = PBXFileReference; lastKnownFileType = file; name = "registered-blocked-contact.binproto"; path = "Signal-Message-Backup-Tests/test-cases/registered-blocked-contact.binproto"; sourceTree = ""; }; D925937928B0497900D5D437 /* LocalUserLeaveGroupJob.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocalUserLeaveGroupJob.swift; sourceTree = ""; }; D925C7BA2B7BEC0F00AC73B0 /* OutgoingCallLogEventSyncMessageTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OutgoingCallLogEventSyncMessageTest.swift; sourceTree = ""; }; D925F5502983399D00158EE4 /* CircleButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CircleButton.swift; sourceTree = ""; }; @@ -4696,9 +4705,6 @@ D9AE0ADA29188A170063488B /* LegacyMessageDecryptJobRecord.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacyMessageDecryptJobRecord.swift; sourceTree = ""; }; D9AE0ADC2918B2960063488B /* JobRecord+Columns.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "JobRecord+Columns.swift"; sourceTree = ""; }; D9B0AC7329EF42960070F31C /* TSInfoMessage+DisplayableGroupUpdateItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TSInfoMessage+DisplayableGroupUpdateItem.swift"; sourceTree = ""; }; - D9B6FD742BF2B94A00BB7DF1 /* account-data.jsonproto */ = {isa = PBXFileReference; lastKnownFileType = text; path = "account-data.jsonproto"; sourceTree = ""; }; - D9B6FD782BF40A7200BB7DF1 /* unregistered-contact.jsonproto */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "unregistered-contact.jsonproto"; sourceTree = ""; }; - D9B6FD7C2BF53C0100BB7DF1 /* registered-blocked-contact.jsonproto */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "registered-blocked-contact.jsonproto"; sourceTree = ""; }; D9B8541129137C150058F97B /* JobRecord.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JobRecord.swift; sourceTree = ""; }; D9B91D8D2B17E2A600BCB11A /* GroupCallRecordRingUpdateDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupCallRecordRingUpdateDelegate.swift; sourceTree = ""; }; D9B95A9429E682E900D7CB95 /* JobRecordTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JobRecordTest.swift; sourceTree = ""; }; @@ -9337,6 +9343,19 @@ path = Megaphones; sourceTree = ""; }; + D9247E4F2BFBE9B400DFEF6F /* TestCases */ = { + isa = PBXGroup; + children = ( + D9247E9B2BFBED2A00DFEF6F /* account-data.binproto */, + D9247E9A2BFBED2A00DFEF6F /* account-data.jsonproto */, + D9247E9D2BFBED2A00DFEF6F /* registered-blocked-contact.binproto */, + D9247E982BFBED2A00DFEF6F /* registered-blocked-contact.jsonproto */, + D9247E9C2BFBED2A00DFEF6F /* unregistered-contact.binproto */, + D9247E992BFBED2A00DFEF6F /* unregistered-contact.jsonproto */, + ); + name = TestCases; + sourceTree = ""; + }; D925F55C298C6A6000158EE4 /* Usernames */ = { isa = PBXGroup; children = ( @@ -9585,16 +9604,6 @@ path = Individual; sourceTree = ""; }; - D9B6FD732BF2B92000BB7DF1 /* TestCases */ = { - isa = PBXGroup; - children = ( - D9B6FD742BF2B94A00BB7DF1 /* account-data.jsonproto */, - D9B6FD7C2BF53C0100BB7DF1 /* registered-blocked-contact.jsonproto */, - D9B6FD782BF40A7200BB7DF1 /* unregistered-contact.jsonproto */, - ); - path = TestCases; - sourceTree = ""; - }; D9B95A9329E682CA00D7CB95 /* JobRecords */ = { isa = PBXGroup; children = ( @@ -9627,7 +9636,7 @@ D9C964152BE56DE20058F143 /* MessageBackup */ = { isa = PBXGroup; children = ( - D9B6FD732BF2B92000BB7DF1 /* TestCases */, + D9247E4F2BFBE9B400DFEF6F /* TestCases */, D9C964182BE59E270058F143 /* MessageBackupIntegrationTest.swift */, D9C964162BE56DFB0058F143 /* MessageBackupIntegrationTestCase.swift */, ); @@ -12019,13 +12028,16 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - D9B6FD752BF2B94A00BB7DF1 /* account-data.jsonproto in Resources */, - D9B6FD852BF53FCF00BB7DF1 /* registered-blocked-contact.jsonproto in Resources */, + D9247EA12BFBED2A00DFEF6F /* account-data.binproto in Resources */, + D9247EA02BFBED2A00DFEF6F /* account-data.jsonproto in Resources */, + D9247EA32BFBED2A00DFEF6F /* registered-blocked-contact.binproto in Resources */, + D9247E9E2BFBED2A00DFEF6F /* registered-blocked-contact.jsonproto in Resources */, F942628B289B1B5600460798 /* sample-sticker.encrypted in Resources */, F942628C289B1B5600460798 /* sample-sticker.webp in Resources */, F908AA7D28CE629700472E68 /* test-apng.png in Resources */, F927478828CFE9B10056EAFE /* test-png.png in Resources */, - D9B6FD7A2BF40A7200BB7DF1 /* unregistered-contact.jsonproto in Resources */, + D9247EA22BFBED2A00DFEF6F /* unregistered-contact.binproto in Resources */, + D9247E9F2BFBED2A00DFEF6F /* unregistered-contact.jsonproto in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/SignalServiceKit/tests/MessageBackup/MessageBackupIntegrationTest.swift b/SignalServiceKit/tests/MessageBackup/MessageBackupIntegrationTest.swift index fbccdadf2e..6f21d48ea9 100644 --- a/SignalServiceKit/tests/MessageBackup/MessageBackupIntegrationTest.swift +++ b/SignalServiceKit/tests/MessageBackup/MessageBackupIntegrationTest.swift @@ -11,17 +11,10 @@ import XCTest private extension MessageBackupIntegrationTestCase { var depBridge: DependenciesBridge { .shared } - - func skipTestForNow() throws { - // [Backup] TODO: unwind this once we've codified shared integration test cases. - throw XCTSkip("Skipped while we codify shared integration test cases.") - } } final class MessageBackupAccountDataTest: MessageBackupIntegrationTestCase { func testAccountData() async throws { - try skipTestForNow() - try await runTest(backupName: "account-data") { sdsTx, tx in XCTAssertNotNil(profileManager.localProfileKey()) @@ -100,8 +93,6 @@ final class MessageBackupContactTest: MessageBackupIntegrationTestCase { } func testRegisteredBlockedContact() async throws { - try skipTestForNow() - try await runTest(backupName: "registered-blocked-contact") { sdsTx, tx in let allRecipients = depBridge.recipientDatabaseTable.allRecipients(tx: tx) XCTAssertEqual(allRecipients.count, 1) @@ -120,8 +111,6 @@ final class MessageBackupContactTest: MessageBackupIntegrationTestCase { } func testUnregisteredContact() async throws { - try skipTestForNow() - try await runTest(backupName: "unregistered-contact") { sdsTx, tx in let allRecipients = depBridge.recipientDatabaseTable.allRecipients(tx: tx) XCTAssertEqual(allRecipients.count, 1) diff --git a/SignalServiceKit/tests/MessageBackup/Scripts/generate-base64-bytes.zsh b/SignalServiceKit/tests/MessageBackup/Scripts/generate-base64-bytes.zsh deleted file mode 100755 index c348dbeb53..0000000000 --- a/SignalServiceKit/tests/MessageBackup/Scripts/generate-base64-bytes.zsh +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env zsh - -if [ "$#" -ne 1 ]; then - length=32 -else - length="$1" -fi - -openssl rand -base64 "$length" diff --git a/SignalServiceKit/tests/MessageBackup/Scripts/generate-base64-uuid.zsh b/SignalServiceKit/tests/MessageBackup/Scripts/generate-base64-uuid.zsh deleted file mode 100755 index 294ea4e7af..0000000000 --- a/SignalServiceKit/tests/MessageBackup/Scripts/generate-base64-uuid.zsh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env zsh - -uuid=$(uuidgen) - -echo "UUID: $uuid" -echo "UUID Base64: $(echo $uuid | xxd -r -p | base64)" diff --git a/SignalServiceKit/tests/MessageBackup/Signal-Message-Backup-Tests b/SignalServiceKit/tests/MessageBackup/Signal-Message-Backup-Tests new file mode 160000 index 0000000000..a9edf46a22 --- /dev/null +++ b/SignalServiceKit/tests/MessageBackup/Signal-Message-Backup-Tests @@ -0,0 +1 @@ +Subproject commit a9edf46a2299e16da39d3a72e85a541a80ecb8e6 diff --git a/SignalServiceKit/tests/MessageBackup/TestCases/account-data.jsonproto b/SignalServiceKit/tests/MessageBackup/TestCases/account-data.jsonproto deleted file mode 100644 index 2fd4f36788..0000000000 --- a/SignalServiceKit/tests/MessageBackup/TestCases/account-data.jsonproto +++ /dev/null @@ -1,42 +0,0 @@ -[ - { - "version": "1", - "backupTimeMs": "1715636551000" - }, - { - "account": { - "profileKey": "YQKRq+3DQklInaOaMcmlzZnN0m/1hzLiaONX7gB12dg=", - "username": "boba_fett.66", - "usernameLink": { - "entropy": "ZWdcc9AOsBAF47t8SkfylstlVPeJgSOIFekV2CT9LpM=", - "serverId": "YcEBogDVQheJwgUY2El68A==", - "color": "OLIVE" - }, - "givenName": "Boba", - "familyName": "Fett", - "avatarUrlPath": "", - "subscriberId": "7LtoxzQzGi6jM82nR8mMRVNlImFYK0/OWuDeqE3OZRk=", - "subscriberCurrencyCode": "USD", - "subscriptionManuallyCancelled": true, - "accountSettings": { - "readReceipts": true, - "sealedSenderIndicators": true, - "typingIndicators": true, - "linkPreviews": false, - "notDiscoverableByPhoneNumber": true, - "preferContactAvatars": true, - "universalExpireTimer": 3600, - "preferredReactionEmoji": ["🏎️"], - "displayBadgesOnProfile": true, - "keepMutedChatsArchived": true, - "hasSetMyStoriesPrivacy": true, - "hasViewedOnboardingStory": true, - "storiesDisabled": true, - "storyViewReceiptsEnabled": true, - "hasSeenGroupStoryEducationSheet": true, - "hasCompletedUsernameOnboarding": true, - "phoneNumberSharingMode": "NOBODY" - } - } - } -] diff --git a/SignalServiceKit/tests/MessageBackup/TestCases/registered-blocked-contact.jsonproto b/SignalServiceKit/tests/MessageBackup/TestCases/registered-blocked-contact.jsonproto deleted file mode 100644 index 466ba140cf..0000000000 --- a/SignalServiceKit/tests/MessageBackup/TestCases/registered-blocked-contact.jsonproto +++ /dev/null @@ -1,74 +0,0 @@ -[ - { - "version": "1", - "backupTimeMs": "1715636551000" - }, - { - "account": { - "profileKey": "YQKRq+3DQklInaOaMcmlzZnN0m/1hzLiaONX7gB12dg=", - "givenName": "Boba", - "familyName": "Fett", - "avatarUrlPath": "", - "subscriberId": "", - "subscriberCurrencyCode": "", - "subscriptionManuallyCancelled": false, - "accountSettings": { - "readReceipts": false, - "sealedSenderIndicators": true, - "typingIndicators": false, - "linkPreviews": false, - "notDiscoverableByPhoneNumber": false, - "preferContactAvatars": false, - "universalExpireTimer": 0, - "preferredReactionEmoji": [], - "displayBadgesOnProfile": false, - "keepMutedChatsArchived": false, - "hasSetMyStoriesPrivacy": false, - "hasViewedOnboardingStory": false, - "storiesDisabled": false, - "storyViewReceiptsEnabled": false, - "hasSeenGroupStoryEducationSheet": false, - "hasCompletedUsernameOnboarding": false, - "phoneNumberSharingMode": "NOBODY" - } - } - }, - { - "recipient": { - "id": "1", - "self": {} - } - }, - { - "recipient": { - "id": "2", - "contact": { - "aci": "QHaZXgUxQEKp5B5np33zWA==", - "pni": "JvwCorpYSn2wgZ2iOXFXCg==", - "username": "han_solo.44", - "e164": "17735550199", - "blocked": true, - "hidden": true, - "registered": "REGISTERED", - "unregisteredTimestamp": 0, - "profileKey": "nH0NX5+LqtIe85lAy958oyRNH9INMHFn2eb1VF6i4/o=", - "profileSharing": false, - "profileGivenName": "Han", - "profileFamilyName": "Solo", - "hideStory": true - } - } - }, - { - "chat": { - "id": "1", - "recipientId": "1" - } - }, - { - "chat": { - "id": "2", - "recipientId": "2" - } - } -] diff --git a/SignalServiceKit/tests/MessageBackup/TestCases/unregistered-contact.jsonproto b/SignalServiceKit/tests/MessageBackup/TestCases/unregistered-contact.jsonproto deleted file mode 100644 index a982c46c7d..0000000000 --- a/SignalServiceKit/tests/MessageBackup/TestCases/unregistered-contact.jsonproto +++ /dev/null @@ -1,74 +0,0 @@ -[ - { - "version": "1", - "backupTimeMs": "1715636551000" - }, - { - "account": { - "profileKey": "YQKRq+3DQklInaOaMcmlzZnN0m/1hzLiaONX7gB12dg=", - "givenName": "Boba", - "familyName": "Fett", - "avatarUrlPath": "", - "subscriberId": "", - "subscriberCurrencyCode": "", - "subscriptionManuallyCancelled": false, - "accountSettings": { - "readReceipts": false, - "sealedSenderIndicators": true, - "typingIndicators": false, - "linkPreviews": false, - "notDiscoverableByPhoneNumber": false, - "preferContactAvatars": false, - "universalExpireTimer": 0, - "preferredReactionEmoji": [], - "displayBadgesOnProfile": false, - "keepMutedChatsArchived": false, - "hasSetMyStoriesPrivacy": false, - "hasViewedOnboardingStory": false, - "storiesDisabled": false, - "storyViewReceiptsEnabled": false, - "hasSeenGroupStoryEducationSheet": false, - "hasCompletedUsernameOnboarding": false, - "phoneNumberSharingMode": "NOBODY" - } - } - }, - { - "recipient": { - "id": "1", - "self": {} - } - }, - { - "recipient": { - "id": "2", - "contact": { - "aci": "QHaZXgUxQEKp5B5np33zWA==", - "pni": "JvwCorpYSn2wgZ2iOXFXCg==", - "username": "han_solo.44", - "e164": "17735550199", - "blocked": false, - "hidden": false, - "registered": "NOT_REGISTERED", - "unregisteredTimestamp": 1713157772000, - "profileKey": "nH0NX5+LqtIe85lAy958oyRNH9INMHFn2eb1VF6i4/o=", - "profileSharing": true, - "profileGivenName": "Han", - "profileFamilyName": "Solo", - "hideStory": true - } - } - }, - { - "chat": { - "id": "1", - "recipientId": "1" - } - }, - { - "chat": { - "id": "2", - "recipientId": "2" - } - } -]