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.
session-ios/tests/Messages/OWSDisappearingMessagesJobT...

129 lines
5.5 KiB
Objective-C

// Created by Michael Kirk on 9/23/16.
// Copyright © 2016 Open Whisper Systems. All rights reserved.
#import "NSDate+millisecondTimeStamp.h"
#import "OWSDisappearingMessagesConfiguration.h"
#import "OWSDisappearingMessagesFinder.h"
#import "OWSDisappearingMessagesJob.h"
#import "OWSFakeContactsManager.h"
#import "TSMessage.h"
#import "TSStorageManager.h"
#import "TSThread.h"
#import <XCTest/XCTest.h>
NS_ASSUME_NONNULL_BEGIN
@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];
OWSDisappearingMessagesJob *job =
[[OWSDisappearingMessagesJob alloc] initWithStorageManager:[TSStorageManager sharedManager]];
// Sanity Check.
XCTAssertEqual(4, [TSMessage numberOfKeysInCollection]);
[job run];
XCTAssertEqual(2, [TSMessage numberOfKeysInCollection]);
}
- (void)testBecomeConsistentWithMessageConfiguration
{
TSThread *thread = [[TSThread alloc] initWithUniqueId:@"fake-thread-id"];
[thread save];
OWSDisappearingMessagesJob *job =
[[OWSDisappearingMessagesJob alloc] initWithStorageManager:[TSStorageManager sharedManager]];
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];
[job becomeConsistentWithConfigurationForMessage:expiringMessage contactsManager:[OWSFakeContactsManager new]];
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];
OWSDisappearingMessagesJob *job =
[[OWSDisappearingMessagesJob alloc] initWithStorageManager:[TSStorageManager sharedManager]];
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];
[job becomeConsistentWithConfigurationForMessage:unExpiringMessage contactsManager:[OWSFakeContactsManager new]];
XCTAssertNil([OWSDisappearingMessagesConfiguration fetchObjectWithUniqueID:thread.uniqueId]);
}
@end
NS_ASSUME_NONNULL_END