From 21f0fcb2ffbf9392ea260ad30c128299f1c4a4ee Mon Sep 17 00:00:00 2001 From: Michelle Linington Date: Wed, 5 May 2021 18:35:04 -0700 Subject: [PATCH] Fixes broken tests related to the GroupMembers table The TSGroupMember table is updated after every inserted interaction. It asserts that the sender of the interaction is in the group membership. Before, our tests would construct groups with mock membership and then construct outgoing messages with the local address as the sender. This would fail this new requirement. The fix is to make sure that the local address is in the test group membership if we'd like to "send" any messages. --- .../test/util/FTS/GRDBFullTextSearcherTest.swift | 14 +++++++------- Signal/test/util/GroupAndContactStreamTest.swift | 6 ++++-- .../tests/Util/TSMessageStorageTests.m | 3 ++- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/Signal/test/util/FTS/GRDBFullTextSearcherTest.swift b/Signal/test/util/FTS/GRDBFullTextSearcherTest.swift index ed1f28c95c..cc8e49a01d 100644 --- a/Signal/test/util/FTS/GRDBFullTextSearcherTest.swift +++ b/Signal/test/util/FTS/GRDBFullTextSearcherTest.swift @@ -160,7 +160,7 @@ class GRDBFullTextSearcherTest: SignalBaseTest { tsAccountManager.registerForTests(withLocalNumber: localE164Identifier, uuid: localUUID) self.write { transaction in - let bookClubGroupThread = try! GroupManager.createGroupForTests(members: [self.aliceRecipient, self.bobRecipient], + let bookClubGroupThread = try! GroupManager.createGroupForTests(members: [self.aliceRecipient, self.bobRecipient, self.tsAccountManager.localAddress!], name: "Book Club", transaction: transaction) self.bookClubThread = ThreadViewModel(thread: bookClubGroupThread, @@ -397,7 +397,7 @@ class GRDBFullTextSearcherTest: SignalBaseTest { var thread: TSGroupThread! = nil self.write { transaction in - thread = try! GroupManager.createGroupForTests(members: [self.aliceRecipient, self.bobRecipient], + thread = try! GroupManager.createGroupForTests(members: [self.aliceRecipient, self.bobRecipient, self.tsAccountManager.localAddress!], name: "Lifecycle", transaction: transaction) } @@ -451,7 +451,7 @@ class GRDBFullTextSearcherTest: SignalBaseTest { func testModelLifecycle2() { self.write { transaction in - let thread = try! GroupManager.createGroupForTests(members: [self.aliceRecipient, self.bobRecipient], + let thread = try! GroupManager.createGroupForTests(members: [self.aliceRecipient, self.bobRecipient, self.tsAccountManager.localAddress!], name: "Lifecycle", transaction: transaction) @@ -480,7 +480,7 @@ class GRDBFullTextSearcherTest: SignalBaseTest { func testModelLifecycle3() { self.write { transaction in - let thread = try! GroupManager.createGroupForTests(members: [self.aliceRecipient, self.bobRecipient], + let thread = try! GroupManager.createGroupForTests(members: [self.aliceRecipient, self.bobRecipient, self.tsAccountManager.localAddress!], name: "Lifecycle", transaction: transaction) @@ -509,7 +509,7 @@ class GRDBFullTextSearcherTest: SignalBaseTest { func testDiacritics() { self.write { transaction in - let thread = try! GroupManager.createGroupForTests(members: [self.aliceRecipient, self.bobRecipient], + let thread = try! GroupManager.createGroupForTests(members: [self.aliceRecipient, self.bobRecipient, self.tsAccountManager.localAddress!], name: "Lifecycle", transaction: transaction) @@ -550,7 +550,7 @@ class GRDBFullTextSearcherTest: SignalBaseTest { var thread: TSGroupThread! = nil self.write { transaction in - thread = try! GroupManager.createGroupForTests(members: [self.aliceRecipient, self.bobRecipient], + thread = try! GroupManager.createGroupForTests(members: [self.aliceRecipient, self.bobRecipient, self.tsAccountManager.localAddress!], name: "Lifecycle", transaction: transaction) } @@ -591,7 +591,7 @@ class GRDBFullTextSearcherTest: SignalBaseTest { Bench(title: "Populate Index", memorySamplerRatio: 1) { _ in self.write { transaction in - let thread = try! GroupManager.createGroupForTests(members: [self.aliceRecipient, self.bobRecipient], + let thread = try! GroupManager.createGroupForTests(members: [self.aliceRecipient, self.bobRecipient, self.tsAccountManager.localAddress!], name: "Perf", transaction: transaction) diff --git a/Signal/test/util/GroupAndContactStreamTest.swift b/Signal/test/util/GroupAndContactStreamTest.swift index 679f1fa78f..111707272d 100644 --- a/Signal/test/util/GroupAndContactStreamTest.swift +++ b/Signal/test/util/GroupAndContactStreamTest.swift @@ -15,7 +15,7 @@ class GroupAndContactStreamTest: SignalBaseTest { // ensure local client has necessary "registered" state let localE164Identifier = "+13235551234" - let localUUID = UUID() + let localUUID = UUID(uuidString: "83DF967A-5CBD-43EB-AE9A-571A930F78D6")! tsAccountManager.registerForTests(withLocalNumber: localE164Identifier, uuid: localUUID) } @@ -101,7 +101,7 @@ class GroupAndContactStreamTest: SignalBaseTest { } } - let outputGroupSyncData = "awoQc111Fz2xlVb3YbtcfwN0SBoMKzEzMjEzMjE0MzIxGgwrMTMyMTMyMTQzMjMiDgoJaW1hZ2UvcG5nEKMBMAA6BWJyb3duSg4SDCsxMzIxMzIxNDMyMUoOEgwrMTMyMTMyMTQzMjNQAVgAiVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAAaADAAQAAAABAAAAAQAAAAD5Ip3+AAAADUlEQVQIHWP4z8DwHwAFAAH/yA9iFgAAAABJRU5ErkJggnoKEHNtthc9sZVW92G7XH8DdEgSCUJvb2sgQ2x1YhoMKzEzMjEzMjE0MzIxGgwrMTU1NTMyMTQzMjMiDgoJaW1hZ2UvcG5nEKMBMAA6CWJsdWVfZ3JleUoOEgwrMTMyMTMyMTQzMjFKDhIMKzE1NTUzMjE0MzIzUAJYAYlQTkcNChoKAAAADUlIRFIAAAABAAAAAQgGAAAAHxXEiQAAAAFzUkdCAK7OHOkAAABEZVhJZk1NACoAAAAIAAGHaQAEAAAAAQAAABoAAAAAAAOgAQADAAAAAQABAACgAgAEAAAAAQAAAAGgAwAEAAAAAQAAAAEAAAAA+SKd/gAAAA1JREFUCB1jYGD4/x8AAwIB/6fhVKUAAAAASUVORK5CYIJ1ChBzffcXPbGVVvdhu1x/A3RIEglDb29rIEJsdWIaDCsxMzIxMzIxMzMzMxoMKzE1NTUzMjEyMjIyIg4KCWltYWdlL3BuZxCjATAAOgRibHVlSg4SDCsxMzIxMzIxMzMzM0oOEgwrMTU1NTMyMTIyMjJQAFgBiVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAAaADAAQAAAABAAAAAQAAAAD5Ip3+AAAADUlEQVQIHWNg+M/wHwAEAQH/MH0Y7gAAAABJRU5ErkJggg==" + let outputGroupSyncData = "awoQc111Fz2xlVb3YbtcfwN0SBoMKzEzMjEzMjE0MzIxGgwrMTMyMTMyMTQzMjMiDgoJaW1hZ2UvcG5nEKMBMAA6BWJyb3duSg4SDCsxMzIxMzIxNDMyMUoOEgwrMTMyMTMyMTQzMjNQAVgAiVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAAaADAAQAAAABAAAAAQAAAAD5Ip3+AAAADUlEQVQIHWP4z8DwHwAFAAH/yA9iFgAAAABJRU5ErkJggnoKEHNtthc9sZVW92G7XH8DdEgSCUJvb2sgQ2x1YhoMKzEzMjEzMjE0MzIxGgwrMTU1NTMyMTQzMjMiDgoJaW1hZ2UvcG5nEKMBMAA6CWJsdWVfZ3JleUoOEgwrMTMyMTMyMTQzMjFKDhIMKzE1NTUzMjE0MzIzUAJYAYlQTkcNChoKAAAADUlIRFIAAAABAAAAAQgGAAAAHxXEiQAAAAFzUkdCAK7OHOkAAABEZVhJZk1NACoAAAAIAAGHaQAEAAAAAQAAABoAAAAAAAOgAQADAAAAAQABAACgAgAEAAAAAQAAAAGgAwAEAAAAAQAAAAEAAAAA+SKd/gAAAA1JREFUCB1jYGD4/x8AAwIB/6fhVKUAAAAASUVORK5CYIKTAQoQc333Fz2xlVb3YbtcfwN0SBIJQ29vayBCbHViGgwrMTMyMTMyMTMzMzMaDCsxMzIzNTU1MTIzNBoMKzE1NTUzMjEyMjIyIg4KCWltYWdlL3BuZxCjATAAOgRibHVlSg4SDCsxMzIxMzIxMzMzM0oOEgwrMTMyMzU1NTEyMzRKDhIMKzE1NTUzMjEyMjIyUABYAYlQTkcNChoKAAAADUlIRFIAAAABAAAAAQgGAAAAHxXEiQAAAAFzUkdCAK7OHOkAAABEZVhJZk1NACoAAAAIAAGHaQAEAAAAAQAAABoAAAAAAAOgAQADAAAAAQABAACgAgAEAAAAAQAAAAGgAwAEAAAAAQAAAAEAAAAA+SKd/gAAAA1JREFUCB1jYPjP8B8ABAEB/zB9GO4AAAAASUVORK5CYII=" let groupImageData1 = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAAaADAAQAAAABAAAAAQAAAAD5Ip3+AAAADUlEQVQIHWP4z8DwHwAFAAH/yA9iFgAAAABJRU5ErkJggg==" let groupImageData2 = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAAaADAAQAAAABAAAAAQAAAAD5Ip3+AAAADUlEQVQIHWNgYPj/HwADAgH/p+FUpQAAAABJRU5ErkJggg==" @@ -156,6 +156,7 @@ class GroupAndContactStreamTest: SignalBaseTest { let groupId = Data(base64Encoded: "c333Fz2xlVb3YbtcfwN0SA==")! let groupMembers: [SignalServiceAddress] = [ .init(phoneNumber: "+13213213333"), + tsAccountManager.localAddress!, .init(uuidString: "55555555-88fb-4c4e-9f6a-222222222222", phoneNumber: "+15553212222") ] @@ -247,6 +248,7 @@ class GroupAndContactStreamTest: SignalBaseTest { XCTAssertEqual(group.name, "Cook Blub") XCTAssertEqual(group.memberAddresses, [ SignalServiceAddress(phoneNumber: "+13213213333"), + tsAccountManager.localAddress!, SignalServiceAddress(uuidString: "55555555-88FB-4C4E-9F6A-222222222222", phoneNumber: "+15553212222") ]) XCTAssertEqual(group.conversationColorName, ConversationColorName.blue.rawValue) diff --git a/SignalServiceKit/tests/Util/TSMessageStorageTests.m b/SignalServiceKit/tests/Util/TSMessageStorageTests.m index d7e650d888..f725b07596 100644 --- a/SignalServiceKit/tests/Util/TSMessageStorageTests.m +++ b/SignalServiceKit/tests/Util/TSMessageStorageTests.m @@ -146,7 +146,8 @@ NSMutableArray *messages = [NSMutableArray new]; for (uint64_t i = 0; i < 10; i++) { - SignalServiceAddress *authorAddress = [[SignalServiceAddress alloc] initWithPhoneNumber:@"+fakephone"]; + NSUInteger memberIdx = (i % thread.groupModel.groupMembers.count); + SignalServiceAddress *authorAddress = thread.groupModel.groupMembers[memberIdx]; TSIncomingMessageBuilder *incomingMessageBuilder = [TSIncomingMessageBuilder incomingMessageBuilderWithThread:thread messageBody:body]; incomingMessageBuilder.timestamp = i + 1;