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.
		
		
		
		
		
			
		
			
	
	
		
			135 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Matlab
		
	
		
		
			
		
	
	
			135 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Matlab
		
	
| 
											9 years ago
										 | // | ||
|  | //  Copyright (c) 2017 Open Whisper Systems. All rights reserved. | ||
|  | // | ||
| 
											9 years ago
										 | 
 | ||
|  | #import "NSDate+millisecondTimeStamp.h" | ||
| 
											9 years ago
										 | #import "OWSDisappearingMessagesConfiguration.h" | ||
| 
											9 years ago
										 | #import "OWSDisappearingMessagesFinder.h" | ||
|  | #import "OWSDisappearingMessagesJob.h" | ||
| 
											9 years ago
										 | #import "OWSFakeContactsManager.h" | ||
| 
											9 years ago
										 | #import "TSMessage.h" | ||
|  | #import "TSStorageManager.h" | ||
|  | #import "TSThread.h" | ||
|  | #import <XCTest/XCTest.h> | ||
|  | 
 | ||
|  | NS_ASSUME_NONNULL_BEGIN | ||
|  | 
 | ||
| 
											9 years ago
										 | @interface OWSDisappearingMessagesJob (Testing) | ||
|  | 
 | ||
|  | - (void)run; | ||
|  | - (void)becomeConsistentWithConfigurationForMessage:(TSMessage *)message | ||
|  |                                     contactsManager:(id<ContactsManagerProtocol>)contactsManager; | ||
|  | 
 | ||
|  | @end | ||
|  | 
 | ||
| 
											9 years ago
										 | @interface OWSDisappearingMessagesJobTest : XCTestCase | ||
|  | 
 | ||
|  | @end | ||
|  | 
 | ||
|  | @implementation OWSDisappearingMessagesJobTest | ||
|  | 
 | ||
|  | - (void)setUp | ||
|  | { | ||
|  |     [super setUp]; | ||
|  |     [TSMessage removeAllObjectsInCollection]; | ||
|  | } | ||
|  | 
 | ||
|  | - (void)testRemoveAnyExpiredMessage | ||
|  | { | ||
|  |     TSThread *thread = [TSThread new]; | ||
|  |     uint64_t now = [NSDate ows_millisecondTimeStamp]; | ||
|  |     TSMessage *expiredMessage1 = [[TSMessage alloc] initWithTimestamp:1 | ||
|  |                                                              inThread:thread | ||
|  |                                                           messageBody:@"expiredMessage1" | ||
|  |                                                         attachmentIds:@[] | ||
|  |                                                      expiresInSeconds:1 | ||
|  |                                                       expireStartedAt:now - 20000]; | ||
|  |     [expiredMessage1 save]; | ||
|  | 
 | ||
|  |     TSMessage *expiredMessage2 = [[TSMessage alloc] initWithTimestamp:1 | ||
|  |                                                              inThread:thread | ||
|  |                                                           messageBody:@"expiredMessage2" | ||
|  |                                                         attachmentIds:@[] | ||
|  |                                                      expiresInSeconds:2 | ||
|  |                                                       expireStartedAt:now - 2001]; | ||
|  |     [expiredMessage2 save]; | ||
|  | 
 | ||
|  |     TSMessage *notYetExpiredMessage = [[TSMessage alloc] initWithTimestamp:1 | ||
|  |                                                                   inThread:thread | ||
|  |                                                                messageBody:@"notYetExpiredMessage" | ||
|  |                                                              attachmentIds:@[] | ||
|  |                                                           expiresInSeconds:20 | ||
|  |                                                            expireStartedAt:now - 10000]; | ||
|  |     [notYetExpiredMessage save]; | ||
|  | 
 | ||
|  |     TSMessage *unExpiringMessage = [[TSMessage alloc] initWithTimestamp:1 | ||
|  |                                                                inThread:thread | ||
|  |                                                             messageBody:@"unexpiringMessage" | ||
|  |                                                           attachmentIds:@[] | ||
|  |                                                        expiresInSeconds:0 | ||
|  |                                                         expireStartedAt:0]; | ||
|  |     [unExpiringMessage save]; | ||
|  | 
 | ||
| 
											9 years ago
										 |      | ||
|  |     OWSDisappearingMessagesJob *job = [OWSDisappearingMessagesJob sharedJob]; | ||
| 
											9 years ago
										 | 
 | ||
|  |     // Sanity Check. | ||
|  |     XCTAssertEqual(4, [TSMessage numberOfKeysInCollection]); | ||
| 
											9 years ago
										 |     [job run]; | ||
| 
											8 years ago
										 |      | ||
|  |     //FIXME remove sleep hack in favor of expiringMessage completion handler | ||
|  |     sleep(4); | ||
| 
											9 years ago
										 |     XCTAssertEqual(2, [TSMessage numberOfKeysInCollection]); | ||
|  | } | ||
|  | 
 | ||
