mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
Fix broken tests.
This commit is contained in:
parent
68714b296c
commit
62c55c9cfb
|
@ -155,6 +155,7 @@
|
||||||
347850711FDAEB17007B8332 /* OWSUserProfile.m in Sources */ = {isa = PBXBuildFile; fileRef = 3478506F1FDAEB16007B8332 /* OWSUserProfile.m */; };
|
347850711FDAEB17007B8332 /* OWSUserProfile.m in Sources */ = {isa = PBXBuildFile; fileRef = 3478506F1FDAEB16007B8332 /* OWSUserProfile.m */; };
|
||||||
347850721FDAEB17007B8332 /* OWSUserProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 347850701FDAEB16007B8332 /* OWSUserProfile.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
347850721FDAEB17007B8332 /* OWSUserProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 347850701FDAEB16007B8332 /* OWSUserProfile.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
34843B2421432293004DED45 /* SignalBaseTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 34843B2221432292004DED45 /* SignalBaseTest.m */; };
|
34843B2421432293004DED45 /* SignalBaseTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 34843B2221432292004DED45 /* SignalBaseTest.m */; };
|
||||||
|
34843B26214327C9004DED45 /* OWSOrphanedDataCleanerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 34843B25214327C9004DED45 /* OWSOrphanedDataCleanerTest.m */; };
|
||||||
348570A820F67575004FF32B /* OWSMessageHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 348570A620F67574004FF32B /* OWSMessageHeaderView.m */; };
|
348570A820F67575004FF32B /* OWSMessageHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 348570A620F67574004FF32B /* OWSMessageHeaderView.m */; };
|
||||||
348BB25D20A0C5530047AEC2 /* ContactShareViewHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 348BB25C20A0C5530047AEC2 /* ContactShareViewHelper.swift */; };
|
348BB25D20A0C5530047AEC2 /* ContactShareViewHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 348BB25C20A0C5530047AEC2 /* ContactShareViewHelper.swift */; };
|
||||||
3491D9A121022DB7001EF5A1 /* CDSSigningCertificateTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 3491D9A021022DB7001EF5A1 /* CDSSigningCertificateTest.m */; };
|
3491D9A121022DB7001EF5A1 /* CDSSigningCertificateTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 3491D9A021022DB7001EF5A1 /* CDSSigningCertificateTest.m */; };
|
||||||
|
@ -793,6 +794,7 @@
|
||||||
347850701FDAEB16007B8332 /* OWSUserProfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSUserProfile.h; sourceTree = "<group>"; };
|
347850701FDAEB16007B8332 /* OWSUserProfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSUserProfile.h; sourceTree = "<group>"; };
|
||||||
34843B2221432292004DED45 /* SignalBaseTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SignalBaseTest.m; sourceTree = "<group>"; };
|
34843B2221432292004DED45 /* SignalBaseTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SignalBaseTest.m; sourceTree = "<group>"; };
|
||||||
34843B2321432293004DED45 /* SignalBaseTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SignalBaseTest.h; sourceTree = "<group>"; };
|
34843B2321432293004DED45 /* SignalBaseTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SignalBaseTest.h; sourceTree = "<group>"; };
|
||||||
|
34843B25214327C9004DED45 /* OWSOrphanedDataCleanerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSOrphanedDataCleanerTest.m; sourceTree = "<group>"; };
|
||||||
348570A620F67574004FF32B /* OWSMessageHeaderView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSMessageHeaderView.m; sourceTree = "<group>"; };
|
348570A620F67574004FF32B /* OWSMessageHeaderView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSMessageHeaderView.m; sourceTree = "<group>"; };
|
||||||
348570A720F67574004FF32B /* OWSMessageHeaderView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSMessageHeaderView.h; sourceTree = "<group>"; };
|
348570A720F67574004FF32B /* OWSMessageHeaderView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSMessageHeaderView.h; sourceTree = "<group>"; };
|
||||||
348BB25C20A0C5530047AEC2 /* ContactShareViewHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContactShareViewHelper.swift; sourceTree = "<group>"; };
|
348BB25C20A0C5530047AEC2 /* ContactShareViewHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContactShareViewHelper.swift; sourceTree = "<group>"; };
|
||||||
|
@ -2363,8 +2365,8 @@
|
||||||
B660F6A21C29868000687D6E /* util */ = {
|
B660F6A21C29868000687D6E /* util */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
3491D9A021022DB7001EF5A1 /* CDSSigningCertificateTest.m */,
|
|
||||||
3421981B21061D2E00C57195 /* ByteParserTest.swift */,
|
3421981B21061D2E00C57195 /* ByteParserTest.swift */,
|
||||||
|
3491D9A021022DB7001EF5A1 /* CDSSigningCertificateTest.m */,
|
||||||
45E7A6A61E71CA7E00D44FB5 /* DisplayableTextFilterTest.swift */,
|
45E7A6A61E71CA7E00D44FB5 /* DisplayableTextFilterTest.swift */,
|
||||||
B660F6AA1C29868000687D6E /* ExceptionsTest.h */,
|
B660F6AA1C29868000687D6E /* ExceptionsTest.h */,
|
||||||
B660F6AB1C29868000687D6E /* ExceptionsTest.m */,
|
B660F6AB1C29868000687D6E /* ExceptionsTest.m */,
|
||||||
|
@ -2373,6 +2375,7 @@
|
||||||
455AC69D1F4F8B0300134004 /* ImageCacheTest.swift */,
|
455AC69D1F4F8B0300134004 /* ImageCacheTest.swift */,
|
||||||
34DB0BEB2011548A007B313F /* OWSDatabaseConverterTest.h */,
|
34DB0BEB2011548A007B313F /* OWSDatabaseConverterTest.h */,
|
||||||
34DB0BEC2011548B007B313F /* OWSDatabaseConverterTest.m */,
|
34DB0BEC2011548B007B313F /* OWSDatabaseConverterTest.m */,
|
||||||
|
34843B25214327C9004DED45 /* OWSOrphanedDataCleanerTest.m */,
|
||||||
45666F571D9B2880008FE134 /* OWSScrubbingLogFormatterTest.m */,
|
45666F571D9B2880008FE134 /* OWSScrubbingLogFormatterTest.m */,
|
||||||
34E8A8D02085238900B272B1 /* ProtoParsingTest.m */,
|
34E8A8D02085238900B272B1 /* ProtoParsingTest.m */,
|
||||||
45360B8F1F9527DA00FA666C /* SearcherTest.swift */,
|
45360B8F1F9527DA00FA666C /* SearcherTest.swift */,
|
||||||
|
@ -3473,6 +3476,7 @@
|
||||||
340B02BA1FA0D6C700F9CFEC /* ConversationViewItemTest.m in Sources */,
|
340B02BA1FA0D6C700F9CFEC /* ConversationViewItemTest.m in Sources */,
|
||||||
458E383A1D6699FA0094BD24 /* OWSDeviceProvisioningURLParserTest.m in Sources */,
|
458E383A1D6699FA0094BD24 /* OWSDeviceProvisioningURLParserTest.m in Sources */,
|
||||||
3421981C21061D2E00C57195 /* ByteParserTest.swift in Sources */,
|
3421981C21061D2E00C57195 /* ByteParserTest.swift in Sources */,
|
||||||
|
34843B26214327C9004DED45 /* OWSOrphanedDataCleanerTest.m in Sources */,
|
||||||
45360B901F9527DA00FA666C /* SearcherTest.swift in Sources */,
|
45360B901F9527DA00FA666C /* SearcherTest.swift in Sources */,
|
||||||
B660F7561C29988E00687D6E /* PushManager.m in Sources */,
|
B660F7561C29988E00687D6E /* PushManager.m in Sources */,
|
||||||
34DB0BED2011548B007B313F /* OWSDatabaseConverterTest.m in Sources */,
|
34DB0BED2011548B007B313F /* OWSDatabaseConverterTest.m in Sources */,
|
||||||
|
|
|
@ -3,3 +3,4 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
#import "Signal-Bridging-Header.h"
|
#import "Signal-Bridging-Header.h"
|
||||||
|
#import "SignalBaseTest.h"
|
||||||
|
|
|
@ -2,21 +2,21 @@
|
||||||
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
|
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
|
||||||
//
|
//
|
||||||
|
|
||||||
#import "OWSOrphanedDataCleaner.h"
|
|
||||||
#import "OWSDevice.h"
|
#import "OWSDevice.h"
|
||||||
|
#import "OWSOrphanDataCleaner.h"
|
||||||
#import "OWSPrimaryStorage.h"
|
#import "OWSPrimaryStorage.h"
|
||||||
#import "SSKBaseTest.h"
|
#import "SSKBaseTest.h"
|
||||||
#import "TSAttachmentStream.h"
|
#import "TSAttachmentStream.h"
|
||||||
#import "TSContactThread.h"
|
#import "TSContactThread.h"
|
||||||
#import "TSIncomingMessage.h"
|
#import "TSIncomingMessage.h"
|
||||||
|
|
||||||
@interface OWSOrphanedDataCleanerTest : SSKBaseTest
|
@interface OWSOrphanDataCleanerTest : SSKBaseTest
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
|
|
||||||
@implementation OWSOrphanedDataCleanerTest
|
@implementation OWSOrphanDataCleanerTest
|
||||||
|
|
||||||
- (void)setUp
|
- (void)setUp
|
||||||
{
|
{
|
||||||
|
@ -43,7 +43,7 @@
|
||||||
|
|
||||||
- (NSUInteger)numberOfItemsInAttachmentsFolder
|
- (NSUInteger)numberOfItemsInAttachmentsFolder
|
||||||
{
|
{
|
||||||
return [OWSOrphanedDataCleaner filePathsInAttachmentsFolder].count;
|
return [OWSOrphanDataCleaner filePathsInAttachmentsFolder].count;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (TSIncomingMessage *)createIncomingMessageWithThread:(TSThread *)thread
|
- (TSIncomingMessage *)createIncomingMessageWithThread:(TSThread *)thread
|
||||||
|
@ -91,7 +91,7 @@
|
||||||
XCTAssertEqual(1, [TSIncomingMessage numberOfKeysInCollection]);
|
XCTAssertEqual(1, [TSIncomingMessage numberOfKeysInCollection]);
|
||||||
|
|
||||||
XCTestExpectation *expectation = [self expectationWithDescription:@"Cleanup"];
|
XCTestExpectation *expectation = [self expectationWithDescription:@"Cleanup"];
|
||||||
[OWSOrphanedDataCleaner auditAndCleanupAsync:^{
|
[OWSOrphanDataCleaner auditAndCleanupAsync:^{
|
||||||
[expectation fulfill];
|
[expectation fulfill];
|
||||||
}];
|
}];
|
||||||
[self waitForExpectationsWithTimeout:5.0
|
[self waitForExpectationsWithTimeout:5.0
|
||||||
|
@ -114,7 +114,7 @@
|
||||||
XCTAssertEqual(1, [TSIncomingMessage numberOfKeysInCollection]);
|
XCTAssertEqual(1, [TSIncomingMessage numberOfKeysInCollection]);
|
||||||
|
|
||||||
XCTestExpectation *expectation = [self expectationWithDescription:@"Cleanup"];
|
XCTestExpectation *expectation = [self expectationWithDescription:@"Cleanup"];
|
||||||
[OWSOrphanedDataCleaner auditAndCleanupAsync:^{
|
[OWSOrphanDataCleaner auditAndCleanupAsync:^{
|
||||||
[expectation fulfill];
|
[expectation fulfill];
|
||||||
}];
|
}];
|
||||||
[self waitForExpectationsWithTimeout:5.0
|
[self waitForExpectationsWithTimeout:5.0
|
||||||
|
@ -142,7 +142,7 @@
|
||||||
// Do multiple cleanup passes.
|
// Do multiple cleanup passes.
|
||||||
for (int i = 0; i < 2; i++) {
|
for (int i = 0; i < 2; i++) {
|
||||||
XCTestExpectation *expectation = [self expectationWithDescription:@"Cleanup"];
|
XCTestExpectation *expectation = [self expectationWithDescription:@"Cleanup"];
|
||||||
[OWSOrphanedDataCleaner auditAndCleanupAsync:^{
|
[OWSOrphanDataCleaner auditAndCleanupAsync:^{
|
||||||
[expectation fulfill];
|
[expectation fulfill];
|
||||||
}];
|
}];
|
||||||
[self waitForExpectationsWithTimeout:5.0
|
[self waitForExpectationsWithTimeout:5.0
|
||||||
|
@ -174,7 +174,7 @@
|
||||||
XCTAssertEqual(1, [self numberOfItemsInAttachmentsFolder]);
|
XCTAssertEqual(1, [self numberOfItemsInAttachmentsFolder]);
|
||||||
|
|
||||||
XCTestExpectation *expectation = [self expectationWithDescription:@"Cleanup"];
|
XCTestExpectation *expectation = [self expectationWithDescription:@"Cleanup"];
|
||||||
[OWSOrphanedDataCleaner auditAndCleanupAsync:^{
|
[OWSOrphanDataCleaner auditAndCleanupAsync:^{
|
||||||
[expectation fulfill];
|
[expectation fulfill];
|
||||||
}];
|
}];
|
||||||
[self waitForExpectationsWithTimeout:5.0
|
[self waitForExpectationsWithTimeout:5.0
|
||||||
|
@ -203,7 +203,7 @@
|
||||||
XCTAssertEqual(1, [self numberOfItemsInAttachmentsFolder]);
|
XCTAssertEqual(1, [self numberOfItemsInAttachmentsFolder]);
|
||||||
|
|
||||||
XCTestExpectation *expectation = [self expectationWithDescription:@"Cleanup"];
|
XCTestExpectation *expectation = [self expectationWithDescription:@"Cleanup"];
|
||||||
[OWSOrphanedDataCleaner auditAndCleanupAsync:^{
|
[OWSOrphanDataCleaner auditAndCleanupAsync:^{
|
||||||
[expectation fulfill];
|
[expectation fulfill];
|
||||||
}];
|
}];
|
||||||
[self waitForExpectationsWithTimeout:5.0
|
[self waitForExpectationsWithTimeout:5.0
|
|
@ -44,29 +44,31 @@
|
||||||
- (void)testIncrementalMessageNumbers
|
- (void)testIncrementalMessageNumbers
|
||||||
{
|
{
|
||||||
__block NSInteger messageInt;
|
__block NSInteger messageInt;
|
||||||
NSString *body = @"I don't see myself as a hero because what I'm doing is self-interested: I don't want to live in a world where there's no privacy and therefore no room for intellectual exploration and creativity.";
|
NSString *body
|
||||||
[[OWSPrimaryStorage sharedManager].newDatabaseConnection readWriteWithBlock:^(
|
= @"I don't see myself as a hero because what I'm doing is self-interested: I don't want to live in a world "
|
||||||
YapDatabaseReadWriteTransaction *transaction) {
|
@"where there's no privacy and therefore no room for intellectual exploration and creativity.";
|
||||||
NSString* messageId;
|
[[OWSPrimaryStorage sharedManager].newDatabaseConnection
|
||||||
|
readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||||
for (uint64_t i = 0; i<50; i++) {
|
NSString *messageId;
|
||||||
TSOutgoingMessage *newMessage =
|
|
||||||
[[TSOutgoingMessage alloc] initWithTimestamp:i inThread:self.thread messageBody:body];
|
for (uint64_t i = 0; i < 50; i++) {
|
||||||
[newMessage saveWithTransaction:transaction];
|
TSOutgoingMessage *newMessage =
|
||||||
if (i == 0) {
|
[[TSOutgoingMessage alloc] initWithTimestamp:i inThread:self.thread messageBody:body];
|
||||||
messageId = newMessage.uniqueId;
|
[newMessage saveWithTransaction:transaction];
|
||||||
|
if (i == 0) {
|
||||||
|
messageId = newMessage.uniqueId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
messageInt = [messageId integerValue];
|
||||||
messageInt = [messageId integerValue];
|
|
||||||
|
for (NSInteger i = messageInt; i < messageInt + 50; i++) {
|
||||||
for (NSInteger i = messageInt; i < messageInt+50; i++) {
|
TSOutgoingMessage *message =
|
||||||
TSOutgoingMessage *message =
|
[TSOutgoingMessage fetchObjectWithUniqueID:[@(i) stringValue] transaction:transaction];
|
||||||
[TSOutgoingMessage fetchObjectWithUniqueID:[@(i) stringValue] transaction:transaction];
|
XCTAssert(message != nil);
|
||||||
XCTAssert(message != nil);
|
XCTAssert(message.body == body);
|
||||||
XCTAssert(message.body == body);
|
}
|
||||||
}
|
}];
|
||||||
}];
|
|
||||||
|
|
||||||
[[OWSPrimaryStorage sharedManager].newDatabaseConnection
|
[[OWSPrimaryStorage sharedManager].newDatabaseConnection
|
||||||
readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||||
|
@ -89,8 +91,11 @@
|
||||||
{
|
{
|
||||||
__block NSString *messageId;
|
__block NSString *messageId;
|
||||||
uint64_t timestamp = 666;
|
uint64_t timestamp = 666;
|
||||||
|
|
||||||
NSString *body = @"A child born today will grow up with no conception of privacy at all. They’ll never know what it means to have a private moment to themselves an unrecorded, unanalyzed thought. And that’s a problem because privacy matters; privacy is what allows us to determine who we are and who we want to be.";
|
NSString *body
|
||||||
|
= @"A child born today will grow up with no conception of privacy at all. They’ll never know what it means to "
|
||||||
|
@"have a private moment to themselves an unrecorded, unanalyzed thought. And that’s a problem because "
|
||||||
|
@"privacy matters; privacy is what allows us to determine who we are and who we want to be.";
|
||||||
|
|
||||||
TSIncomingMessage *newMessage = [[TSIncomingMessage alloc] initWithTimestamp:timestamp
|
TSIncomingMessage *newMessage = [[TSIncomingMessage alloc] initWithTimestamp:timestamp
|
||||||
inThread:self.thread
|
inThread:self.thread
|
||||||
|
@ -114,7 +119,10 @@
|
||||||
|
|
||||||
- (void)testMessagesDeletedOnThreadDeletion
|
- (void)testMessagesDeletedOnThreadDeletion
|
||||||
{
|
{
|
||||||
NSString *body = @"A child born today will grow up with no conception of privacy at all. They’ll never know what it means to have a private moment to themselves an unrecorded, unanalyzed thought. And that’s a problem because privacy matters; privacy is what allows us to determine who we are and who we want to be.";
|
NSString *body
|
||||||
|
= @"A child born today will grow up with no conception of privacy at all. They’ll never know what it means to "
|
||||||
|
@"have a private moment to themselves an unrecorded, unanalyzed thought. And that’s a problem because "
|
||||||
|
@"privacy matters; privacy is what allows us to determine who we are and who we want to be.";
|
||||||
|
|
||||||
NSMutableArray<TSIncomingMessage *> *messages = [NSMutableArray new];
|
NSMutableArray<TSIncomingMessage *> *messages = [NSMutableArray new];
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 10; i++) {
|
||||||
|
@ -149,7 +157,10 @@
|
||||||
|
|
||||||
- (void)testGroupMessagesDeletedOnThreadDeletion
|
- (void)testGroupMessagesDeletedOnThreadDeletion
|
||||||
{
|
{
|
||||||
NSString *body = @"A child born today will grow up with no conception of privacy at all. They’ll never know what it means to have a private moment to themselves an unrecorded, unanalyzed thought. And that’s a problem because privacy matters; privacy is what allows us to determine who we are and who we want to be.";
|
NSString *body
|
||||||
|
= @"A child born today will grow up with no conception of privacy at all. They’ll never know what it means to "
|
||||||
|
@"have a private moment to themselves an unrecorded, unanalyzed thought. And that’s a problem because "
|
||||||
|
@"privacy matters; privacy is what allows us to determine who we are and who we want to be.";
|
||||||
|
|
||||||
__block TSGroupThread *thread;
|
__block TSGroupThread *thread;
|
||||||
[[OWSPrimaryStorage sharedManager].dbReadWriteConnection readWriteWithBlock:^(
|
[[OWSPrimaryStorage sharedManager].dbReadWriteConnection readWriteWithBlock:^(
|
|
@ -17,34 +17,46 @@
|
||||||
|
|
||||||
@implementation TSStorageIdentityKeyStoreTests
|
@implementation TSStorageIdentityKeyStoreTests
|
||||||
|
|
||||||
- (void)setUp {
|
- (void)setUp
|
||||||
|
{
|
||||||
[super setUp];
|
[super setUp];
|
||||||
|
|
||||||
[[OWSPrimaryStorage sharedManager] purgeCollection:OWSPrimaryStorageTrustedKeysCollection];
|
[[OWSPrimaryStorage sharedManager] purgeCollection:OWSPrimaryStorageTrustedKeysCollection];
|
||||||
[OWSRecipientIdentity removeAllObjectsInCollection];
|
[OWSRecipientIdentity removeAllObjectsInCollection];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)tearDown {
|
- (void)tearDown
|
||||||
|
{
|
||||||
// Put teardown code here. This method is called after the invocation of each test method in the class.
|
// Put teardown code here. This method is called after the invocation of each test method in the class.
|
||||||
[super tearDown];
|
[super tearDown];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)testNewEmptyKey {
|
- (void)testNewEmptyKey
|
||||||
|
{
|
||||||
NSData *newKey = [SecurityUtils generateRandomBytes:32];
|
NSData *newKey = [SecurityUtils generateRandomBytes:32];
|
||||||
NSString *recipientId = @"test@gmail.com";
|
NSString *recipientId = @"test@gmail.com";
|
||||||
|
|
||||||
XCTAssert([[OWSIdentityManager sharedManager] isTrustedIdentityKey:newKey recipientId:recipientId direction:TSMessageDirectionOutgoing]);
|
XCTAssert([[OWSIdentityManager sharedManager] isTrustedIdentityKey:newKey
|
||||||
XCTAssert([[OWSIdentityManager sharedManager] isTrustedIdentityKey:newKey recipientId:recipientId direction:TSMessageDirectionIncoming]);
|
recipientId:recipientId
|
||||||
|
direction:TSMessageDirectionOutgoing]);
|
||||||
|
XCTAssert([[OWSIdentityManager sharedManager] isTrustedIdentityKey:newKey
|
||||||
|
recipientId:recipientId
|
||||||
|
direction:TSMessageDirectionIncoming]);
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)testAlreadyRegisteredKey {
|
- (void)testAlreadyRegisteredKey
|
||||||
|
{
|
||||||
NSData *newKey = [SecurityUtils generateRandomBytes:32];
|
NSData *newKey = [SecurityUtils generateRandomBytes:32];
|
||||||
NSString *recipientId = @"test@gmail.com";
|
NSString *recipientId = @"test@gmail.com";
|
||||||
|
|
||||||
[[OWSIdentityManager sharedManager] saveRemoteIdentity:newKey recipientId:recipientId];
|
[[OWSIdentityManager sharedManager] saveRemoteIdentity:newKey recipientId:recipientId];
|
||||||
|
|
||||||
XCTAssert([[OWSIdentityManager sharedManager] isTrustedIdentityKey:newKey recipientId:recipientId direction:TSMessageDirectionOutgoing]);
|
XCTAssert([[OWSIdentityManager sharedManager] isTrustedIdentityKey:newKey
|
||||||
XCTAssert([[OWSIdentityManager sharedManager] isTrustedIdentityKey:newKey recipientId:recipientId direction:TSMessageDirectionIncoming]);
|
recipientId:recipientId
|
||||||
|
direction:TSMessageDirectionOutgoing]);
|
||||||
|
XCTAssert([[OWSIdentityManager sharedManager] isTrustedIdentityKey:newKey
|
||||||
|
recipientId:recipientId
|
||||||
|
direction:TSMessageDirectionIncoming]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -54,20 +66,29 @@
|
||||||
NSString *recipientId = @"test@protonmail.com";
|
NSString *recipientId = @"test@protonmail.com";
|
||||||
|
|
||||||
[[OWSIdentityManager sharedManager] saveRemoteIdentity:originalKey recipientId:recipientId];
|
[[OWSIdentityManager sharedManager] saveRemoteIdentity:originalKey recipientId:recipientId];
|
||||||
|
|
||||||
XCTAssert([[OWSIdentityManager sharedManager] isTrustedIdentityKey:originalKey recipientId:recipientId direction:TSMessageDirectionOutgoing]);
|
XCTAssert([[OWSIdentityManager sharedManager] isTrustedIdentityKey:originalKey
|
||||||
XCTAssert([[OWSIdentityManager sharedManager] isTrustedIdentityKey:originalKey recipientId:recipientId direction:TSMessageDirectionIncoming]);
|
recipientId:recipientId
|
||||||
|
direction:TSMessageDirectionOutgoing]);
|
||||||
|
XCTAssert([[OWSIdentityManager sharedManager] isTrustedIdentityKey:originalKey
|
||||||
|
recipientId:recipientId
|
||||||
|
direction:TSMessageDirectionIncoming]);
|
||||||
|
|
||||||
NSData *otherKey = [SecurityUtils generateRandomBytes:32];
|
NSData *otherKey = [SecurityUtils generateRandomBytes:32];
|
||||||
|
|
||||||
XCTAssertFalse([[OWSIdentityManager sharedManager] isTrustedIdentityKey:otherKey recipientId:recipientId direction:TSMessageDirectionOutgoing]);
|
XCTAssertFalse([[OWSIdentityManager sharedManager] isTrustedIdentityKey:otherKey
|
||||||
XCTAssert([[OWSIdentityManager sharedManager] isTrustedIdentityKey:otherKey recipientId:recipientId direction:TSMessageDirectionIncoming]);
|
recipientId:recipientId
|
||||||
|
direction:TSMessageDirectionOutgoing]);
|
||||||
|
XCTAssert([[OWSIdentityManager sharedManager] isTrustedIdentityKey:otherKey
|
||||||
|
recipientId:recipientId
|
||||||
|
direction:TSMessageDirectionIncoming]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
- (void)testIdentityKey {
|
- (void)testIdentityKey
|
||||||
|
{
|
||||||
[[OWSIdentityManager sharedManager] generateNewIdentityKey];
|
[[OWSIdentityManager sharedManager] generateNewIdentityKey];
|
||||||
|
|
||||||
XCTAssert([[[OWSIdentityManager sharedManager] identityKeyPair].publicKey length] == 32);
|
XCTAssert([[[OWSIdentityManager sharedManager] identityKeyPair].publicKey length] == 32);
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,17 +11,20 @@
|
||||||
|
|
||||||
@implementation TSStoragePreKeyStoreTests
|
@implementation TSStoragePreKeyStoreTests
|
||||||
|
|
||||||
- (void)setUp {
|
- (void)setUp
|
||||||
|
{
|
||||||
[super setUp];
|
[super setUp];
|
||||||
// Put setup code here. This method is called before the invocation of each test method in the class.
|
// Put setup code here. This method is called before the invocation of each test method in the class.
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)tearDown {
|
- (void)tearDown
|
||||||
|
{
|
||||||
// Put teardown code here. This method is called after the invocation of each test method in the class.
|
// Put teardown code here. This method is called after the invocation of each test method in the class.
|
||||||
[super tearDown];
|
[super tearDown];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)testGeneratingAndStoringPreKeys {
|
- (void)testGeneratingAndStoringPreKeys
|
||||||
|
{
|
||||||
NSArray *generatedKeys = [[OWSPrimaryStorage sharedManager] generatePreKeyRecords];
|
NSArray *generatedKeys = [[OWSPrimaryStorage sharedManager] generatePreKeyRecords];
|
||||||
|
|
||||||
|
|
||||||
|
@ -29,7 +32,7 @@
|
||||||
|
|
||||||
[[OWSPrimaryStorage sharedManager] storePreKeyRecords:generatedKeys];
|
[[OWSPrimaryStorage sharedManager] storePreKeyRecords:generatedKeys];
|
||||||
|
|
||||||
PreKeyRecord *lastPreKeyRecord = [generatedKeys lastObject];
|
PreKeyRecord *lastPreKeyRecord = [generatedKeys lastObject];
|
||||||
PreKeyRecord *firstPreKeyRecord = [generatedKeys firstObject];
|
PreKeyRecord *firstPreKeyRecord = [generatedKeys firstObject];
|
||||||
|
|
||||||
XCTAssert([[[OWSPrimaryStorage sharedManager] loadPreKey:lastPreKeyRecord.Id].keyPair.publicKey
|
XCTAssert([[[OWSPrimaryStorage sharedManager] loadPreKey:lastPreKeyRecord.Id].keyPair.publicKey
|
||||||
|
@ -40,14 +43,15 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
- (void)testRemovingPreKeys {
|
- (void)testRemovingPreKeys
|
||||||
|
{
|
||||||
NSArray *generatedKeys = [[OWSPrimaryStorage sharedManager] generatePreKeyRecords];
|
NSArray *generatedKeys = [[OWSPrimaryStorage sharedManager] generatePreKeyRecords];
|
||||||
|
|
||||||
XCTAssert([generatedKeys count] == 100, @"Not hundred keys generated");
|
XCTAssert([generatedKeys count] == 100, @"Not hundred keys generated");
|
||||||
|
|
||||||
[[OWSPrimaryStorage sharedManager] storePreKeyRecords:generatedKeys];
|
[[OWSPrimaryStorage sharedManager] storePreKeyRecords:generatedKeys];
|
||||||
|
|
||||||
PreKeyRecord *lastPreKeyRecord = [generatedKeys lastObject];
|
PreKeyRecord *lastPreKeyRecord = [generatedKeys lastObject];
|
||||||
PreKeyRecord *firstPreKeyRecord = [generatedKeys firstObject];
|
PreKeyRecord *firstPreKeyRecord = [generatedKeys firstObject];
|
||||||
|
|
||||||
[[OWSPrimaryStorage sharedManager] removePreKey:lastPreKeyRecord.Id];
|
[[OWSPrimaryStorage sharedManager] removePreKey:lastPreKeyRecord.Id];
|
|
@ -10,12 +10,14 @@
|
||||||
|
|
||||||
@implementation TSStorageSignedPreKeyStore
|
@implementation TSStorageSignedPreKeyStore
|
||||||
|
|
||||||
- (void)setUp {
|
- (void)setUp
|
||||||
|
{
|
||||||
[super setUp];
|
[super setUp];
|
||||||
// Put setup code here. This method is called before the invocation of each test method in the class.
|
// Put setup code here. This method is called before the invocation of each test method in the class.
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)tearDown {
|
- (void)tearDown
|
||||||
|
{
|
||||||
// Put teardown code here. This method is called after the invocation of each test method in the class.
|
// Put teardown code here. This method is called after the invocation of each test method in the class.
|
||||||
[super tearDown];
|
[super tearDown];
|
||||||
}
|
}
|
|
@ -3,7 +3,6 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
#import "SignalRecipient.h"
|
#import "SignalRecipient.h"
|
||||||
#import "MockSSKEnvironment.h"
|
|
||||||
#import "OWSPrimaryStorage.h"
|
#import "OWSPrimaryStorage.h"
|
||||||
#import "SSKBaseTest.h"
|
#import "SSKBaseTest.h"
|
||||||
#import "TSAccountManager.h"
|
#import "TSAccountManager.h"
|
||||||
|
|
|
@ -7,7 +7,6 @@
|
||||||
#import "OWSDisappearingMessagesConfiguration.h"
|
#import "OWSDisappearingMessagesConfiguration.h"
|
||||||
#import "OWSError.h"
|
#import "OWSError.h"
|
||||||
#import "OWSFakeContactsManager.h"
|
#import "OWSFakeContactsManager.h"
|
||||||
#import "OWSFakeContactsUpdater.h"
|
|
||||||
#import "OWSFakeNetworkManager.h"
|
#import "OWSFakeNetworkManager.h"
|
||||||
#import "OWSPrimaryStorage.h"
|
#import "OWSPrimaryStorage.h"
|
||||||
#import "OWSUploadOperation.h"
|
#import "OWSUploadOperation.h"
|
||||||
|
@ -218,7 +217,6 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
OWSPrimaryStorage *storageManager = [OWSPrimaryStorage sharedManager];
|
OWSPrimaryStorage *storageManager = [OWSPrimaryStorage sharedManager];
|
||||||
OWSFakeContactsManager *contactsManager = [OWSFakeContactsManager new];
|
OWSFakeContactsManager *contactsManager = [OWSFakeContactsManager new];
|
||||||
OWSFakeContactsUpdater *contactsUpdater = [OWSFakeContactsUpdater new];
|
|
||||||
|
|
||||||
// Successful Sending
|
// Successful Sending
|
||||||
TSNetworkManager *successfulNetworkManager = [[OWSMessageSenderFakeNetworkManager alloc] initWithSuccess:YES];
|
TSNetworkManager *successfulNetworkManager = [[OWSMessageSenderFakeNetworkManager alloc] initWithSuccess:YES];
|
||||||
|
|
|
@ -7,15 +7,14 @@
|
||||||
#import "Cryptography.h"
|
#import "Cryptography.h"
|
||||||
#import "OWSFakeCallMessageHandler.h"
|
#import "OWSFakeCallMessageHandler.h"
|
||||||
#import "OWSFakeContactsManager.h"
|
#import "OWSFakeContactsManager.h"
|
||||||
#import "OWSFakeContactsUpdater.h"
|
|
||||||
#import "OWSFakeMessageSender.h"
|
#import "OWSFakeMessageSender.h"
|
||||||
#import "OWSFakeNetworkManager.h"
|
#import "OWSFakeNetworkManager.h"
|
||||||
#import "OWSIdentityManager.h"
|
#import "OWSIdentityManager.h"
|
||||||
#import "OWSMessageSender.h"
|
#import "OWSMessageSender.h"
|
||||||
#import "OWSPrimaryStorage.h"
|
#import "OWSPrimaryStorage.h"
|
||||||
#import "OWSSignalServiceProtos.pb.h"
|
|
||||||
#import "OWSUnitTestEnvironment.h"
|
#import "OWSUnitTestEnvironment.h"
|
||||||
#import "SSKBaseTest.h"
|
#import "SSKBaseTest.h"
|
||||||
|
#import "SSKProto.pb.h"
|
||||||
#import "TSGroupThread.h"
|
#import "TSGroupThread.h"
|
||||||
#import "TSNetworkManager.h"
|
#import "TSNetworkManager.h"
|
||||||
|
|
||||||
|
@ -34,11 +33,9 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
messageSender:(OWSMessageSender *)messageSender;
|
messageSender:(OWSMessageSender *)messageSender;
|
||||||
|
|
||||||
// private method we are testing
|
// private method we are testing
|
||||||
- (void)handleIncomingEnvelope:(OWSSignalServiceProtosEnvelope *)messageEnvelope
|
- (void)handleIncomingEnvelope:(SSKProtoEnvelope *)messageEnvelope withSyncMessage:(SSKProtoSyncMessage *)syncMessage;
|
||||||
withSyncMessage:(OWSSignalServiceProtosSyncMessage *)syncMessage;
|
|
||||||
|
|
||||||
- (void)handleIncomingEnvelope:(OWSSignalServiceProtosEnvelope *)messageEnvelope
|
- (void)handleIncomingEnvelope:(SSKProtoEnvelope *)messageEnvelope withDataMessage:(SSKProtoDataMessage *)dataMessage;
|
||||||
withDataMessage:(OWSSignalServiceProtosDataMessage *)dataMessage;
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@ -54,7 +51,6 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
storageManager:[OWSPrimaryStorage sharedManager]
|
storageManager:[OWSPrimaryStorage sharedManager]
|
||||||
callMessageHandler:[OWSFakeCallMessageHandler new]
|
callMessageHandler:[OWSFakeCallMessageHandler new]
|
||||||
contactsManager:[OWSFakeContactsManager new]
|
contactsManager:[OWSFakeContactsManager new]
|
||||||
contactsUpdater:[OWSFakeContactsUpdater new]
|
|
||||||
identityManager:[OWSIdentityManager sharedManager]
|
identityManager:[OWSIdentityManager sharedManager]
|
||||||
messageSender:messageSender];
|
messageSender:messageSender];
|
||||||
}
|
}
|
||||||
|
@ -72,11 +68,10 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
TSMessagesManager *messagesManager =
|
TSMessagesManager *messagesManager =
|
||||||
[self messagesManagerWithSender:[[OWSFakeMessageSender alloc] initWithExpectation:messageWasSent]];
|
[self messagesManagerWithSender:[[OWSFakeMessageSender alloc] initWithExpectation:messageWasSent]];
|
||||||
|
|
||||||
OWSSignalServiceProtosEnvelopeBuilder *envelopeBuilder = [OWSSignalServiceProtosEnvelopeBuilder new];
|
SSKProtoEnvelopeBuilder *envelopeBuilder = [SSKProtoEnvelopeBuilder new];
|
||||||
OWSSignalServiceProtosSyncMessageBuilder *messageBuilder = [OWSSignalServiceProtosSyncMessageBuilder new];
|
SSKProtoSyncMessageBuilder *messageBuilder = [SSKProtoSyncMessageBuilder new];
|
||||||
OWSSignalServiceProtosSyncMessageRequestBuilder *requestBuilder =
|
SSKProtoSyncMessageRequestBuilder *requestBuilder = [SSKProtoSyncMessageRequestBuilder new];
|
||||||
[OWSSignalServiceProtosSyncMessageRequestBuilder new];
|
[requestBuilder setType:SSKProtoSyncMessageRequestTypeGroups];
|
||||||
[requestBuilder setType:OWSSignalServiceProtosSyncMessageRequestTypeGroups];
|
|
||||||
[messageBuilder setRequest:[requestBuilder build]];
|
[messageBuilder setRequest:[requestBuilder build]];
|
||||||
|
|
||||||
[messagesManager handleIncomingEnvelope:[envelopeBuilder build] withSyncMessage:[messageBuilder build]];
|
[messagesManager handleIncomingEnvelope:[envelopeBuilder build] withSyncMessage:[messageBuilder build]];
|
||||||
|
@ -96,14 +91,14 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
TSMessagesManager *messagesManager = [self messagesManagerWithSender:[OWSFakeMessageSender new]];
|
TSMessagesManager *messagesManager = [self messagesManagerWithSender:[OWSFakeMessageSender new]];
|
||||||
|
|
||||||
OWSSignalServiceProtosEnvelopeBuilder *envelopeBuilder = [OWSSignalServiceProtosEnvelopeBuilder new];
|
SSKProtoEnvelopeBuilder *envelopeBuilder = [SSKProtoEnvelopeBuilder new];
|
||||||
|
|
||||||
OWSSignalServiceProtosGroupContextBuilder *groupContextBuilder = [OWSSignalServiceProtosGroupContextBuilder new];
|
SSKProtoGroupContextBuilder *groupContextBuilder = [SSKProtoGroupContextBuilder new];
|
||||||
groupContextBuilder.name = @"Newly created Group Name";
|
groupContextBuilder.name = @"Newly created Group Name";
|
||||||
groupContextBuilder.id = groupIdData;
|
groupContextBuilder.id = groupIdData;
|
||||||
groupContextBuilder.type = OWSSignalServiceProtosGroupContextTypeUpdate;
|
groupContextBuilder.type = SSKProtoGroupContextTypeUpdate;
|
||||||
|
|
||||||
OWSSignalServiceProtosDataMessageBuilder *messageBuilder = [OWSSignalServiceProtosDataMessageBuilder new];
|
SSKProtoDataMessageBuilder *messageBuilder = [SSKProtoDataMessageBuilder new];
|
||||||
messageBuilder.group = [groupContextBuilder build];
|
messageBuilder.group = [groupContextBuilder build];
|
||||||
|
|
||||||
[messagesManager handleIncomingEnvelope:[envelopeBuilder build] withDataMessage:[messageBuilder build]];
|
[messagesManager handleIncomingEnvelope:[envelopeBuilder build] withDataMessage:[messageBuilder build]];
|
||||||
|
@ -123,22 +118,21 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
TSMessagesManager *messagesManager = [self messagesManagerWithSender:[OWSFakeMessageSender new]];
|
TSMessagesManager *messagesManager = [self messagesManagerWithSender:[OWSFakeMessageSender new]];
|
||||||
|
|
||||||
|
|
||||||
OWSSignalServiceProtosEnvelopeBuilder *envelopeBuilder = [OWSSignalServiceProtosEnvelopeBuilder new];
|
SSKProtoEnvelopeBuilder *envelopeBuilder = [SSKProtoEnvelopeBuilder new];
|
||||||
|
|
||||||
OWSSignalServiceProtosGroupContextBuilder *groupContextBuilder = [OWSSignalServiceProtosGroupContextBuilder new];
|
SSKProtoGroupContextBuilder *groupContextBuilder = [SSKProtoGroupContextBuilder new];
|
||||||
groupContextBuilder.name = @"Newly created Group with Avatar Name";
|
groupContextBuilder.name = @"Newly created Group with Avatar Name";
|
||||||
groupContextBuilder.id = groupIdData;
|
groupContextBuilder.id = groupIdData;
|
||||||
groupContextBuilder.type = OWSSignalServiceProtosGroupContextTypeUpdate;
|
groupContextBuilder.type = SSKProtoGroupContextTypeUpdate;
|
||||||
|
|
||||||
OWSSignalServiceProtosAttachmentPointerBuilder *attachmentBuilder =
|
SSKProtoAttachmentPointerBuilder *attachmentBuilder = [SSKProtoAttachmentPointerBuilder new];
|
||||||
[OWSSignalServiceProtosAttachmentPointerBuilder new];
|
|
||||||
attachmentBuilder.id = 1234;
|
attachmentBuilder.id = 1234;
|
||||||
attachmentBuilder.contentType = @"image/png";
|
attachmentBuilder.contentType = @"image/png";
|
||||||
attachmentBuilder.key = [NSData new];
|
attachmentBuilder.key = [NSData new];
|
||||||
attachmentBuilder.size = 123;
|
attachmentBuilder.size = 123;
|
||||||
groupContextBuilder.avatar = [attachmentBuilder build];
|
groupContextBuilder.avatar = [attachmentBuilder build];
|
||||||
|
|
||||||
OWSSignalServiceProtosDataMessageBuilder *messageBuilder = [OWSSignalServiceProtosDataMessageBuilder new];
|
SSKProtoDataMessageBuilder *messageBuilder = [SSKProtoDataMessageBuilder new];
|
||||||
messageBuilder.group = [groupContextBuilder build];
|
messageBuilder.group = [groupContextBuilder build];
|
||||||
|
|
||||||
[messagesManager handleIncomingEnvelope:[envelopeBuilder build] withDataMessage:[messageBuilder build]];
|
[messagesManager handleIncomingEnvelope:[envelopeBuilder build] withDataMessage:[messageBuilder build]];
|
||||||
|
@ -158,16 +152,16 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
TSMessagesManager *messagesManager = [self messagesManagerWithSender:[OWSFakeMessageSender new]];
|
TSMessagesManager *messagesManager = [self messagesManagerWithSender:[OWSFakeMessageSender new]];
|
||||||
|
|
||||||
OWSSignalServiceProtosEnvelopeBuilder *envelopeBuilder = [OWSSignalServiceProtosEnvelopeBuilder new];
|
SSKProtoEnvelopeBuilder *envelopeBuilder = [SSKProtoEnvelopeBuilder new];
|
||||||
|
|
||||||
OWSSignalServiceProtosGroupContextBuilder *groupContextBuilder = [OWSSignalServiceProtosGroupContextBuilder new];
|
SSKProtoGroupContextBuilder *groupContextBuilder = [SSKProtoGroupContextBuilder new];
|
||||||
groupContextBuilder.name = @"Newly created Group with Avatar Name";
|
groupContextBuilder.name = @"Newly created Group with Avatar Name";
|
||||||
groupContextBuilder.id = groupIdData;
|
groupContextBuilder.id = groupIdData;
|
||||||
|
|
||||||
// e.g. some future feature sent from another device that we don't yet support.
|
// e.g. some future feature sent from another device that we don't yet support.
|
||||||
groupContextBuilder.type = 666;
|
groupContextBuilder.type = 666;
|
||||||
|
|
||||||
OWSSignalServiceProtosDataMessageBuilder *messageBuilder = [OWSSignalServiceProtosDataMessageBuilder new];
|
SSKProtoDataMessageBuilder *messageBuilder = [SSKProtoDataMessageBuilder new];
|
||||||
messageBuilder.group = [groupContextBuilder build];
|
messageBuilder.group = [groupContextBuilder build];
|
||||||
|
|
||||||
[messagesManager handleIncomingEnvelope:[envelopeBuilder build] withDataMessage:[messageBuilder build]];
|
[messagesManager handleIncomingEnvelope:[envelopeBuilder build] withDataMessage:[messageBuilder build]];
|
||||||
|
|
|
@ -8,20 +8,14 @@
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
@interface Cryptography (TestingPrivateMethods)
|
|
||||||
|
|
||||||
+ (nullable NSData *)decryptAESGCMWithInitializationVector:(NSData *)initializationVector
|
|
||||||
ciphertext:(NSData *)ciphertext
|
|
||||||
authTag:(NSData *)authTagFromEncrypt
|
|
||||||
key:(OWSAES256Key *)key;
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
@interface CryptographyTests : SSKBaseTest
|
@interface CryptographyTests : SSKBaseTest
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
#pragma mark -
|
||||||
|
|
||||||
@interface Cryptography (Test)
|
@interface Cryptography (Test)
|
||||||
|
|
||||||
+ (NSData *)truncatedSHA256HMAC:(NSData *)dataToHMAC withHMACKey:(NSData *)HMACKey truncation:(int)bytes;
|
+ (NSData *)truncatedSHA256HMAC:(NSData *)dataToHMAC withHMACKey:(NSData *)HMACKey truncation:(int)bytes;
|
||||||
+ (NSData *)encryptCBCMode:(NSData *)dataToEncrypt
|
+ (NSData *)encryptCBCMode:(NSData *)dataToEncrypt
|
||||||
withKey:(NSData *)key
|
withKey:(NSData *)key
|
||||||
|
@ -38,13 +32,13 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
HMACKey:(NSData *)hmacKey
|
HMACKey:(NSData *)hmacKey
|
||||||
HMACType:(TSMACType)hmacType
|
HMACType:(TSMACType)hmacType
|
||||||
matchingHMAC:(NSData *)hmac;
|
matchingHMAC:(NSData *)hmac;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation CryptographyTests
|
@implementation CryptographyTests
|
||||||
|
|
||||||
- (void)testEncryptAttachmentData
|
- (void)testEncryptAttachmentData
|
||||||
{
|
{
|
||||||
|
|
||||||
NSString *plainText = @"SGF3YWlpIGlzIEF3ZXNvbWUh";
|
NSString *plainText = @"SGF3YWlpIGlzIEF3ZXNvbWUh";
|
||||||
NSData *plainTextData = [NSData dataFromBase64String:plainText];
|
NSData *plainTextData = [NSData dataFromBase64String:plainText];
|
||||||
|
|
||||||
|
@ -57,12 +51,11 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
NSData *cipherText =
|
NSData *cipherText =
|
||||||
[Cryptography encryptAttachmentData:plainTextData outKey:&generatedKey outDigest:&generatedDigest];
|
[Cryptography encryptAttachmentData:plainTextData outKey:&generatedKey outDigest:&generatedDigest];
|
||||||
|
|
||||||
|
|
||||||
NSError *error;
|
NSError *error;
|
||||||
NSData *decryptedData = [Cryptography decryptAttachment:cipherText
|
NSData *decryptedData = [Cryptography decryptAttachment:cipherText
|
||||||
withKey:generatedKey
|
withKey:generatedKey
|
||||||
digest:generatedDigest
|
digest:generatedDigest
|
||||||
unpaddedSize:(UInt32)cipherText.length
|
unpaddedSize:(UInt32)plainTextData.length
|
||||||
error:&error];
|
error:&error];
|
||||||
XCTAssertNil(error);
|
XCTAssertNil(error);
|
||||||
|
|
||||||
|
@ -112,13 +105,11 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
NSData *badKey = [Cryptography generateRandomBytes:64];
|
NSData *badKey = [Cryptography generateRandomBytes:64];
|
||||||
|
|
||||||
NSError *error;
|
NSError *error;
|
||||||
NSData *decryptedData = [Cryptography decryptAttachment:cipherText
|
XCTAssertThrows([Cryptography decryptAttachment:cipherText
|
||||||
withKey:badKey
|
withKey:badKey
|
||||||
digest:generatedDigest
|
digest:generatedDigest
|
||||||
unpaddedSize:(UInt32)cipherText.length + 1
|
unpaddedSize:(UInt32)plainTextData.length
|
||||||
error:&error];
|
error:&error]);
|
||||||
|
|
||||||
XCTAssertNil(decryptedData);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)testDecryptAttachmentWithBadDigest
|
- (void)testDecryptAttachmentWithBadDigest
|
||||||
|
@ -138,13 +129,11 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
NSData *badDigest = [Cryptography generateRandomBytes:32];
|
NSData *badDigest = [Cryptography generateRandomBytes:32];
|
||||||
|
|
||||||
NSError *error;
|
NSError *error;
|
||||||
NSData *decryptedData = [Cryptography decryptAttachment:cipherText
|
XCTAssertThrows([Cryptography decryptAttachment:cipherText
|
||||||
withKey:generatedKey
|
withKey:generatedKey
|
||||||
digest:badDigest
|
digest:badDigest
|
||||||
unpaddedSize:(UInt32)cipherText.length + 1
|
unpaddedSize:(UInt32)plainTextData.length
|
||||||
error:&error];
|
error:&error]);
|
||||||
|
|
||||||
XCTAssertNil(decryptedData);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)testComputeSHA256Digest
|
- (void)testComputeSHA256Digest
|
||||||
|
@ -179,14 +168,14 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
XCTAssertEqual(39, plainTextData.length);
|
XCTAssertEqual(39, plainTextData.length);
|
||||||
|
|
||||||
OWSAES256Key *key = [OWSAES256Key new];
|
OWSAES256Key *key = [OWSAES256Key new];
|
||||||
NSData *_Nullable encryptedData = [Cryptography encryptAESGCMWithData:plainTextData key:key];
|
NSData *_Nullable encryptedData = [Cryptography encryptAESGCMWithProfileData:plainTextData key:key];
|
||||||
|
|
||||||
const NSUInteger ivLength = 12;
|
const NSUInteger ivLength = 12;
|
||||||
const NSUInteger tagLength = 16;
|
const NSUInteger tagLength = 16;
|
||||||
|
|
||||||
XCTAssertEqual(ivLength + plainTextData.length + tagLength, encryptedData.length);
|
XCTAssertEqual(ivLength + plainTextData.length + tagLength, encryptedData.length);
|
||||||
|
|
||||||
NSData *_Nullable decryptedData = [Cryptography decryptAESGCMWithData:encryptedData key:key];
|
NSData *_Nullable decryptedData = [Cryptography decryptAESGCMWithProfileData:encryptedData key:key];
|
||||||
XCTAssert(decryptedData != nil);
|
XCTAssert(decryptedData != nil);
|
||||||
XCTAssertEqual(39, decryptedData.length);
|
XCTAssertEqual(39, decryptedData.length);
|
||||||
XCTAssertEqualObjects(plainTextData, decryptedData);
|
XCTAssertEqualObjects(plainTextData, decryptedData);
|
||||||
|
@ -200,7 +189,7 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
XCTAssertEqual(39, plainTextData.length);
|
XCTAssertEqual(39, plainTextData.length);
|
||||||
|
|
||||||
OWSAES256Key *key = [OWSAES256Key new];
|
OWSAES256Key *key = [OWSAES256Key new];
|
||||||
NSData *_Nullable encryptedData = [Cryptography encryptAESGCMWithData:plainTextData key:key];
|
NSData *_Nullable encryptedData = [Cryptography encryptAESGCMWithProfileData:plainTextData key:key];
|
||||||
|
|
||||||
const NSUInteger ivLength = 12;
|
const NSUInteger ivLength = 12;
|
||||||
const NSUInteger tagLength = 16;
|
const NSUInteger tagLength = 16;
|
||||||
|
@ -218,6 +207,7 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
NSData *_Nullable decryptedData = [Cryptography decryptAESGCMWithInitializationVector:initializationVector
|
NSData *_Nullable decryptedData = [Cryptography decryptAESGCMWithInitializationVector:initializationVector
|
||||||
ciphertext:cipherText
|
ciphertext:cipherText
|
||||||
|
additionalAuthenticatedData:nil
|
||||||
authTag:authTag
|
authTag:authTag
|
||||||
key:key];
|
key:key];
|
||||||
|
|
||||||
|
@ -238,6 +228,7 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
decryptedData = [Cryptography decryptAESGCMWithInitializationVector:initializationVector
|
decryptedData = [Cryptography decryptAESGCMWithInitializationVector:initializationVector
|
||||||
ciphertext:cipherText
|
ciphertext:cipherText
|
||||||
|
additionalAuthenticatedData:nil
|
||||||
authTag:bogusAuthTag
|
authTag:bogusAuthTag
|
||||||
key:key];
|
key:key];
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue