FRAIdentityDatabaseTests.m revision 2beebed98b4fc7f018fb224a1e4a3ab6103a4c0b
09ed5ee011f3a6cd9d4742216ad3bb7dbf855641vboxsync/*
09ed5ee011f3a6cd9d4742216ad3bb7dbf855641vboxsync * The contents of this file are subject to the terms of the Common Development and
09ed5ee011f3a6cd9d4742216ad3bb7dbf855641vboxsync * Distribution License (the License). You may not use this file except in compliance with the
09ed5ee011f3a6cd9d4742216ad3bb7dbf855641vboxsync * License.
09ed5ee011f3a6cd9d4742216ad3bb7dbf855641vboxsync *
09ed5ee011f3a6cd9d4742216ad3bb7dbf855641vboxsync * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
772269936494ffaddd0750ba9e28e805ba81398cvboxsync * specific language governing permission and limitations under the License.
09ed5ee011f3a6cd9d4742216ad3bb7dbf855641vboxsync *
09ed5ee011f3a6cd9d4742216ad3bb7dbf855641vboxsync * When distributing Covered Software, include this CDDL Header Notice in each file and include
09ed5ee011f3a6cd9d4742216ad3bb7dbf855641vboxsync * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
09ed5ee011f3a6cd9d4742216ad3bb7dbf855641vboxsync * Header, with the fields enclosed by brackets [] replaced by your own identifying
09ed5ee011f3a6cd9d4742216ad3bb7dbf855641vboxsync * information: "Portions copyright [year] [name of copyright owner]".
09ed5ee011f3a6cd9d4742216ad3bb7dbf855641vboxsync *
09ed5ee011f3a6cd9d4742216ad3bb7dbf855641vboxsync * Copyright 2016 ForgeRock AS.
09ed5ee011f3a6cd9d4742216ad3bb7dbf855641vboxsync */
09ed5ee011f3a6cd9d4742216ad3bb7dbf855641vboxsync
09ed5ee011f3a6cd9d4742216ad3bb7dbf855641vboxsync#import <XCTest/XCTest.h>
09ed5ee011f3a6cd9d4742216ad3bb7dbf855641vboxsync#import "FRAIdentity.h"
772269936494ffaddd0750ba9e28e805ba81398cvboxsync#import "FRAIdentityDatabase.h"
09ed5ee011f3a6cd9d4742216ad3bb7dbf855641vboxsync#import "FRAOathMechanism.h"
09ed5ee011f3a6cd9d4742216ad3bb7dbf855641vboxsync
09ed5ee011f3a6cd9d4742216ad3bb7dbf855641vboxsync@interface FRAIdentityDatabaseTests : XCTestCase
003ce0fd7445c7e4cca0576f44f8b6a384cc9dcevboxsync
09ed5ee011f3a6cd9d4742216ad3bb7dbf855641vboxsync@end
09ed5ee011f3a6cd9d4742216ad3bb7dbf855641vboxsync
09ed5ee011f3a6cd9d4742216ad3bb7dbf855641vboxsync@implementation FRAIdentityDatabaseTests
09ed5ee011f3a6cd9d4742216ad3bb7dbf855641vboxsync
09ed5ee011f3a6cd9d4742216ad3bb7dbf855641vboxsyncFRAIdentityDatabase* database;
f8244da4b4e02d8d4ce0669eeb4093e31c301888vboxsyncFRAIdentity* identity;
f1acc1e99894e016bd1a6ee65c56b3fc064fa4ebvboxsyncFRAOathMechanism* mechanism;
f8244da4b4e02d8d4ce0669eeb4093e31c301888vboxsync
09ed5ee011f3a6cd9d4742216ad3bb7dbf855641vboxsync- (void)setUp {
f1acc1e99894e016bd1a6ee65c56b3fc064fa4ebvboxsync [super setUp];
f1acc1e99894e016bd1a6ee65c56b3fc064fa4ebvboxsync database = [[FRAIdentityDatabase alloc] init];
f8244da4b4e02d8d4ce0669eeb4093e31c301888vboxsync identity = [FRAIdentity identityWithAccountName:@"demo" issuer:@"Forgerock" image:[NSURL URLWithString:@"https://forgerock.org/ico/favicon-32x32.png"]];
f8244da4b4e02d8d4ce0669eeb4093e31c301888vboxsync mechanism = [[FRAOathMechanism alloc] initWithString:@"otpauth://hotp/Forgerock:demo?secret=IJQWIZ3FOIQUEYLE&issuer=Forgerock&counter=0"];
f8244da4b4e02d8d4ce0669eeb4093e31c301888vboxsync}
f8244da4b4e02d8d4ce0669eeb4093e31c301888vboxsync
f8244da4b4e02d8d4ce0669eeb4093e31c301888vboxsync- (void)tearDown {
09ed5ee011f3a6cd9d4742216ad3bb7dbf855641vboxsync [super tearDown];
594cc1e3c91f160f6868007cdc23b25cd24e5395vboxsync}
594cc1e3c91f160f6868007cdc23b25cd24e5395vboxsync
594cc1e3c91f160f6868007cdc23b25cd24e5395vboxsync- (void)testCanStoreIdentities {
594cc1e3c91f160f6868007cdc23b25cd24e5395vboxsync // Given
594cc1e3c91f160f6868007cdc23b25cd24e5395vboxsync XCTAssertEqualObjects([database identities], @[]);
594cc1e3c91f160f6868007cdc23b25cd24e5395vboxsync
376e7522b2055ec5f2834c8e52dfefbee1c5ea8bvboxsync // When
376e7522b2055ec5f2834c8e52dfefbee1c5ea8bvboxsync [database addIdentity:identity];
82cd7ed6366856247975c2c6475a854d91af297evboxsync
82cd7ed6366856247975c2c6475a854d91af297evboxsync // Then
82cd7ed6366856247975c2c6475a854d91af297evboxsync XCTAssertEqualObjects([database identities], @[identity]);
376e7522b2055ec5f2834c8e52dfefbee1c5ea8bvboxsync}
772269936494ffaddd0750ba9e28e805ba81398cvboxsync
- (void)testCanFindIdentityByIssuerAndLabel {
// Given
[database addIdentity:identity];
// When
FRAIdentity* result = [database identityWithIssuer:identity.issuer accountName:identity.accountName];
// Then
XCTAssertTrue(identity == result);
}
- (void)testCanFindMechanismByOwner {
// Given
XCTAssertEqualObjects([database mechanismsWithOwner:identity], @[]);
// When
[database addMechanism:mechanism];
// Then
NSArray* foundMechanisms = [database mechanismsWithOwner:identity];
XCTAssertEqualObjects(foundMechanisms, @[mechanism]);
}
- (void)testCanFindMechanismByRowId {
// Given
XCTAssertEqualObjects([database mechanismsWithOwner:identity], @[]);
[database addMechanism:mechanism];
XCTAssertEqual(mechanism.uid, 1);
// When
FRAOathMechanism* foundMechanism = [database mechanismWithId:1];
// Then
XCTAssertEqual(mechanism, foundMechanism);
}
- (void)testCanRemoveMechanism {
// Given
[database addMechanism:mechanism];
// When
[database removeMechanismWithId:mechanism.uid];
// Then
NSArray* foundMechanisms = [database mechanismsWithOwner:identity];
XCTAssertEqualObjects(foundMechanisms, @[]);
NSArray* foundIdentities = [database identities];
XCTAssertEqualObjects(foundIdentities, @[]);
}
- (void)testCanUpdateMechanism {
// Given
[database addMechanism:mechanism];
FRAOathMechanism* mechanismCopy = [[FRAOathMechanism alloc] initWithString:@"otpauth://hotp/Forgerock:demo?secret=IJQWIZ3FOIQUEYLE&issuer=Forgerock&counter=0"];
mechanismCopy.uid = mechanism.uid;
// When
[database updateMechanism:mechanismCopy];
FRAOathMechanism* foundMechanism = [database mechanismWithId:1];
// Then
XCTAssertNotEqual(mechanism, foundMechanism);
XCTAssertEqual(mechanismCopy, foundMechanism);
}
// TODO: Add tests for listener using OCMock
@end