mirror of
https://github.com/firebase/firebase-ios-sdk
synced 2026-11-09 22:36:01 +05:45
152 lines
5.8 KiB
Swift
152 lines
5.8 KiB
Swift
// 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 FirebaseCore
|
|
@testable import FirebaseFunctions
|
|
|
|
import FirebaseAppCheckInterop
|
|
import FirebaseAuthInterop
|
|
import FirebaseMessagingInterop
|
|
import SharedTestUtilities
|
|
|
|
import XCTest
|
|
|
|
class ContextProviderTests: XCTestCase {
|
|
let appCheckFake = FIRAppCheckFake()
|
|
let appCheckTokenError = FIRAppCheckTokenResultFake(token: "dummy token",
|
|
error: NSError(
|
|
domain: "testAppCheckError",
|
|
code: -1,
|
|
userInfo: nil
|
|
))
|
|
let appCheckTokenSuccess = FIRAppCheckTokenResultFake(token: "valid_token", error: nil)
|
|
let messagingFake = FIRMessagingInteropFake()
|
|
|
|
func testContextWithAuth() {
|
|
let auth = FIRAuthInteropFake(token: "token", userID: "userID", error: nil)
|
|
let provider = FunctionsContextProvider(auth: auth, messaging: messagingFake, appCheck: nil)
|
|
let expectation = expectation(description: "Context should have auth keys.")
|
|
provider.getContext { context, error in
|
|
XCTAssertNotNil(context)
|
|
XCTAssertEqual(context.authToken, "token")
|
|
XCTAssertEqual(context.fcmToken, self.messagingFake.fcmToken)
|
|
XCTAssertNil(error)
|
|
expectation.fulfill()
|
|
}
|
|
waitForExpectations(timeout: 0.1)
|
|
}
|
|
|
|
func testContextWithAuthError() {
|
|
let authError = NSError(domain: "com.functions.tests", code: 4, userInfo: nil)
|
|
let auth = FIRAuthInteropFake(token: nil, userID: "userID", error: authError)
|
|
let provider = FunctionsContextProvider(auth: auth, messaging: messagingFake, appCheck: nil)
|
|
let expectation = expectation(description: "Completion handler should fail with Auth error.")
|
|
provider.getContext { context, error in
|
|
XCTAssertNotNil(context)
|
|
XCTAssertNil(context.authToken)
|
|
XCTAssertEqual(error as NSError?, authError)
|
|
expectation.fulfill()
|
|
}
|
|
waitForExpectations(timeout: 0.1)
|
|
}
|
|
|
|
func testContextWithoutAuth() {
|
|
let provider = FunctionsContextProvider(auth: nil, messaging: nil, appCheck: nil)
|
|
let expectation = expectation(description: "Completion handler should succeed without Auth.")
|
|
provider.getContext { context, error in
|
|
XCTAssertNotNil(context)
|
|
XCTAssertNil(error)
|
|
XCTAssertNil(context.authToken)
|
|
XCTAssertNil(context.fcmToken)
|
|
expectation.fulfill()
|
|
}
|
|
waitForExpectations(timeout: 0.1)
|
|
}
|
|
|
|
func testContextWithAppCheckOnlySuccess() {
|
|
appCheckFake.tokenResult = appCheckTokenSuccess
|
|
let provider = FunctionsContextProvider(auth: nil, messaging: nil, appCheck: appCheckFake)
|
|
let expectation = expectation(description: "Verify app check.")
|
|
provider.getContext { context, error in
|
|
XCTAssertNotNil(context)
|
|
XCTAssertNil(error)
|
|
XCTAssertNil(context.authToken)
|
|
XCTAssertNil(context.fcmToken)
|
|
XCTAssertEqual(context.appCheckToken, self.appCheckTokenSuccess.token)
|
|
expectation.fulfill()
|
|
}
|
|
waitForExpectations(timeout: 0.1)
|
|
}
|
|
|
|
func testContextWithAppCheckOnlyError() {
|
|
appCheckFake.tokenResult = appCheckTokenError
|
|
let provider = FunctionsContextProvider(auth: nil, messaging: nil, appCheck: appCheckFake)
|
|
let expectation = expectation(description: "Verify bad app check token")
|
|
provider.getContext { context, error in
|
|
XCTAssertNotNil(context)
|
|
XCTAssertNil(error)
|
|
XCTAssertNil(context.authToken)
|
|
XCTAssertNil(context.fcmToken)
|
|
// Don't expect any token in the case of App Check error.
|
|
XCTAssertNil(context.appCheckToken)
|
|
expectation.fulfill()
|
|
}
|
|
waitForExpectations(timeout: 0.1)
|
|
}
|
|
|
|
func testAllContextsAvailableSuccess() {
|
|
appCheckFake.tokenResult = appCheckTokenSuccess
|
|
let auth = FIRAuthInteropFake(token: "token", userID: "userID", error: nil)
|
|
let provider = FunctionsContextProvider(
|
|
auth: auth,
|
|
messaging: messagingFake,
|
|
appCheck: appCheckFake
|
|
)
|
|
let expectation = expectation(description: "All contexts available")
|
|
provider.getContext { context, error in
|
|
XCTAssertNotNil(context)
|
|
XCTAssertNil(error)
|
|
XCTAssertEqual(context.authToken, "token")
|
|
XCTAssertEqual(context.fcmToken, self.messagingFake.fcmToken)
|
|
XCTAssertEqual(context.appCheckToken, self.appCheckTokenSuccess.token)
|
|
expectation.fulfill()
|
|
}
|
|
waitForExpectations(timeout: 0.1)
|
|
}
|
|
|
|
func testAllContextsAuthAndAppCheckError() {
|
|
appCheckFake.tokenResult = appCheckTokenError
|
|
let authError = NSError(domain: "com.functions.tests", code: 4, userInfo: nil)
|
|
let auth = FIRAuthInteropFake(token: nil, userID: "userID", error: authError)
|
|
let provider = FunctionsContextProvider(
|
|
auth: auth,
|
|
messaging: messagingFake,
|
|
appCheck: appCheckFake
|
|
)
|
|
let expectation = expectation(description: "All contexts with errors")
|
|
provider.getContext { context, error in
|
|
XCTAssertNotNil(context)
|
|
XCTAssertEqual(error as NSError?, authError)
|
|
XCTAssertNil(context.authToken)
|
|
XCTAssertEqual(context.fcmToken, self.messagingFake.fcmToken)
|
|
// Don't expect any token in the case of App Check error.
|
|
XCTAssertNil(context.appCheckToken)
|
|
expectation.fulfill()
|
|
}
|
|
waitForExpectations(timeout: 0.1)
|
|
}
|
|
}
|