session-ios/SignalServiceKit/tests/Devices/OWSDeviceProvisionerTest.m
2018-09-10 17:30:18 -05:00

99 lines
3 KiB
Objective-C

//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//
#import "OWSDeviceProvisioner.h"
#import "OWSDeviceProvisioningCodeService.h"
#import "OWSDeviceProvisioningService.h"
#import "OWSFakeNetworkManager.h"
#import "SSKBaseTest.h"
#import "TSNetworkManager.h"
@interface OWSFakeDeviceProvisioningService : OWSDeviceProvisioningService
@end
@implementation OWSFakeDeviceProvisioningService
- (void)provisionWithMessageBody:(NSData *)messageBody
ephemeralDeviceId:(NSString *)deviceId
success:(void (^)())successCallback
failure:(void (^)(NSError *))failureCallback
{
NSLog(@"faking successful provisioning");
successCallback();
}
@end
@interface OWSFakeDeviceProvisioningCodeService : OWSDeviceProvisioningCodeService
@end
@implementation OWSFakeDeviceProvisioningCodeService
- (void)requestProvisioningCodeWithSuccess:(void (^)(NSString *))successCallback
failure:(void (^)(NSError *))failureCallback
{
NSLog(@"faking successful provisioning code fetching");
successCallback(@"fake-provisioning-code");
}
@end
@interface OWSDeviceProvisioner (Testing)
@property OWSDeviceProvisioningCodeService *provisioningCodeService;
@property OWSDeviceProvisioningService *provisioningService;
@end
@interface OWSDeviceProvisionerTest : SSKBaseTest
@end
@implementation OWSDeviceProvisionerTest
- (void)testProvisioning
{
XCTestExpectation *expectation = [self expectationWithDescription:@"Provisioning Success"];
NSData *nullKey = [[NSMutableData dataWithLength:32] copy];
NSData *myPublicKey = [nullKey copy];
NSData *myPrivateKey = [nullKey copy];
NSData *theirPublicKey = [nullKey copy];
NSData *profileKey = [nullKey copy];
NSString *accountIdentifier;
NSString *theirEphemeralDeviceId;
OWSFakeNetworkManager *networkManager = [OWSFakeNetworkManager new];
OWSDeviceProvisioner *provisioner = [[OWSDeviceProvisioner alloc]
initWithMyPublicKey:myPublicKey
myPrivateKey:myPrivateKey
theirPublicKey:theirPublicKey
theirEphemeralDeviceId:theirEphemeralDeviceId
accountIdentifier:accountIdentifier
profileKey:profileKey
readReceiptsEnabled:YES
provisioningCodeService:[[OWSFakeDeviceProvisioningCodeService alloc] initWithNetworkManager:networkManager]
provisioningService:[[OWSFakeDeviceProvisioningService alloc] initWithNetworkManager:networkManager]];
[provisioner provisionWithSuccess:^{
[expectation fulfill];
}
failure:^(NSError *_Nonnull error) {
XCTAssert(NO, @"Failed to provision with error: %@", error);
}];
[self waitForExpectationsWithTimeout:5.0
handler:^(NSError *error) {
if (error) {
NSLog(@"Timeout Error: %@", error);
}
}];
}
@end