mirror of
https://github.com/firebase/firebase-ios-sdk
synced 2026-11-10 22:45:59 +05:45
164 lines
5.9 KiB
Swift
164 lines
5.9 KiB
Swift
// Copyright 2020 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.
|
|
|
|
@testable import FirebaseCore
|
|
import XCTest
|
|
|
|
class FirebaseOptionsTests: XCTestCase {
|
|
func testDefaultOptions() throws {
|
|
let options = try XCTUnwrap(
|
|
FirebaseOptions.defaultOptions(),
|
|
"Default options could not be unwrapped"
|
|
)
|
|
assertOptionsMatchDefaultOptions(options: options)
|
|
}
|
|
|
|
func testInitWithContentsOfFile() throws {
|
|
let bundle = try XCTUnwrap(
|
|
Bundle(for: type(of: self)),
|
|
"Could not find bundle"
|
|
)
|
|
|
|
let path = try XCTUnwrap(
|
|
bundle.path(forResource: "GoogleService-Info", ofType: "plist"),
|
|
"Could not find path for file"
|
|
)
|
|
|
|
let options = FirebaseOptions(contentsOfFile: path)
|
|
XCTAssertNotNil(options)
|
|
}
|
|
|
|
func testInitWithInvalidSourceFile() {
|
|
let invalidPath = "path/to/non-existing/plist"
|
|
let options = FirebaseOptions(contentsOfFile: invalidPath)
|
|
XCTAssertNil(options)
|
|
}
|
|
|
|
func testInitWithCustomFields() throws {
|
|
let googleAppID = "5:678:ios:678def"
|
|
let gcmSenderID = "custom_gcm_sender_id"
|
|
let options = FirebaseOptions(googleAppID: googleAppID,
|
|
gcmSenderID: gcmSenderID)
|
|
|
|
XCTAssertEqual(options.googleAppID, googleAppID)
|
|
XCTAssertEqual(options.gcmSenderID, gcmSenderID)
|
|
|
|
let bundleID =
|
|
try XCTUnwrap(Bundle.main.bundleIdentifier, "Could not retrieve bundle identifier")
|
|
XCTAssertEqual(options.bundleID, bundleID)
|
|
|
|
assertNullableOptionsAreEmpty(options: options)
|
|
}
|
|
|
|
func testCustomizedOptions() {
|
|
let googleAppID = Constants.Options.googleAppID
|
|
let gcmSenderID = Constants.Options.gcmSenderID
|
|
let options = FirebaseOptions(googleAppID: googleAppID,
|
|
gcmSenderID: gcmSenderID)
|
|
options.bundleID = Constants.Options.bundleID
|
|
options.apiKey = Constants.Options.apiKey
|
|
options.clientID = Constants.Options.clientID
|
|
options.projectID = Constants.Options.projectID
|
|
options.databaseURL = Constants.Options.databaseURL
|
|
options.storageBucket = Constants.Options.storageBucket
|
|
options.appGroupID = Constants.Options.appGroupID
|
|
|
|
assertOptionsMatchDefaultOptions(options: options)
|
|
}
|
|
|
|
func testEditingCustomOptions() {
|
|
let googleAppID = Constants.Options.googleAppID
|
|
let gcmSenderID = Constants.Options.gcmSenderID
|
|
let options = FirebaseOptions(googleAppID: googleAppID,
|
|
gcmSenderID: gcmSenderID)
|
|
|
|
let newGCMSenderID = "newgcmSenderID"
|
|
options.gcmSenderID = newGCMSenderID
|
|
XCTAssertEqual(options.gcmSenderID, newGCMSenderID)
|
|
|
|
let newGoogleAppID = "newGoogleAppID"
|
|
options.googleAppID = newGoogleAppID
|
|
XCTAssertEqual(options.googleAppID, newGoogleAppID)
|
|
|
|
XCTAssertNil(options.deepLinkURLScheme)
|
|
options.deepLinkURLScheme = Constants.Options.deepLinkURLScheme
|
|
XCTAssertEqual(options.deepLinkURLScheme, Constants.Options.deepLinkURLScheme)
|
|
|
|
XCTAssertNil(options.appGroupID)
|
|
options.appGroupID = Constants.Options.appGroupID
|
|
XCTAssertEqual(options.appGroupID, Constants.Options.appGroupID)
|
|
}
|
|
|
|
func testCopyingProperties() {
|
|
let googleAppID = Constants.Options.googleAppID
|
|
let gcmSenderID = Constants.Options.gcmSenderID
|
|
let options = FirebaseOptions(googleAppID: googleAppID,
|
|
gcmSenderID: gcmSenderID)
|
|
var apiKey = "123456789"
|
|
options.apiKey = apiKey
|
|
XCTAssertEqual(options.apiKey, apiKey)
|
|
apiKey = "000000000"
|
|
XCTAssertNotEqual(options.apiKey, apiKey)
|
|
|
|
var deepLinkURLScheme = "comdeeplinkurl"
|
|
options.deepLinkURLScheme = deepLinkURLScheme
|
|
XCTAssertEqual(options.deepLinkURLScheme, deepLinkURLScheme)
|
|
deepLinkURLScheme = "comlinkurl"
|
|
XCTAssertNotEqual(options.deepLinkURLScheme, deepLinkURLScheme)
|
|
}
|
|
|
|
func testOptionsEquality() throws {
|
|
let defaultOptions1 = try XCTUnwrap(
|
|
FirebaseOptions.defaultOptions(),
|
|
"Default options could not be unwrapped"
|
|
)
|
|
let defaultOptions2 = try XCTUnwrap(
|
|
FirebaseOptions.defaultOptions(),
|
|
"Default options could not be unwrapped"
|
|
)
|
|
|
|
XCTAssertEqual(defaultOptions1.hash, defaultOptions2.hash)
|
|
XCTAssertTrue(defaultOptions1.isEqual(defaultOptions2))
|
|
|
|
let plainOptions = FirebaseOptions(googleAppID: Constants.Options.googleAppID,
|
|
gcmSenderID: Constants.Options.gcmSenderID)
|
|
XCTAssertFalse(plainOptions.isEqual(defaultOptions1))
|
|
}
|
|
|
|
// MARK: - Helpers
|
|
|
|
private func assertOptionsMatchDefaultOptions(options: FirebaseOptions) {
|
|
XCTAssertEqual(options.apiKey, Constants.Options.apiKey)
|
|
XCTAssertEqual(options.bundleID, Constants.Options.bundleID)
|
|
XCTAssertEqual(options.clientID, Constants.Options.clientID)
|
|
XCTAssertEqual(options.gcmSenderID, Constants.Options.gcmSenderID)
|
|
XCTAssertEqual(options.projectID, Constants.Options.projectID)
|
|
XCTAssertEqual(options.googleAppID, Constants.Options.googleAppID)
|
|
XCTAssertEqual(options.databaseURL, Constants.Options.databaseURL)
|
|
XCTAssertNil(options.deepLinkURLScheme)
|
|
XCTAssertEqual(options.storageBucket, Constants.Options.storageBucket)
|
|
XCTAssertNil(options.appGroupID)
|
|
}
|
|
|
|
private func assertNullableOptionsAreEmpty(options: FirebaseOptions) {
|
|
XCTAssertNil(options.apiKey)
|
|
XCTAssertNil(options.clientID)
|
|
XCTAssertNil(options.projectID)
|
|
XCTAssertNil(options.databaseURL)
|
|
XCTAssertNil(options.deepLinkURLScheme)
|
|
XCTAssertNil(options.storageBucket)
|
|
XCTAssertNil(options.appGroupID)
|
|
}
|
|
}
|