FRANotificationHandlerTest.m revision 1d464fc27913cfdeb6e09c8ab5d06ada64f94d55
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings/*
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings * The contents of this file are subject to the terms of the Common Development and
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings * Distribution License (the License). You may not use this file except in compliance with the
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings * License.
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings *
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings * specific language governing permission and limitations under the License.
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings *
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings * When distributing Covered Software, include this CDDL Header Notice in each file and include
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings * Header, with the fields enclosed by brackets [] replaced by your own identifying
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings * information: "Portions copyright [year] [name of copyright owner]".
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings *
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings * Copyright 2016 ForgeRock AS.
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings */
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings#import <XCTest/XCTest.h>
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings#import "FRAIdentityDatabase.h"
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings#import "FRAIdentity.h"
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings#import "FRAPushMechanism.h"
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings#import "FRANotificationHandler.h"
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings#import "FRAIdentityModel.h"
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings@interface FRANotificationHandlerTest : XCTestCase
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings@end
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbingsstatic NSString *const TEST_USERNAME = @"Alice";
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings@implementation FRANotificationHandlerTest {
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings FRANotificationHandler* handler;
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings FRAIdentityDatabase* database;
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings FRAIdentityModel* identityModel;
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings FRAIdentity* testIdentity;
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings FRAPushMechanism* testMechanism;
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings NSInteger testMechanismUid;
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings}
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings- (void)setUp {
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings [super setUp];
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings database = [[FRAIdentityDatabase alloc] init];
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings identityModel = [[FRAIdentityModel alloc] initWithDatabase:database];
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings testIdentity = [FRAIdentity identityWithDatabase:database accountName:TEST_USERNAME issuer:@"ForgeRock" image:nil];
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings testMechanism = [[FRAPushMechanism alloc] initWithDatabase:database];
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings [identityModel addIdentity:testIdentity];
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings [testIdentity addMechanism:testMechanism];
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings [database insertIdentity:testIdentity];
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings [database insertMechanism:testMechanism];
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings testMechanismUid = testMechanism.uid;
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings handler = [[FRANotificationHandler alloc] initWithDatabase:database identityModel:identityModel];
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings}
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings- (void)tearDown {
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings [testIdentity removeMechanism:testMechanism];
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings [database deleteMechanism:testMechanism];
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings [database deleteIdentity:testIdentity];
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings [super tearDown];
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings}
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings- (void)testHandleRemoteNotification {
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings // Given
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings NSDictionary* data = @{
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings @"messageId": @"123",
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings @"mechanismUID": [NSString stringWithFormat: @"%ld", (long)testMechanismUid],
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings @"ttl": @"120",
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings @"challenge": @"pistolsAtDawn",
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings };
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings // When
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings [handler handleRemoteNotification:data];
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings // Then
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings FRAMechanism *mechanismResult = [identityModel mechanismWithId:testMechanismUid];
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings XCTAssertEqual([[mechanismResult notifications] count], 1, "Mechanism did not contain expected Notification");
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings}
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings
1d464fc27913cfdeb6e09c8ab5d06ada64f94d55Ken Stubbings@end