| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- // 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.
- import XCTest
- @testable import FirebaseCore
- 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.trackingID = Constants.Options.trackingID
- 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.androidClientID)
- options.androidClientID = Constants.Options.androidClientID
- XCTAssertEqual(options.androidClientID, Constants.Options.androidClientID)
- 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.trackingID, Constants.Options.trackingID)
- XCTAssertEqual(options.gcmSenderID, Constants.Options.gcmSenderID)
- XCTAssertEqual(options.projectID, Constants.Options.projectID)
- XCTAssertNil(options.androidClientID)
- 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.trackingID)
- XCTAssertNil(options.projectID)
- XCTAssertNil(options.androidClientID)
- XCTAssertNil(options.databaseURL)
- XCTAssertNil(options.deepLinkURLScheme)
- XCTAssertNil(options.storageBucket)
- XCTAssertNil(options.appGroupID)
- }
- }
|