106 lines
2.6 KiB
Swift
106 lines
2.6 KiB
Swift
//
|
|
// KeychainStorage+InitTests.swift
|
|
// KeychainStorageTests
|
|
//
|
|
// Created by Javier Cicchelli on 11/12/2022.
|
|
// Copyright © 2022 Röck+Cöde. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
import KeychainStorage
|
|
import XCTest
|
|
|
|
final class KeychainStorageInitTests: XCTestCase {
|
|
|
|
// MARK: Properties
|
|
|
|
private var value: TestModel?
|
|
|
|
// MARK: Test cases
|
|
|
|
func testValue_whenNoDefaultValue_andEmptyStorage() throws {
|
|
// GIVEN
|
|
let keychainStorage = TestKeychainStorage_withNoDefaultValue_andEmptyStorage()
|
|
|
|
// WHEN
|
|
value = keychainStorage.keychainValue
|
|
|
|
// THEN
|
|
XCTAssertNil(value)
|
|
}
|
|
|
|
func testValue_whenDefaultValue_andEmptyStorage() throws {
|
|
// GIVEN
|
|
let keychainStorage = TestKeychainStorage_withDefaultValue_andEmptyStorage()
|
|
|
|
// WHEN
|
|
value = keychainStorage.keychainValue
|
|
|
|
// THEN
|
|
XCTAssertNotNil(value)
|
|
}
|
|
|
|
func testValue_whenNoDefaultValue_andValueInStorage() throws {
|
|
// GIVEN
|
|
let keychainStorage = TestKeychainStorage_withNoDefaultValue_andValueInStorage()
|
|
|
|
// WHEN
|
|
value = keychainStorage.keychainValue
|
|
|
|
// THEN
|
|
XCTAssertNotNil(value)
|
|
}
|
|
|
|
func testValue_whenNoDefaultValue_andNoValueInStorage() throws {
|
|
// GIVEN
|
|
let keychainStorage = TestKeychainStorage_withNoDefaultValue_andNoValueInStorage()
|
|
|
|
// WHEN
|
|
value = keychainStorage.keychainValue
|
|
|
|
// THEN
|
|
XCTAssertNil(value)
|
|
}
|
|
|
|
}
|
|
|
|
// MARK: - Test classes
|
|
|
|
private final class TestKeychainStorage_withNoDefaultValue_andEmptyStorage {
|
|
@KeychainStorage(
|
|
key: .Keys.someKey,
|
|
keychain: KeychainStorageMock()
|
|
)
|
|
var keychainValue: TestModel?
|
|
}
|
|
|
|
|
|
private final class TestKeychainStorage_withDefaultValue_andEmptyStorage {
|
|
@KeychainStorage(
|
|
key: .Keys.someKey,
|
|
defaultValue: TestModel(),
|
|
keychain: KeychainStorageMock()
|
|
)
|
|
var keychainValue: TestModel?
|
|
}
|
|
|
|
private final class TestKeychainStorage_withNoDefaultValue_andValueInStorage {
|
|
@KeychainStorage(
|
|
key: .Keys.someKey,
|
|
keychain: KeychainStorageMock(storage: [
|
|
.Keys.someKey: try! JSONEncoder().encode(TestModel())
|
|
])
|
|
)
|
|
var keychainValue: TestModel?
|
|
}
|
|
|
|
private final class TestKeychainStorage_withNoDefaultValue_andNoValueInStorage {
|
|
@KeychainStorage(
|
|
key: .Keys.someKey,
|
|
keychain: KeychainStorageMock(storage: [
|
|
.Keys.someOtherKey: try! JSONEncoder().encode(TestModel())
|
|
])
|
|
)
|
|
var keychainValue: TestModel?
|
|
}
|