From 61fe71f0ca39ba353bc91de34441abdf2a1224f3 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Thu, 30 Mar 2017 12:37:22 -0400 Subject: [PATCH] MessageSender should be accessed as singleton // FREEBIE --- .../TSKitiOSTestApp.xcodeproj/project.pbxproj | 6 +++ src/Messages/TSMessagesManager.m | 5 +-- src/TextSecureKitEnv.h | 14 +++---- src/TextSecureKitEnv.m | 15 ++++++-- tests/Messages/TSMessagesManagerTest.m | 35 +----------------- .../TestSupport/Fakes/OWSFakeMessageSender.h | 18 +++++++++ .../TestSupport/Fakes/OWSFakeMessageSender.m | 37 +++++++++++++++++++ .../Fakes/OWSUnitTestEnvironment.m | 7 +++- 8 files changed, 86 insertions(+), 51 deletions(-) create mode 100644 tests/TestSupport/Fakes/OWSFakeMessageSender.h create mode 100644 tests/TestSupport/Fakes/OWSFakeMessageSender.m diff --git a/Example/TSKitiOSTestApp/TSKitiOSTestApp.xcodeproj/project.pbxproj b/Example/TSKitiOSTestApp/TSKitiOSTestApp.xcodeproj/project.pbxproj index 7be549331..df61b880c 100644 --- a/Example/TSKitiOSTestApp/TSKitiOSTestApp.xcodeproj/project.pbxproj +++ b/Example/TSKitiOSTestApp/TSKitiOSTestApp.xcodeproj/project.pbxproj @@ -12,6 +12,7 @@ 450E3C9A1D96DD2600BF4EB6 /* OWSDisappearingMessagesJobTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 450E3C991D96DD2600BF4EB6 /* OWSDisappearingMessagesJobTest.m */; }; 4516E3E81DD153CC00DC4206 /* TSGroupThreadTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4516E3E71DD153CC00DC4206 /* TSGroupThreadTest.m */; }; 4516E3EA1DD1542300DC4206 /* TSContactThreadTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4516E3E91DD1542300DC4206 /* TSContactThreadTest.m */; }; + 452137231E8D6D2F0048FD10 /* OWSFakeMessageSender.m in Sources */ = {isa = PBXBuildFile; fileRef = 452137221E8D6D2F0048FD10 /* OWSFakeMessageSender.m */; }; 452EE6CF1D4A754C00E934BA /* TSThreadTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 452EE6CE1D4A754C00E934BA /* TSThreadTest.m */; }; 452EE6D51D4AC43300E934BA /* OWSOrphanedDataCleanerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 452EE6D41D4AC43300E934BA /* OWSOrphanedDataCleanerTest.m */; }; 453E1FCF1DA8313100DDD7B7 /* OWSMessageSenderTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 453E1FCE1DA8313100DDD7B7 /* OWSMessageSenderTest.m */; }; @@ -68,6 +69,8 @@ 450E3C991D96DD2600BF4EB6 /* OWSDisappearingMessagesJobTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OWSDisappearingMessagesJobTest.m; path = ../../../tests/Messages/OWSDisappearingMessagesJobTest.m; sourceTree = ""; }; 4516E3E71DD153CC00DC4206 /* TSGroupThreadTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TSGroupThreadTest.m; path = ../../../tests/Contacts/TSGroupThreadTest.m; sourceTree = ""; }; 4516E3E91DD1542300DC4206 /* TSContactThreadTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TSContactThreadTest.m; path = ../../../tests/Contacts/TSContactThreadTest.m; sourceTree = ""; }; + 452137211E8D6D2F0048FD10 /* OWSFakeMessageSender.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OWSFakeMessageSender.h; path = ../../../tests/TestSupport/Fakes/OWSFakeMessageSender.h; sourceTree = ""; }; + 452137221E8D6D2F0048FD10 /* OWSFakeMessageSender.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OWSFakeMessageSender.m; path = ../../../tests/TestSupport/Fakes/OWSFakeMessageSender.m; sourceTree = ""; }; 452EE6CE1D4A754C00E934BA /* TSThreadTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TSThreadTest.m; path = ../../../tests/Contacts/TSThreadTest.m; sourceTree = ""; }; 452EE6D41D4AC43300E934BA /* OWSOrphanedDataCleanerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSOrphanedDataCleanerTest.m; sourceTree = ""; }; 453E1FCE1DA8313100DDD7B7 /* OWSMessageSenderTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OWSMessageSenderTest.m; path = ../../../tests/Messages/OWSMessageSenderTest.m; sourceTree = ""; }; @@ -164,6 +167,8 @@ 45AE484B1E072871004D96C2 /* OWSFakeCallMessageHandler.m */, 45AE484D1E072906004D96C2 /* OWSFakeNotificationsManager.h */, 45AE484E1E072906004D96C2 /* OWSFakeNotificationsManager.m */, + 452137211E8D6D2F0048FD10 /* OWSFakeMessageSender.h */, + 452137221E8D6D2F0048FD10 /* OWSFakeMessageSender.m */, ); name = Fakes; sourceTree = ""; @@ -566,6 +571,7 @@ 459850C11D22C6F2006FFEDB /* PhoneNumberTest.m in Sources */, 45458B7A1CC342B600A02153 /* TSStorageSignedPreKeyStore.m in Sources */, 453E1FDB1DA83EFB00DDD7B7 /* OWSFakeContactsUpdater.m in Sources */, + 452137231E8D6D2F0048FD10 /* OWSFakeMessageSender.m in Sources */, D2AECE731DE8C3360068CE15 /* ContactSortingTest.m in Sources */, 453E1FD81DA83E1000DDD7B7 /* OWSFakeContactsManager.m in Sources */, 454021ED1D960ABF00F2126D /* OWSDisappearingMessageFinderTest.m in Sources */, diff --git a/src/Messages/TSMessagesManager.m b/src/Messages/TSMessagesManager.m index 232314616..917c0aeb7 100644 --- a/src/Messages/TSMessagesManager.m +++ b/src/Messages/TSMessagesManager.m @@ -69,10 +69,7 @@ NS_ASSUME_NONNULL_BEGIN id contactsManager = [TextSecureKitEnv sharedEnv].contactsManager; id callMessageHandler = [TextSecureKitEnv sharedEnv].callMessageHandler; ContactsUpdater *contactsUpdater = [ContactsUpdater sharedUpdater]; - OWSMessageSender *messageSender = [[OWSMessageSender alloc] initWithNetworkManager:networkManager - storageManager:storageManager - contactsManager:contactsManager - contactsUpdater:contactsUpdater]; + OWSMessageSender *messageSender = [TextSecureKitEnv sharedEnv].messageSender; return [self initWithNetworkManager:networkManager storageManager:storageManager diff --git a/src/TextSecureKitEnv.h b/src/TextSecureKitEnv.h index c33d0cc62..424f6daed 100644 --- a/src/TextSecureKitEnv.h +++ b/src/TextSecureKitEnv.h @@ -1,12 +1,11 @@ // -// TextSecureKitEnv.h -// Pods +// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // -// Created by Frederic Jacobs on 05/12/15. NS_ASSUME_NONNULL_BEGIN @protocol ContactsManagerProtocol; +@class OWSMessageSender; @protocol NotificationsProtocol; @protocol OWSCallMessageHandler; @@ -14,6 +13,7 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)initWithCallMessageHandler:(id)callMessageHandler contactsManager:(id)contactsManager + messageSender:(OWSMessageSender *)messageSender notificationsManager:(id)notificationsManager NS_DESIGNATED_INITIALIZER; - (instancetype)init NS_UNAVAILABLE; @@ -21,10 +21,10 @@ NS_ASSUME_NONNULL_BEGIN + (instancetype)sharedEnv; + (void)setSharedEnv:(TextSecureKitEnv *)env; -@property (nonatomic, readonly, strong) id callMessageHandler; -@property (nonatomic, readonly, strong) id contactsManager; -@property (nonatomic, readonly, strong) id notificationsManager; - +@property (nonatomic, readonly) id callMessageHandler; +@property (nonatomic, readonly) id contactsManager; +@property (nonatomic, readonly) OWSMessageSender *messageSender; +@property (nonatomic, readonly) id notificationsManager; @end diff --git a/src/TextSecureKitEnv.m b/src/TextSecureKitEnv.m index d09cd8f1d..cf9c9e8b7 100644 --- a/src/TextSecureKitEnv.m +++ b/src/TextSecureKitEnv.m @@ -10,12 +10,14 @@ static TextSecureKitEnv *TextSecureKitEnvSharedInstance; @implementation TextSecureKitEnv -@synthesize callMessageHandler = _callMessageHandler; -@synthesize contactsManager = _contactsManager; -@synthesize notificationsManager = _notificationsManager; +@synthesize callMessageHandler = _callMessageHandler, + contactsManager = _contactsManager, + messageSender = _messageSender, + notificationsManager = _notificationsManager; - (instancetype)initWithCallMessageHandler:(id)callMessageHandler contactsManager:(id)contactsManager + messageSender:(OWSMessageSender *)messageSender notificationsManager:(id)notificationsManager { self = [super init]; @@ -25,6 +27,7 @@ static TextSecureKitEnv *TextSecureKitEnvSharedInstance; _callMessageHandler = callMessageHandler; _contactsManager = contactsManager; + _messageSender = messageSender; _notificationsManager = notificationsManager; return self; @@ -55,10 +58,14 @@ static TextSecureKitEnv *TextSecureKitEnvSharedInstance; - (id)contactsManager { NSAssert(_contactsManager, @"Trying to access the contactsManager before it's set."); - return _contactsManager; } +- (OWSMessageSender *)messageSender +{ + NSAssert(_messageSender, @"Trying to access the messageSender before it's set."); + return _messageSender; +} - (id)notificationsManager { diff --git a/tests/Messages/TSMessagesManagerTest.m b/tests/Messages/TSMessagesManagerTest.m index 264c769a2..839aad77d 100644 --- a/tests/Messages/TSMessagesManagerTest.m +++ b/tests/Messages/TSMessagesManagerTest.m @@ -10,6 +10,7 @@ #import "OWSFakeCallMessageHandler.h" #import "OWSFakeContactsManager.h" #import "OWSFakeContactsUpdater.h" +#import "OWSFakeMessageSender.h" #import "OWSFakeNetworkManager.h" #import "OWSMessageSender.h" #import "OWSSignalServiceProtos.pb.h" @@ -40,40 +41,6 @@ NS_ASSUME_NONNULL_BEGIN @end -@interface OWSFakeMessageSender : OWSMessageSender - -@property (nonatomic, readonly) XCTestExpectation *expectation; - -@end - -@implementation OWSFakeMessageSender - -- (instancetype)initWithExpectation:(XCTestExpectation *)expectation -{ - self = [self init]; - if (!self) { - return self; - } - - _expectation = expectation; - - return self; -} - -- (void)sendTemporaryAttachmentData:(NSData *)attachmentData - contentType:(NSString *)contentType - inMessage:(TSOutgoingMessage *)outgoingMessage - success:(void (^)())successHandler - failure:(void (^)(NSError *error))failureHandler -{ - - NSLog(@"Faking sendTemporyAttachmentData."); - [self.expectation fulfill]; - successHandler(); -} - -@end - @interface TSMessagesManagerTest : XCTestCase @end diff --git a/tests/TestSupport/Fakes/OWSFakeMessageSender.h b/tests/TestSupport/Fakes/OWSFakeMessageSender.h new file mode 100644 index 000000000..2b7c6303e --- /dev/null +++ b/tests/TestSupport/Fakes/OWSFakeMessageSender.h @@ -0,0 +1,18 @@ +// +// Copyright (c) 2017 Open Whisper Systems. All rights reserved. +// + +#import "OWSMessageSender.h" +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface OWSFakeMessageSender : OWSMessageSender + +- (instancetype)initWithExpectation:(XCTestExpectation *)expectation; + +@property (nonatomic, readonly) XCTestExpectation *expectation; + +@end + +NS_ASSUME_NONNULL_END diff --git a/tests/TestSupport/Fakes/OWSFakeMessageSender.m b/tests/TestSupport/Fakes/OWSFakeMessageSender.m new file mode 100644 index 000000000..2a62bfb17 --- /dev/null +++ b/tests/TestSupport/Fakes/OWSFakeMessageSender.m @@ -0,0 +1,37 @@ +// +// Copyright (c) 2017 Open Whisper Systems. All rights reserved. +// + +#import "OWSFakeMessageSender.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation OWSFakeMessageSender + +- (instancetype)initWithExpectation:(XCTestExpectation *)expectation +{ + self = [self init]; + if (!self) { + return self; + } + + _expectation = expectation; + + return self; +} + +- (void)sendTemporaryAttachmentData:(NSData *)attachmentData + contentType:(NSString *)contentType + inMessage:(TSOutgoingMessage *)outgoingMessage + success:(void (^)())successHandler + failure:(void (^)(NSError *error))failureHandler +{ + + NSLog(@"Faking sendTemporyAttachmentData."); + [self.expectation fulfill]; + successHandler(); +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/tests/TestSupport/Fakes/OWSUnitTestEnvironment.m b/tests/TestSupport/Fakes/OWSUnitTestEnvironment.m index ecc6acefb..a4d09fad1 100644 --- a/tests/TestSupport/Fakes/OWSUnitTestEnvironment.m +++ b/tests/TestSupport/Fakes/OWSUnitTestEnvironment.m @@ -1,9 +1,11 @@ -// Created by Michael Kirk on 12/18/16. -// Copyright © 2016 Open Whisper Systems. All rights reserved. +// +// Copyright (c) 2017 Open Whisper Systems. All rights reserved. +// #import "OWSUnitTestEnvironment.h" #import "OWSFakeCallMessageHandler.h" #import "OWSFakeContactsManager.h" +#import "OWSFakeMessageSender.h" #import "OWSFakeNotificationsManager.h" NS_ASSUME_NONNULL_BEGIN @@ -14,6 +16,7 @@ NS_ASSUME_NONNULL_BEGIN { return [super initWithCallMessageHandler:[OWSFakeCallMessageHandler new] contactsManager:[OWSFakeContactsManager new] + messageSender:[OWSFakeMessageSender new] notificationsManager:[OWSFakeNotificationsManager new]]; }