mirror of https://github.com/oxen-io/session-ios
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			183 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Matlab
		
	
		
		
			
		
	
	
			183 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Matlab
		
	
| 
											9 years ago
										 | // | ||
|  | //  Copyright (c) 2017 Open Whisper Systems. All rights reserved. | ||
|  | // | ||
| 
											9 years ago
										 | 
 | ||
|  | #import <XCTest/XCTest.h> | ||
|  | 
 | ||
| 
											9 years ago
										 | #import "ContactsManagerProtocol.h" | ||
| 
											9 years ago
										 | #import "ContactsUpdater.h" | ||
| 
											9 years ago
										 | #import "Cryptography.h" | ||
| 
											9 years ago
										 | #import "OWSFakeCallMessageHandler.h" | ||
| 
											9 years ago
										 | #import "OWSFakeContactsManager.h" | ||
|  | #import "OWSFakeContactsUpdater.h" | ||
| 
											9 years ago
										 | #import "OWSFakeMessageSender.h" | ||
| 
											9 years ago
										 | #import "OWSFakeNetworkManager.h" | ||
|  | #import "OWSMessageSender.h" | ||
| 
											9 years ago
										 | #import "OWSSignalServiceProtos.pb.h" | ||
| 
											9 years ago
										 | #import "TSGroupThread.h" | ||
| 
											9 years ago
										 | #import "TSMessagesManager.h" | ||
|  | #import "TSNetworkManager.h" | ||
| 
											8 years ago
										 | #import "OWSIdentityManager.h" | ||
| 
											9 years ago
										 | #import "TSStorageManager.h" | ||
| 
											9 years ago
										 | #import "OWSUnitTestEnvironment.h" | ||
| 
											9 years ago
										 | 
 | ||
| 
											9 years ago
										 | NS_ASSUME_NONNULL_BEGIN | ||
| 
											9 years ago
										 | 
 | ||
|  | @interface TSMessagesManager (Testing) | ||
|  | 
 | ||
| 
											9 years ago
										 | // Private init for stubbing dependencies | ||
|  | 
 | ||
|  | - (instancetype)initWithNetworkManager:(TSNetworkManager *)networkManager | ||
|  |                         storageManager:(TSStorageManager *)storageManager | ||
|  |                     callMessageHandler:(id<OWSCallMessageHandler>)callMessageHandler | ||
|  |                        contactsManager:(id<ContactsManagerProtocol>)contactsManager | ||
|  |                        contactsUpdater:(ContactsUpdater *)contactsUpdater | ||
| 
											8 years ago
										 |                        identityManager:(OWSIdentityManager *)identityManager | ||
| 
											9 years ago
										 |                          messageSender:(OWSMessageSender *)messageSender; | ||
|  | 
 | ||
| 
											9 years ago
										 | // private method we are testing | ||
|  | - (void)handleIncomingEnvelope:(OWSSignalServiceProtosEnvelope *)messageEnvelope | ||
|  |                withSyncMessage:(OWSSignalServiceProtosSyncMessage *)syncMessage; | ||
|  | 
 | ||
| 
											9 years ago
										 | - (void)handleIncomingEnvelope:(OWSSignalServiceProtosEnvelope *)messageEnvelope | ||
|  |                withDataMessage:(OWSSignalServiceProtosDataMessage *)dataMessage; | ||
| 
											9 years ago
										 | 
 | ||
|  | @end | ||
|  | 
 | ||
| 
											9 years ago
										 | @interface TSMessagesManagerTest : XCTestCase | ||
|  | 
 | ||
|  | @end | ||
|  | 
 | ||
| 
											9 years ago
										 | @implementation TSMessagesManagerTest | ||
|  | 
 | ||
| 
											9 years ago
										 | - (TSMessagesManager *)messagesManagerWithSender:(OWSMessageSender *)messageSender | ||
|  | { | ||
|  |     return [[TSMessagesManager alloc] initWithNetworkManager:[OWSFakeNetworkManager new] | ||
|  |                                               storageManager:[TSStorageManager sharedManager] | ||
| 
											9 years ago
										 |                                           callMessageHandler:[OWSFakeCallMessageHandler new] | ||
| 
											9 years ago
										 |                                              contactsManager:[OWSFakeContactsManager new] | ||
|  |                                              contactsUpdater:[OWSFakeContactsUpdater new] | ||
| 
											8 years ago
										 |                                              identityManager:[OWSIdentityManager sharedManager] | ||
| 
											9 years ago
										 |                                                messageSender:messageSender]; | ||
|  | } | ||
|  | 
 | ||