| 
											9 years ago
										 | - (void)testBecomeConsistentWithMessageConfiguration | ||
|  | { | ||
|  |     TSThread *thread = [[TSThread alloc] initWithUniqueId:@"fake-thread-id"]; | ||
|  |     [thread save]; | ||
|  | 
 | ||
| 
											9 years ago
										 |     OWSDisappearingMessagesJob *job = [OWSDisappearingMessagesJob sharedJob]; | ||
|  |      | ||
| 
											9 years ago
										 |     OWSDisappearingMessagesConfiguration *configuration = | ||
|  |         [OWSDisappearingMessagesConfiguration fetchObjectWithUniqueID:thread.uniqueId]; | ||
|  |     [configuration remove]; | ||
|  | 
 | ||
|  |     TSMessage *expiringMessage = [[TSMessage alloc] initWithTimestamp:1 | ||
|  |                                                              inThread:thread | ||
|  |                                                           messageBody:@"notYetExpiredMessage" | ||
|  |                                                         attachmentIds:@[] | ||
|  |                                                      expiresInSeconds:20 | ||
|  |                                                       expireStartedAt:0]; | ||
|  |     [expiringMessage save]; | ||
|  | 
 | ||
| 
											9 years ago
										 |     [job becomeConsistentWithConfigurationForMessage:expiringMessage contactsManager:[OWSFakeContactsManager new]]; | ||
| 
											9 years ago
										 |     configuration = [OWSDisappearingMessagesConfiguration fetchObjectWithUniqueID:thread.uniqueId]; | ||
|  | 
 | ||
|  |     XCTAssertNotNil(configuration); | ||
|  |     XCTAssert(configuration.isEnabled); | ||
|  |     XCTAssertEqual(20, configuration.durationSeconds); | ||
|  | } | ||
|  | 
 | ||
|  | - (void)testBecomeConsistentWithUnexpiringMessageConfiguration | ||
|  | { | ||
|  |     TSThread *thread = [[TSThread alloc] initWithUniqueId:@"fake-thread-id"]; | ||
|  |     [thread save]; | ||
|  | 
 | ||
|  |     OWSDisappearingMessagesConfiguration *configuration = | ||
|  |         [OWSDisappearingMessagesConfiguration fetchObjectWithUniqueID:thread.uniqueId]; | ||
|  |     [configuration remove]; | ||
|  | 
 | ||
|  |     TSMessage *unExpiringMessage = [[TSMessage alloc] initWithTimestamp:1 | ||
|  |                                                                inThread:thread | ||
|  |                                                             messageBody:@"unexpiringMessage" | ||
|  |                                                           attachmentIds:@[] | ||
|  |                                                        expiresInSeconds:0 | ||
|  |                                                         expireStartedAt:0]; | ||
|  |     [unExpiringMessage save]; | ||
| 
											9 years ago
										 |     [OWSDisappearingMessagesJob becomeConsistentWithConfigurationForMessage:unExpiringMessage contactsManager:[OWSFakeContactsManager new]]; | ||
| 
											9 years ago
										 |     XCTAssertNil([OWSDisappearingMessagesConfiguration fetchObjectWithUniqueID:thread.uniqueId]); | ||
|  | } | ||
|  | 
 | ||
| 
											9 years ago
										 | @end | ||
|  | 
 | ||
|  | NS_ASSUME_NONNULL_END |