Signal-iOS/SignalServiceKit/tests/Messages/OWSDisappearingMessagesJobTest.m
2021-03-25 09:24:27 -03:00

90 lines
2.8 KiB
Objective-C

//
// Copyright (c) 2021 Open Whisper Systems. All rights reserved.
//
#import "OWSDisappearingMessagesConfiguration.h"
#import "OWSDisappearingMessagesFinder.h"
#import "OWSDisappearingMessagesJob.h"
#import "SSKBaseTestObjC.h"
#import "TSContactThread.h"
#import "TSIncomingMessage.h"
#import "TSMessage.h"
#import <SignalCoreKit/NSDate+OWS.h>
#import <SignalServiceKit/SignalServiceKit-Swift.h>
NS_ASSUME_NONNULL_BEGIN
@interface OWSDisappearingMessagesJobTest : SSKBaseTestObjC
@property TSThread *thread;
@end
@implementation OWSDisappearingMessagesJobTest
- (SignalServiceAddress *)localAddress
{
return [[SignalServiceAddress alloc] initWithPhoneNumber:@"+13334445555"];
}
- (SignalServiceAddress *)otherAddress
{
return [[SignalServiceAddress alloc] initWithPhoneNumber:@"+12223334444"];
}
- (void)setUp
{
[super setUp];
self.thread = [TSContactThread getOrCreateThreadWithContactAddress:self.localAddress];
}
- (TSMessage *)messageWithBody:(NSString *)body
expiresInSeconds:(uint32_t)expiresInSeconds
expireStartedAt:(uint64_t)expireStartedAt
{
TSIncomingMessageBuilder *incomingMessageBuilder =
[TSIncomingMessageBuilder incomingMessageBuilderWithThread:self.thread messageBody:body];
incomingMessageBuilder.timestamp = 1;
incomingMessageBuilder.expiresInSeconds = expiresInSeconds;
incomingMessageBuilder.expireStartedAt = expireStartedAt;
return [incomingMessageBuilder build];
}
- (void)testRemoveAnyExpiredMessage
{
uint64_t now = [NSDate ows_millisecondTimeStamp];
TSMessage *expiredMessage1 =
[self messageWithBody:@"expiredMessage1" expiresInSeconds:1 expireStartedAt:now - 20000];
TSMessage *expiredMessage2 =
[self messageWithBody:@"expiredMessage2" expiresInSeconds:2 expireStartedAt:now - 2001];
TSMessage *notYetExpiredMessage =
[self messageWithBody:@"notYetExpiredMessage" expiresInSeconds:20 expireStartedAt:now - 10000];
TSMessage *unExpiringMessage = [self messageWithBody:@"unexpiringMessage" expiresInSeconds:0 expireStartedAt:0];
[self writeWithBlock:^(SDSAnyWriteTransaction *transaction) {
[expiredMessage1 anyInsertWithTransaction:transaction];
[expiredMessage2 anyInsertWithTransaction:transaction];
[notYetExpiredMessage anyInsertWithTransaction:transaction];
[unExpiringMessage anyInsertWithTransaction:transaction];
}];
OWSDisappearingMessagesJob *job = [OWSDisappearingMessagesJob shared];
// Sanity Check.
[self readWithBlock:^(SDSAnyReadTransaction *transaction) {
XCTAssertEqual(4, [TSMessage anyCountWithTransaction:transaction]);
}];
[job syncPassForTests];
[self readWithBlock:^(SDSAnyReadTransaction *transaction) {
XCTAssertEqual(2, [TSMessage anyCountWithTransaction:transaction]);
}];
}
@end
NS_ASSUME_NONNULL_END