| 
											9 years ago
										 | - (void)setUp | ||
|  | { | ||
|  |     [super setUp]; | ||
|  |      | ||
|  |     [OWSUnitTestEnvironment ensureSetup]; | ||
|  | } | ||
|  | 
 | ||
| 
											9 years ago
										 | - (void)testIncomingSyncContactMessage | ||
|  | { | ||
| 
											9 years ago
										 |     XCTestExpectation *messageWasSent = [self expectationWithDescription:@"message was sent"]; | ||
| 
											9 years ago
										 |     TSMessagesManager *messagesManager = | ||
| 
											9 years ago
										 |         [self messagesManagerWithSender:[[OWSFakeMessageSender alloc] initWithExpectation:messageWasSent]]; | ||
| 
											9 years ago
										 | 
 | ||
|  |     OWSSignalServiceProtosEnvelopeBuilder *envelopeBuilder = [OWSSignalServiceProtosEnvelopeBuilder new]; | ||
|  |     OWSSignalServiceProtosSyncMessageBuilder *messageBuilder = [OWSSignalServiceProtosSyncMessageBuilder new]; | ||
|  |     OWSSignalServiceProtosSyncMessageRequestBuilder *requestBuilder = | ||
|  |         [OWSSignalServiceProtosSyncMessageRequestBuilder new]; | ||
|  |     [requestBuilder setType:OWSSignalServiceProtosSyncMessageRequestTypeGroups]; | ||
|  |     [messageBuilder setRequest:[requestBuilder build]]; | ||
|  | 
 | ||
|  |     [messagesManager handleIncomingEnvelope:[envelopeBuilder build] withSyncMessage:[messageBuilder build]]; | ||
|  | 
 | ||
|  |     [self waitForExpectationsWithTimeout:5 | ||
|  |                                  handler:^(NSError *error) { | ||
|  |                                      NSLog(@"No message submitted."); | ||
|  |                                  }]; | ||
|  | } | ||
|  | 
 | ||
| 
											9 years ago
										 | - (void)testGroupUpdate | ||
|  | { | ||
|  |     NSData *groupIdData = [Cryptography generateRandomBytes:32]; | ||
|  |     NSString *groupThreadId = [TSGroupThread threadIdFromGroupId:groupIdData]; | ||
|  |     TSGroupThread *groupThread = [TSGroupThread fetchObjectWithUniqueID:groupThreadId]; | ||
|  |     XCTAssertNil(groupThread); | ||
|  | 
 | ||
|  |     TSMessagesManager *messagesManager = [self messagesManagerWithSender:[OWSFakeMessageSender new]]; | ||
|  | 
 | ||
|  |     OWSSignalServiceProtosEnvelopeBuilder *envelopeBuilder = [OWSSignalServiceProtosEnvelopeBuilder new]; | ||
|  | 
 | ||
|  |     OWSSignalServiceProtosGroupContextBuilder *groupContextBuilder = [OWSSignalServiceProtosGroupContextBuilder new]; | ||
|  |     groupContextBuilder.name = @"Newly created Group Name"; | ||
|  |     groupContextBuilder.id = groupIdData; | ||
|  |     groupContextBuilder.type = OWSSignalServiceProtosGroupContextTypeUpdate; | ||
|  | 
 | ||
|  |     OWSSignalServiceProtosDataMessageBuilder *messageBuilder = [OWSSignalServiceProtosDataMessageBuilder new]; | ||
|  |     messageBuilder.group = [groupContextBuilder build]; | ||
|  | 
 | ||
|  |     [messagesManager handleIncomingEnvelope:[envelopeBuilder build] withDataMessage:[messageBuilder build]]; | ||
|  | 
 | ||
|  |     groupThread = [TSGroupThread fetchObjectWithUniqueID:groupThreadId]; | ||
|  |     XCTAssertNotNil(groupThread); | ||
|  |     XCTAssertEqualObjects(@"Newly created Group Name", groupThread.name); | ||
|  | } | ||
|  | 
 | ||
