diff --git a/Sources/SwiftfulFirebaseAuth/Core/AuthManager.swift b/Sources/SwiftfulFirebaseAuth/Core/AuthManager.swift index b06366b..ee43177 100644 --- a/Sources/SwiftfulFirebaseAuth/Core/AuthManager.swift +++ b/Sources/SwiftfulFirebaseAuth/Core/AuthManager.swift @@ -19,15 +19,19 @@ public struct AuthInfo { } } +public enum MockAuthConfiguration { + case signInAndOut, signedIn, signedOut +} + public enum Configuration { - case mock, firebase + case mock(_ configuration: MockAuthConfiguration), firebase var provider: AuthProvider { switch self { case .firebase: return FirebaseAuthProvider() - case .mock: - return MockAuthProvider() + case .mock(let configuration): + return MockAuthProvider(configuration: configuration) } } } diff --git a/Sources/SwiftfulFirebaseAuth/Core/AuthManagerEnvironmentKey.swift b/Sources/SwiftfulFirebaseAuth/Core/AuthManagerEnvironmentKey.swift index 5e068dd..c5929f0 100644 --- a/Sources/SwiftfulFirebaseAuth/Core/AuthManagerEnvironmentKey.swift +++ b/Sources/SwiftfulFirebaseAuth/Core/AuthManagerEnvironmentKey.swift @@ -10,7 +10,7 @@ import SwiftUI public struct AuthManagerEnvironmentKey: EnvironmentKey { @MainActor - public static let defaultValue: AuthManager = AuthManager(configuration: .mock) + public static let defaultValue: AuthManager = AuthManager(configuration: .mock(.signInAndOut)) } public extension EnvironmentValues { diff --git a/Sources/SwiftfulFirebaseAuth/Providers/MockAuthProvider.swift b/Sources/SwiftfulFirebaseAuth/Providers/MockAuthProvider.swift index 73f19fa..e855f7b 100644 --- a/Sources/SwiftfulFirebaseAuth/Providers/MockAuthProvider.swift +++ b/Sources/SwiftfulFirebaseAuth/Providers/MockAuthProvider.swift @@ -28,8 +28,15 @@ final class MockAuthProvider: AuthProvider { } } - init() { - self.authenticatedUser = UserDefaults.userIsSignedIn ? MockAuthProvider.mockUser : nil + init(configuration: MockAuthConfiguration) { + switch configuration { + case .signInAndOut: + self.authenticatedUser = UserDefaults.userIsSignedIn ? MockAuthProvider.mockUser : nil + case .signedIn: + self.authenticatedUser = MockAuthProvider.mockUser + case .signedOut: + self.authenticatedUser = nil + } } private var continuation: AsyncStream.Continuation? = nil