Skip to content

Commit

Permalink
Updated tests for KeychainUtility access group changes
Browse files Browse the repository at this point in the history
  • Loading branch information
mohssenfathi committed May 23, 2024
1 parent 6c5ad50 commit 1586955
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 82 deletions.
28 changes: 9 additions & 19 deletions examples/UberSDK/UberSDKTests/Mocks/Mocks.swift
Original file line number Diff line number Diff line change
Expand Up @@ -206,43 +206,33 @@ public class KeychainUtilityProtocolMock: KeychainUtilityProtocol {


public private(set) var saveCallCount = 0
public var saveHandler: ((Any, String) -> (Bool))?
public func save<V: Encodable>(_ value: V, for key: String) -> Bool {
public var saveHandler: ((Any, String, String?) -> (Bool))?
public func save<V: Encodable>(_ value: V, for key: String, accessGroup: String?) -> Bool {
saveCallCount += 1
if let saveHandler = saveHandler {
return saveHandler(value, key)
return saveHandler(value, key, accessGroup)
}
return false
}

public private(set) var getCallCount = 0
public var getHandler: ((String) -> (Any?))?
public func get<V: Decodable>(key: String) -> V? {
public var getHandler: ((String, String?) -> (Any?))?
public func get<V: Decodable>(key: String, accessGroup: String?) -> V? {
getCallCount += 1
if let getHandler = getHandler {
return getHandler(key) as? V
return getHandler(key, accessGroup) as? V
}
return nil
}

public private(set) var deleteCallCount = 0
public var deleteHandler: ((String) -> (Bool))?
public func delete(key: String) -> Bool {
public var deleteHandler: ((String, String?) -> (Bool))?
public func delete(key: String, accessGroup: String?) -> Bool {
deleteCallCount += 1
if let deleteHandler = deleteHandler {
return deleteHandler(key)
return deleteHandler(key, accessGroup)
}
return false
}

public private(set) var setAccessGroupCallCount = 0
public var setAccessGroupHandler: ((String) -> ())?
public func setAccessGroup(_ accessGroup: String) {
setAccessGroupCallCount += 1
if let setAccessGroupHandler = setAccessGroupHandler {
setAccessGroupHandler(accessGroup)
}

}
}

41 changes: 32 additions & 9 deletions examples/UberSDK/UberSDKTests/UberCore/KeychainUtilityTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,12 @@ final class KeychainUtilityTests: XCTestCase {
value: 5
)

keychainUtility.setAccessGroup(accessGroup)
let saved = keychainUtility.save(testObject, for: "test_object")
let saved = keychainUtility.save(
testObject,
for: "test_object",
accessGroup: accessGroup
)

XCTAssertTrue(saved)
}

Expand All @@ -97,9 +101,16 @@ final class KeychainUtilityTests: XCTestCase {
value: 5
)

keychainUtility.setAccessGroup(accessGroup)
_ = keychainUtility.save(testObject, for: "test_object")
let retrievedObject: TestObject? = keychainUtility.get(key: "test_object")
_ = keychainUtility.save(
testObject,
for: "test_object",
accessGroup: accessGroup
)

let retrievedObject: TestObject? = keychainUtility.get(
key: "test_object",
accessGroup: accessGroup
)

XCTAssertEqual(testObject, retrievedObject)
}
Expand All @@ -110,12 +121,24 @@ final class KeychainUtilityTests: XCTestCase {
value: 5
)

keychainUtility.setAccessGroup(accessGroup)
_ = keychainUtility.save(testObject, for: "test_object")
let deleted = keychainUtility.delete(key: "test_object")
_ = keychainUtility.save(
testObject,
for: "test_object",
accessGroup: accessGroup
)

let deleted = keychainUtility.delete(
key: "test_object",
accessGroup: accessGroup
)

XCTAssertTrue(deleted)

let retrievedObject: TestObject? = keychainUtility.get(key: "test_object")
let retrievedObject: TestObject? = keychainUtility.get(
key: "test_object",
accessGroup: accessGroup
)

XCTAssertNil(retrievedObject)
}

Expand Down
59 changes: 5 additions & 54 deletions examples/UberSDK/UberSDKTests/UberCore/TokenManagerTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ final class TokenManagerTests: XCTestCase {

func test_saveToken_triggersKeychainUtilitySave() {

keychainUtility.saveHandler = { _, identifier -> Bool in
keychainUtility.saveHandler = { _, identifier, _ -> Bool in
XCTAssertEqual(identifier, "test_token_identifier")
return true
}
Expand Down Expand Up @@ -66,7 +66,7 @@ final class TokenManagerTests: XCTestCase {
tokenString: "test_token_string"
)

keychainUtility.getHandler = { identifier -> AccessToken? in
keychainUtility.getHandler = { identifier, _ -> AccessToken? in
XCTAssertEqual(identifier, "test_token_identifier")
return accessToken
}
Expand All @@ -83,64 +83,15 @@ final class TokenManagerTests: XCTestCase {
XCTAssertEqual(keychainUtility.getCallCount, 1)
}

func test_saveToken_updatesKeychainUtilityAccessGroup() {

let accessToken = AccessToken(
tokenString: "test_token_string"
)

keychainUtility.setAccessGroupHandler = { accessGroup in
XCTAssertEqual(accessGroup, "test_access_group")
}

let tokenManager = TokenManager(
keychainUtility: keychainUtility
)

XCTAssertEqual(keychainUtility.setAccessGroupCallCount, 0)

let token = tokenManager.saveToken(
accessToken,
identifier: "test_token_identifier",
accessGroup: "test_access_group"
)

XCTAssertEqual(keychainUtility.setAccessGroupCallCount, 1)
}

func test_getToken_updatesKeychainUtilityAccessGroup() {

let accessToken = AccessToken(
tokenString: "test_token_string"
)

keychainUtility.setAccessGroupHandler = { accessGroup in
XCTAssertEqual(accessGroup, "test_access_group")
}

let tokenManager = TokenManager(
keychainUtility: keychainUtility
)

XCTAssertEqual(keychainUtility.setAccessGroupCallCount, 0)

let token = tokenManager.getToken(
identifier: "test_token_identifier",
accessGroup: "test_access_group"
)

XCTAssertEqual(keychainUtility.setAccessGroupCallCount, 1)
}

func test_getToken() {

var savedToken: AccessToken?
keychainUtility.saveHandler = { value, _ in
keychainUtility.saveHandler = { value, _, _ in
savedToken = value as? AccessToken
return true
}

keychainUtility.getHandler = { key in
keychainUtility.getHandler = { key, _ in
XCTAssertEqual(key, TokenManager.defaultAccessTokenIdentifier)
return savedToken
}
Expand All @@ -157,7 +108,7 @@ final class TokenManagerTests: XCTestCase {

func test_deleteToken_triggersKeychainUtilityDelete() {

keychainUtility.deleteHandler = { identifier -> Bool in
keychainUtility.deleteHandler = { identifier, _ -> Bool in
XCTAssertEqual(identifier, "test_token_identifier")
return true
}
Expand Down

0 comments on commit 1586955

Please sign in to comment.