| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746 |
- /*
- * Copyright 2022 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- import Foundation
- import XCTest
- import FirebaseAuth
- import FirebaseCore
- #if !os(macOS)
- import UIKit
- #endif
- /// This file tests public methods and enums. Each function maps to a public header file.
- @available(iOS 13, tvOS 13, macOS 10.15, macCatalyst 13, watchOS 7, *)
- class AuthAPI_hOnlyTests: XCTestCase {
- // Each function corresponds with a public header.
- func FIRActionCodeSettings_h() {
- let codeSettings = FirebaseAuth.ActionCodeSettings()
- // Currently kept for backwards compatibility?
- codeSettings.setIOSBundleID("abc")
- codeSettings.iOSBundleID = "abc"
- codeSettings.setAndroidPackageName("name", installIfNotAvailable: true, minimumVersion: "10.0")
- let _: Bool = codeSettings.handleCodeInApp
- let _: Bool = codeSettings.androidInstallIfNotAvailable
- if let _: URL = codeSettings.url,
- let _: String = codeSettings.iOSBundleID,
- let _: String = codeSettings.androidPackageName,
- let _: String = codeSettings.androidMinimumVersion,
- let _: String = codeSettings.dynamicLinkDomain {}
- }
- @available(iOS 13, tvOS 13, macOS 10.15, macCatalyst 13, watchOS 7, *)
- func FIRAuthAdditionalUserInfo_h(credential: AuthCredential) async throws {
- let auth = FirebaseAuth.Auth.auth()
- let user = auth.currentUser!
- let authDataResult = try await user.reauthenticate(with: credential)
- let additionalUserInfo = authDataResult.additionalUserInfo!
- let _: String = additionalUserInfo.providerID
- let _: Bool = additionalUserInfo.isNewUser
- if let _: [String: Any] = additionalUserInfo.profile,
- let _: String = additionalUserInfo.username {}
- }
- @available(iOS 13, tvOS 13, macOS 10.15, macCatalyst 13, watchOS 7, *)
- func ActionCodeOperationTests() async throws {
- let auth = FirebaseAuth.Auth.auth()
- let info = try await auth.checkActionCode("code")
- let _: ActionCodeOperation = info.operation
- let _: String = info.email
- if let _: String = info.previousEmail {}
- }
- func ActionCodeURL() {
- if let url = FirebaseAuth.ActionCodeURL(link: "string") {
- let _: ActionCodeOperation = url.operation
- if let _: String = url.apiKey,
- let _: String = url.code,
- let _: URL = url.continueURL,
- let _: String = url.languageCode {}
- }
- }
- func authProperties(auth: Auth) {
- let _: Bool = auth.shareAuthStateAcrossDevices
- if let _: FirebaseApp = auth.app,
- let _: User = auth.currentUser,
- let _: String = auth.languageCode,
- let _: AuthSettings = auth.settings,
- let _: String = auth.userAccessGroup,
- let _: String = auth.tenantID,
- let _: String = auth.customAuthDomain
- {}
- #if os(iOS)
- if let _: Data = auth.apnsToken {}
- // TODO: This API was defined in the ObjC SDK, but seems to be a no-op.
- // auth.apnsToken = Data()
- #endif
- }
- func FIRAuth_h(credential: AuthCredential) throws {
- let auth = FirebaseAuth.Auth.auth()
- let user = auth.currentUser!
- auth.updateCurrentUser(user) { _ in
- }
- auth.signIn(withEmail: "abc@abc.com", password: "password") { result, error in
- }
- auth.signIn(withEmail: "abc@abc.com", link: "link") { result, error in
- }
- #if os(iOS)
- let provider = OAuthProvider(providerID: "abc")
- provider.getCredentialWith(nil) { credential, error in
- auth.signIn(with: credential!) { result, error in
- }
- }
- auth.signIn(with: OAuthProvider(providerID: "abc"), uiDelegate: nil) { result, error in
- }
- #endif
- auth.signInAnonymously { result, error in
- }
- auth.signIn(withCustomToken: "abc") { result, error in
- }
- auth.createUser(withEmail: "email", password: "password") { result, error in
- }
- auth.confirmPasswordReset(withCode: "code", newPassword: "password") { error in
- }
- auth.checkActionCode("abc") { codeInfo, error in
- }
- auth.verifyPasswordResetCode("code") { email, error in
- }
- auth.applyActionCode("code") { error in
- }
- auth.sendPasswordReset(withEmail: "email") { error in
- }
- let actionCodeSettings = ActionCodeSettings()
- auth.sendPasswordReset(withEmail: "email", actionCodeSettings: actionCodeSettings) { error in
- }
- auth.sendSignInLink(toEmail: "email", actionCodeSettings: actionCodeSettings) { error in
- }
- try auth.signOut()
- _ = auth.isSignIn(withEmailLink: "link")
- let handle = auth.addStateDidChangeListener { auth, user in
- }
- auth.removeStateDidChangeListener(handle)
- _ = auth.addIDTokenDidChangeListener { auth, user in
- }
- auth.removeIDTokenDidChangeListener(handle)
- auth.useAppLanguage()
- auth.useEmulator(withHost: "myHost", port: 123)
- #if os(iOS)
- _ = auth.canHandle(URL(fileURLWithPath: "/my/path"))
- auth.setAPNSToken(Data(), type: AuthAPNSTokenType.prod)
- _ = auth.canHandleNotification([:])
- #if !targetEnvironment(macCatalyst)
- auth.initializeRecaptchaConfig { _ in
- }
- #endif
- #endif
- auth.revokeToken(withAuthorizationCode: "A")
- try auth.useUserAccessGroup("abc")
- let nilUser = try auth.getStoredUser(forAccessGroup: "def")
- // If nilUser is not optional, this will raise a compiler error.
- // This condition does not need to execute, and may not if prior
- // functions throw.
- if let _ = nilUser {
- XCTAssert(true)
- }
- }
- @available(iOS 13, tvOS 13, macOS 10.15, macCatalyst 13, watchOS 7, *)
- func FIRAuth_hAsync(credential: AuthCredential) async throws {
- let auth = FirebaseAuth.Auth.auth()
- let user = auth.currentUser!
- try await auth.updateCurrentUser(user)
- _ = try await auth.signIn(withEmail: "abc@abc.com", password: "password")
- _ = try await auth.signIn(withEmail: "abc@abc.com", link: "link")
- #if os(iOS)
- let provider = OAuthProvider(providerID: "abc")
- let credential = try await provider.credential(with: nil)
- _ = try await auth.signIn(with: credential)
- _ = try await auth.signIn(with: OAuthProvider(providerID: "abc"), uiDelegate: nil)
- #if !targetEnvironment(macCatalyst)
- try await auth.initializeRecaptchaConfig()
- #endif
- #endif
- _ = try await auth.signInAnonymously()
- _ = try await auth.signIn(withCustomToken: "abc")
- _ = try await auth.createUser(withEmail: "email", password: "password")
- _ = try await auth.confirmPasswordReset(withCode: "code", newPassword: "password")
- _ = try await auth.checkActionCode("abc")
- _ = try await auth.verifyPasswordResetCode("code")
- _ = try await auth.applyActionCode("code")
- _ = try await auth.sendPasswordReset(withEmail: "email")
- let actionCodeSettings = ActionCodeSettings()
- _ = try await auth.sendPasswordReset(
- withEmail: "email",
- actionCodeSettings: actionCodeSettings
- )
- _ = try await auth.sendSignInLink(toEmail: "email", actionCodeSettings: actionCodeSettings)
- try await auth.revokeToken(withAuthorizationCode: "string")
- }
- #if !os(macOS)
- func FIRAuthAPNSTokenType_h() {
- _ = AuthAPNSTokenType.unknown
- _ = AuthAPNSTokenType.sandbox
- _ = AuthAPNSTokenType.prod
- }
- #endif
- func authCredential(credential: AuthCredential) {
- let _: String = credential.provider
- }
- func authDataResult(result: AuthDataResult) {
- let _: User = result.user
- if let _: AdditionalUserInfo = result.additionalUserInfo,
- let _: AuthCredential = result.credential {}
- }
- func FIRAuthErrors_h() {
- _ = AuthErrorCode.invalidCustomToken
- _ = AuthErrorCode.customTokenMismatch
- _ = AuthErrorCode.invalidCredential
- _ = AuthErrorCode.userDisabled
- _ = AuthErrorCode.operationNotAllowed
- _ = AuthErrorCode.emailAlreadyInUse
- _ = AuthErrorCode.invalidEmail
- _ = AuthErrorCode.wrongPassword
- _ = AuthErrorCode.tooManyRequests
- _ = AuthErrorCode.userNotFound
- _ = AuthErrorCode.accountExistsWithDifferentCredential
- _ = AuthErrorCode.requiresRecentLogin
- _ = AuthErrorCode.providerAlreadyLinked
- _ = AuthErrorCode.noSuchProvider
- _ = AuthErrorCode.invalidUserToken
- _ = AuthErrorCode.networkError
- _ = AuthErrorCode.userTokenExpired
- _ = AuthErrorCode.invalidAPIKey
- _ = AuthErrorCode.userMismatch
- _ = AuthErrorCode.credentialAlreadyInUse
- _ = AuthErrorCode.weakPassword
- _ = AuthErrorCode.appNotAuthorized
- _ = AuthErrorCode.expiredActionCode
- _ = AuthErrorCode.invalidActionCode
- _ = AuthErrorCode.invalidMessagePayload
- _ = AuthErrorCode.invalidSender
- _ = AuthErrorCode.invalidRecipientEmail
- _ = AuthErrorCode.missingEmail
- _ = AuthErrorCode.missingIosBundleID
- _ = AuthErrorCode.missingAndroidPackageName
- _ = AuthErrorCode.unauthorizedDomain
- _ = AuthErrorCode.invalidContinueURI
- _ = AuthErrorCode.missingContinueURI
- _ = AuthErrorCode.missingPhoneNumber
- _ = AuthErrorCode.invalidPhoneNumber
- _ = AuthErrorCode.missingVerificationCode
- _ = AuthErrorCode.invalidVerificationCode
- _ = AuthErrorCode.missingVerificationID
- _ = AuthErrorCode.invalidVerificationID
- _ = AuthErrorCode.missingAppCredential
- _ = AuthErrorCode.invalidAppCredential
- _ = AuthErrorCode.sessionExpired
- _ = AuthErrorCode.quotaExceeded
- _ = AuthErrorCode.missingAppToken
- _ = AuthErrorCode.notificationNotForwarded
- _ = AuthErrorCode.appNotVerified
- _ = AuthErrorCode.captchaCheckFailed
- _ = AuthErrorCode.webContextAlreadyPresented
- _ = AuthErrorCode.webContextCancelled
- _ = AuthErrorCode.appVerificationUserInteractionFailure
- _ = AuthErrorCode.invalidClientID
- _ = AuthErrorCode.webNetworkRequestFailed
- _ = AuthErrorCode.webInternalError
- _ = AuthErrorCode.webSignInUserInteractionFailure
- _ = AuthErrorCode.localPlayerNotAuthenticated
- _ = AuthErrorCode.nullUser
- _ = AuthErrorCode.dynamicLinkNotActivated
- _ = AuthErrorCode.invalidProviderID
- _ = AuthErrorCode.tenantIDMismatch
- _ = AuthErrorCode.unsupportedTenantOperation
- _ = AuthErrorCode.invalidDynamicLinkDomain
- _ = AuthErrorCode.rejectedCredential
- _ = AuthErrorCode.gameKitNotLinked
- _ = AuthErrorCode.secondFactorRequired
- _ = AuthErrorCode.missingMultiFactorSession
- _ = AuthErrorCode.missingMultiFactorInfo
- _ = AuthErrorCode.invalidMultiFactorSession
- _ = AuthErrorCode.multiFactorInfoNotFound
- _ = AuthErrorCode.adminRestrictedOperation
- _ = AuthErrorCode.unverifiedEmail
- _ = AuthErrorCode.secondFactorAlreadyEnrolled
- _ = AuthErrorCode.maximumSecondFactorCountExceeded
- _ = AuthErrorCode.unsupportedFirstFactor
- _ = AuthErrorCode.emailChangeNeedsVerification
- _ = AuthErrorCode.missingOrInvalidNonce
- _ = AuthErrorCode.missingClientIdentifier
- _ = AuthErrorCode.recaptchaNotEnabled
- _ = AuthErrorCode.missingRecaptchaToken
- _ = AuthErrorCode.invalidRecaptchaToken
- _ = AuthErrorCode.invalidRecaptchaAction
- _ = AuthErrorCode.missingClientType
- _ = AuthErrorCode.missingRecaptchaVersion
- _ = AuthErrorCode.invalidRecaptchaVersion
- _ = AuthErrorCode.invalidReqType
- _ = AuthErrorCode.keychainError
- _ = AuthErrorCode.internalError
- _ = AuthErrorCode.malformedJWT
- }
- func authSettings(settings: AuthSettings) {
- let _: Bool = settings.isAppVerificationDisabledForTesting
- settings.isAppVerificationDisabledForTesting = true
- }
- func authTokenResult(result: AuthTokenResult) {
- let _: String = result.token
- let _: Date = result.expirationDate
- let _: Date = result.authDate
- let _: Date = result.issuedAtDate
- let _: String = result.signInProvider
- let _: String = result.signInSecondFactor
- let _: [String: Any] = result.claims
- }
- #if !os(macOS) && !os(watchOS)
- func FIRAuthUIDelegate_h() {
- class AuthUIImpl: NSObject, AuthUIDelegate {
- func present(_ viewControllerToPresent: UIViewController, animated flag: Bool,
- completion: (() -> Void)? = nil) {}
- func dismiss(animated flag: Bool, completion: (() -> Void)? = nil) {}
- }
- let obj = AuthUIImpl()
- obj.present(UIViewController(), animated: true) {}
- obj.dismiss(animated: false) {}
- }
- #endif
- func FIREmailAuthProvider_h() {
- _ = EmailAuthProvider.credential(withEmail: "e@email.com", password: "password")
- _ = EmailAuthProvider.credential(withEmail: "e@email.com", link: "link")
- }
- func FIRFacebookAuthProvider_h() {
- _ = FacebookAuthProvider.credential(withAccessToken: "token")
- }
- #if os(iOS)
- @available(iOS 13, tvOS 13, macOS 10.15, macCatalyst 13, watchOS 7, *)
- func FIRFedederatedAuthProvider_hAsync() async throws {
- class FederatedAuthImplementation: NSObject, FederatedAuthProvider {
- // TODO: Document this API breakage - needing to add this function for classes implementing
- // FederatedAuthProvider.
- func credential(with UIDelegate: AuthUIDelegate?) async throws -> AuthCredential {
- return FacebookAuthProvider.credential(withAccessToken: "token")
- }
- }
- let obj = FederatedAuthImplementation()
- try await _ = obj.credential(with: nil)
- }
- func FIRFederatedAuthProvider_h() {
- class FederatedAuthImplementation: NSObject, FederatedAuthProvider {
- func credential(with UIDelegate: AuthUIDelegate?) async throws -> AuthCredential {
- return FacebookAuthProvider.credential(withAccessToken: "token")
- }
- }
- @available(iOS 13, tvOS 13, macOS 10.15, macCatalyst 13, watchOS 7, *)
- func FIRFedederatedAuthProvider_hAsync() async throws {
- let obj = FederatedAuthImplementation()
- try await _ = obj.credential(with: nil)
- }
- }
- #endif
- #if !os(watchOS)
- func FIRGameCenterAuthProvider_h() {
- GameCenterAuthProvider.getCredential { _, _ in
- }
- }
- @available(iOS 13, tvOS 13, macOS 10.15, macCatalyst 13, watchOS 7, *)
- func FIRGameCenterAuthProvider_hAsync() async throws {
- _ = try await GameCenterAuthProvider.getCredential()
- }
- #endif
- func FIRGitHubAuthProvider_h() {
- _ = GitHubAuthProvider.credential(withToken: "token")
- }
- func FIRGoogleAuthProvider_h() {
- _ = GoogleAuthProvider.credential(withIDToken: "token", accessToken: "aToken")
- }
- #if os(iOS)
- func FIRMultiFactor_h(obj: MultiFactor) {
- let provider = PhoneAuthProvider.provider(auth: FirebaseAuth.Auth.auth())
- let credential = provider.credential(withVerificationID: "id",
- verificationCode: "code")
- obj.getSessionWithCompletion { _, _ in
- }
- obj
- .enroll(with: PhoneMultiFactorGenerator.assertion(with: credential),
- displayName: "name") { _ in
- }
- let mfi = obj.enrolledFactors[0]
- obj.unenroll(with: mfi) { _ in
- }
- obj.unenroll(withFactorUID: "uid") { _ in
- }
- let _: [MultiFactorInfo] = obj.enrolledFactors
- }
- @available(iOS 13, tvOS 13, macOS 10.15, macCatalyst 13, watchOS 7, *)
- func FIRMultiFactor_hAsync(obj: MultiFactor) async throws {
- let provider = PhoneAuthProvider.provider(auth: FirebaseAuth.Auth.auth())
- let credential = provider.credential(withVerificationID: "id",
- verificationCode: "code")
- _ = try await obj.session()
- try await obj.enroll(
- with: PhoneMultiFactorGenerator.assertion(with: credential),
- displayName: "name"
- )
- let mfi = obj.enrolledFactors[0]
- try await obj.unenroll(with: mfi)
- try await obj.unenroll(withFactorUID: "uid")
- }
- func multiFactorAssertion(assertion: MultiFactorAssertion) {
- let _: String = assertion.factorID
- }
- func multiFactorInfo(mfi: MultiFactorInfo) {
- let _: String = mfi.uid
- let _: Date = mfi.enrollmentDate
- let _: String = mfi.factorID
- if let _: String = mfi.displayName {}
- }
- func FIRMultiFactorResolver_h(error: NSError) {
- let provider = PhoneAuthProvider.provider(auth: FirebaseAuth.Auth.auth())
- let credential = provider.credential(withVerificationID: "id",
- verificationCode: "code")
- if let obj = error
- // TODO: AuthErrorUserInfoMultiFactorResolverKey
- .userInfo[AuthErrors.userInfoMultiFactorResolverKey] as? MultiFactorResolver {
- obj.resolveSignIn(with: PhoneMultiFactorGenerator.assertion(with: credential)) { _, _ in
- }
- let _: MultiFactorSession = obj.session
- let _: [MultiFactorInfo] = obj.hints
- let _: Auth = obj.auth
- }
- }
- @available(iOS 13, tvOS 13, macOS 10.15, macCatalyst 13, watchOS 7, *)
- func FIRMultiFactorResolver_hAsync(error: NSError) async throws {
- let provider = PhoneAuthProvider.provider(auth: FirebaseAuth.Auth.auth())
- let credential = provider.credential(withVerificationID: "id",
- verificationCode: "code")
- if let obj = error
- .userInfo[AuthErrors.userInfoMultiFactorResolverKey] as? MultiFactorResolver {
- _ = try await obj.resolveSignIn(with: PhoneMultiFactorGenerator.assertion(with: credential))
- }
- }
- #endif
- func oauthCredential(credential: OAuthCredential) {
- if let _: String = credential.idToken,
- let _: String = credential.accessToken,
- let _: String = credential.secret {}
- }
- func FIROAuthProvider_h() {
- let _: (String, Auth) -> OAuthProvider = OAuthProvider.init(providerID:auth:)
- let _: (AuthProviderID, Auth) -> OAuthProvider = OAuthProvider.init(providerID:auth:)
- let _: (String) -> OAuthProvider = OAuthProvider.provider(providerID:)
- let _: (String, Auth) -> OAuthProvider = OAuthProvider.provider(providerID:auth:)
- let _: (AuthProviderID) -> OAuthProvider = OAuthProvider.provider(providerID:)
- let _: (AuthProviderID, Auth) -> OAuthProvider = OAuthProvider.provider(providerID:auth:)
- // `auth` defaults to `nil`
- let provider = OAuthProvider(providerID: "id")
- let _: String = provider.providerID
- #if os(iOS)
- let _: (String, String, String?) -> OAuthCredential =
- OAuthProvider.credential(withProviderID:idToken:accessToken:)
- let _: (AuthProviderID, String, String?) -> OAuthCredential =
- OAuthProvider.credential(providerID:idToken:accessToken:)
- // `accessToken` defaults to `nil`
- let _: OAuthCredential =
- OAuthProvider.credential(providerID: .apple, idToken: "")
- let _: (String, String) -> OAuthCredential =
- OAuthProvider.credential(withProviderID:accessToken:)
- let _: (AuthProviderID, String) -> OAuthCredential = OAuthProvider
- .credential(providerID:accessToken:)
- let _: (String, String, String, String) -> OAuthCredential =
- OAuthProvider.credential(withProviderID:idToken:rawNonce:accessToken:)
- let _: (AuthProviderID, String, String, String?) -> OAuthCredential =
- OAuthProvider.credential(providerID:idToken:rawNonce:accessToken:)
- // `accessToken` defaults to `nil`
- let _: OAuthCredential =
- OAuthProvider.credential(providerID: .apple, idToken: "", rawNonce: "")
- let _: (String, String, String) -> OAuthCredential =
- OAuthProvider.credential(withProviderID:idToken:rawNonce:)
- provider.getCredentialWith(provider as? AuthUIDelegate) { credential, error in
- }
- #endif
- let _: String = provider.providerID
- if let _: [String] = provider.scopes,
- let _: [String: String] = provider.customParameters {}
- }
- @available(iOS 13, tvOS 13, macOS 10.15, macCatalyst 13, watchOS 7, *)
- func FIROAuthProvider_h() async throws {
- let provider = OAuthProvider(providerID: "abc")
- #if os(iOS)
- provider.getCredentialWith(provider as? AuthUIDelegate) { credential, error in
- }
- _ = try await provider.credential(with: provider as? AuthUIDelegate)
- #endif
- }
- #if os(iOS)
- func FIRPhoneAuthProvider_h(mfi: PhoneMultiFactorInfo) {
- _ = PhoneAuthProvider.provider()
- let provider = PhoneAuthProvider.provider(auth: FirebaseAuth.Auth.auth())
- provider.verifyPhoneNumber("123", uiDelegate: nil) { _, _ in
- }
- provider.verifyPhoneNumber("123", uiDelegate: nil, multiFactorSession: nil) { _, _ in
- }
- provider.verifyPhoneNumber(
- with: mfi,
- uiDelegate: nil,
- multiFactorSession: nil
- ) { _, _ in
- }
- provider.verifyPhoneNumber("123", uiDelegate: nil, multiFactorSession: nil) { _, _ in
- }
- _ = provider.credential(withVerificationID: "id", verificationCode: "code")
- }
- @available(iOS 13, tvOS 13, macOS 10.15, macCatalyst 13, watchOS 7, *)
- func FIRPhoneAuthProvider_hAsync(mfi: PhoneMultiFactorInfo) async throws {
- _ = PhoneAuthProvider.provider()
- let provider = PhoneAuthProvider.provider(auth: FirebaseAuth.Auth.auth())
- _ = try await provider.verifyPhoneNumber("123", uiDelegate: nil)
- _ = try await provider.verifyPhoneNumber("123", uiDelegate: nil, multiFactorSession: nil)
- _ = try await provider.verifyPhoneNumber(with: mfi, uiDelegate: nil,
- multiFactorSession: nil)
- _ = try await provider.verifyPhoneNumber("123", uiDelegate: nil, multiFactorSession: nil)
- }
- func FIRPhoneMultiFactorGenerator_h() {
- let credential = PhoneAuthProvider.provider().credential(withVerificationID: "id",
- verificationCode: "code")
- _ = PhoneMultiFactorGenerator.assertion(with: credential)
- }
- func phoneMultiFactorInfo(mfi: PhoneMultiFactorInfo) {
- let _: String = mfi.phoneNumber
- }
- func FIRTOTPSecret_h(session: MultiFactorSession) async throws {
- let obj = try await TOTPMultiFactorGenerator.generateSecret(with: session)
- _ = obj.sharedSecretKey()
- _ = obj.generateQRCodeURL(withAccountName: "name", issuer: "issuer")
- obj.openInOTPApp(withQRCodeURL: "url")
- }
- func FIRTOTPMultiFactorGenerator_h(session: MultiFactorSession, secret: TOTPSecret) {
- TOTPMultiFactorGenerator.generateSecret(with: session) { _, _ in
- }
- _ = TOTPMultiFactorGenerator.assertionForEnrollment(with: secret,
- oneTimePassword: "code")
- _ = TOTPMultiFactorGenerator.assertionForSignIn(
- withEnrollmentID: "id", oneTimePassword: "code"
- )
- }
- @available(iOS 13, tvOS 13, macOS 10.15, macCatalyst 13, watchOS 7, *)
- func FIRTOTPMultiFactorGenerator_hAsync(session: MultiFactorSession) async throws {
- _ = try await TOTPMultiFactorGenerator.generateSecret(with: session)
- }
- #endif
- func FIRTwitterAuthProvider_h() {
- _ = TwitterAuthProvider.credential(withToken: "token", secret: "secret")
- }
- func FIRUser_h() {
- let auth = FirebaseAuth.Auth.auth()
- let user = auth.currentUser!
- let credential = GoogleAuthProvider.credential(withIDToken: "token", accessToken: "aToken")
- user.updatePassword(to: "password") { _ in
- }
- let changeRequest = user.createProfileChangeRequest()
- user.reload { _ in
- }
- user.reauthenticate(with: credential) { _, _ in
- }
- #if os(iOS)
- let phoneCredential = PhoneAuthProvider.provider().credential(withVerificationID: "id",
- verificationCode: "code")
- user.updatePhoneNumber(phoneCredential) { _ in
- }
- let provider = PhoneAuthProvider.provider(auth: FirebaseAuth.Auth.auth())
- user.reauthenticate(with: provider as! FederatedAuthProvider, uiDelegate: nil)
- user.link(with: provider as! FederatedAuthProvider, uiDelegate: nil) { _, _ in
- }
- #endif
- user.getIDTokenResult { _, _ in
- }
- user.getIDTokenResult(forcingRefresh: true) { _, _ in
- }
- user.getIDToken { _, _ in
- }
- user.getIDTokenForcingRefresh(true) { _, _ in
- }
- user.link(with: credential) { _, _ in
- }
- user.unlink(fromProvider: "abc") { _, _ in
- }
- user.sendEmailVerification { _ in
- }
- user.sendEmailVerification(with: ActionCodeSettings()) { _ in
- }
- user.delete { _ in
- }
- user.sendEmailVerification(beforeUpdatingEmail: "email") { _ in
- }
- user.sendEmailVerification(
- beforeUpdatingEmail: "email",
- actionCodeSettings: ActionCodeSettings()
- ) { _ in
- }
- changeRequest.commitChanges { _ in
- }
- let _: String = user.providerID
- let _: String = user.uid
- if let _: String = user.displayName,
- let _: URL = user.photoURL,
- let _: String = user.email,
- let _: String = user.phoneNumber {}
- }
- func userProperties(user: User) {
- let changeRequest = user.createProfileChangeRequest()
- let _: Bool = user.isAnonymous
- let _: Bool = user.isEmailVerified
- let _: [UserInfo] = user.providerData
- let _: UserMetadata = user.metadata
- #if os(iOS)
- let _: MultiFactor = user.multiFactor
- #endif
- if let _: String = user.refreshToken,
- let _: String = user.tenantID,
- let _: String = changeRequest.displayName,
- let _: URL = changeRequest.photoURL {}
- }
- @available(iOS 13, tvOS 13, macOS 10.15, macCatalyst 13, watchOS 7, *)
- func FIRUser_hAsync() async throws {
- let auth = FirebaseAuth.Auth.auth()
- let user = auth.currentUser!
- let credential = GoogleAuthProvider.credential(withIDToken: "token", accessToken: "aToken")
- try await user.updatePassword(to: "password")
- let changeRequest = user.createProfileChangeRequest()
- try await user.reload()
- try await user.reauthenticate(with: credential)
- #if os(iOS)
- let phoneCredential = PhoneAuthProvider.provider().credential(withVerificationID: "id",
- verificationCode: "code")
- try await user.updatePhoneNumber(phoneCredential)
- let provider = PhoneAuthProvider.provider(auth: FirebaseAuth.Auth.auth())
- try await user.reauthenticate(with: provider as! FederatedAuthProvider, uiDelegate: nil)
- try await user.link(with: provider as! FederatedAuthProvider, uiDelegate: nil)
- #endif
- _ = try await user.getIDTokenResult()
- _ = try await user.getIDTokenResult(forcingRefresh: true)
- _ = try await user.getIDToken()
- _ = try await user.link(with: credential)
- _ = try await user.unlink(fromProvider: "abc")
- try await user.sendEmailVerification()
- try await user.sendEmailVerification(with: ActionCodeSettings())
- try await user.delete()
- try await user.sendEmailVerification(beforeUpdatingEmail: "email")
- try await user.sendEmailVerification(
- beforeUpdatingEmail: "email",
- actionCodeSettings: ActionCodeSettings()
- )
- try await changeRequest.commitChanges()
- }
- func userInfoProperties(userInfo: UserInfo) {
- let _: String = userInfo.providerID
- let _: String = userInfo.uid
- if let _: String = userInfo.displayName,
- let _: URL = userInfo.photoURL,
- let _: String = userInfo.email,
- let _: String = userInfo.phoneNumber {}
- }
- func userMetadataProperties(metadata: UserMetadata) {
- if let _: Date = metadata.lastSignInDate,
- let _: Date = metadata.creationDate {}
- }
- func regression13429(id: AuthProviderID) -> Int {
- switch id {
- case .apple:
- return 1
- case .email:
- return 2
- case .facebook:
- return 3
- case .gameCenter:
- return 4
- case .gitHub:
- return 5
- case .google:
- return 6
- case .phone:
- return 7
- case .custom("myCustom"):
- return 8
- default:
- return 9
- }
- }
- func regression13430(error: NSError) -> Int {
- if let firebaseError = error as? AuthErrorCode, firebaseError == .networkError {
- return 1
- }
- if let firebaseError = error as? AuthErrorCode, firebaseError.code == .invalidPhoneNumber {
- switch firebaseError.localizedDescription {
- case "TOO_SHORT":
- return 1
- case "TOO_LONG":
- return 1
- default:
- return 1
- }
- }
- return 2
- }
- }
|