|  | - (void)testGroupUpdateWithAvatar | ||
|  | { | ||
|  |     NSData *groupIdData = [Cryptography generateRandomBytes:32]; | ||
|  |     NSString *groupThreadId = [TSGroupThread threadIdFromGroupId:groupIdData]; | ||
|  |     TSGroupThread *groupThread = [TSGroupThread fetchObjectWithUniqueID:groupThreadId]; | ||
|  |     XCTAssertNil(groupThread); | ||
|  | 
 | ||
|  |     TSMessagesManager *messagesManager = [self messagesManagerWithSender:[OWSFakeMessageSender new]]; | ||
|  | 
 | ||
|  | 
 | ||
|  |     OWSSignalServiceProtosEnvelopeBuilder *envelopeBuilder = [OWSSignalServiceProtosEnvelopeBuilder new]; | ||
|  | 
 | ||
|  |     OWSSignalServiceProtosGroupContextBuilder *groupContextBuilder = [OWSSignalServiceProtosGroupContextBuilder new]; | ||
|  |     groupContextBuilder.name = @"Newly created Group with Avatar Name"; | ||
|  |     groupContextBuilder.id = groupIdData; | ||
|  |     groupContextBuilder.type = OWSSignalServiceProtosGroupContextTypeUpdate; | ||
|  | 
 | ||
|  |     OWSSignalServiceProtosAttachmentPointerBuilder *attachmentBuilder = | ||
|  |         [OWSSignalServiceProtosAttachmentPointerBuilder new]; | ||
|  |     attachmentBuilder.id = 1234; | ||
|  |     attachmentBuilder.contentType = @"image/png"; | ||
|  |     attachmentBuilder.key = [NSData new]; | ||
|  |     attachmentBuilder.size = 123; | ||
|  |     groupContextBuilder.avatar = [attachmentBuilder build]; | ||
|  | 
 | ||
|  |     OWSSignalServiceProtosDataMessageBuilder *messageBuilder = [OWSSignalServiceProtosDataMessageBuilder new]; | ||
|  |     messageBuilder.group = [groupContextBuilder build]; | ||
|  | 
 | ||
|  |     [messagesManager handleIncomingEnvelope:[envelopeBuilder build] withDataMessage:[messageBuilder build]]; | ||
|  | 
 | ||
|  |     groupThread = [TSGroupThread fetchObjectWithUniqueID:groupThreadId]; | ||
|  |     XCTAssertNotNil(groupThread); | ||
|  |     XCTAssertEqualObjects(@"Newly created Group with Avatar Name", groupThread.name); | ||
|  | } | ||
|  | 
 | ||
| 
											9 years ago
										 | - (void)testUnknownGroupMessageIsIgnored | ||
|  | { | ||
|  |     NSData *groupIdData = [Cryptography generateRandomBytes:32]; | ||
|  |     TSGroupThread *groupThread = [TSGroupThread getOrCreateThreadWithGroupIdData:groupIdData]; | ||
|  | 
 | ||
|  |     // Sanity check | ||
|  |     XCTAssertEqual(0, groupThread.numberOfInteractions); | ||
|  | 
 | ||
|  |     TSMessagesManager *messagesManager = [self messagesManagerWithSender:[OWSFakeMessageSender new]]; | ||
|  | 
 | ||
|  |     OWSSignalServiceProtosEnvelopeBuilder *envelopeBuilder = [OWSSignalServiceProtosEnvelopeBuilder new]; | ||
|  | 
 | ||
|  |     OWSSignalServiceProtosGroupContextBuilder *groupContextBuilder = [OWSSignalServiceProtosGroupContextBuilder new]; | ||
|  |     groupContextBuilder.name = @"Newly created Group with Avatar Name"; | ||
|  |     groupContextBuilder.id = groupIdData; | ||
|  | 
 | ||
|  |     // e.g. some future feature sent from another device that we don't yet support. | ||
|  |     groupContextBuilder.type = 666; | ||
|  | 
 | ||
|  |     OWSSignalServiceProtosDataMessageBuilder *messageBuilder = [OWSSignalServiceProtosDataMessageBuilder new]; | ||
|  |     messageBuilder.group = [groupContextBuilder build]; | ||
|  | 
 | ||
|  |     [messagesManager handleIncomingEnvelope:[envelopeBuilder build] withDataMessage:[messageBuilder build]]; | ||
|  | 
 | ||
|  |     XCTAssertEqual(0, groupThread.numberOfInteractions); | ||
|  | } | ||
|  | 
 | ||
| 
											9 years ago
										 | @end | ||
| 
											9 years ago
										 | 
 | ||
|  | NS_ASSUME_NONNULL_END |