| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- // Copyright 2025 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 FirebaseAuth
- import Foundation
- import XCTest
- /// Unit tests for ActionCodeURL
- class ActionCodeURLTests: XCTestCase {
- /// Tests parsing a valid URL with resetPassword mode.
- func testParseURL() {
- let urlString = "https://www.example.com?apiKey=API_KEY&mode=resetPassword&oobCode=OOB_CODE"
- let actionCodeURL = ActionCodeURL(link: urlString)
- XCTAssertNotNil(actionCodeURL)
- XCTAssertEqual(actionCodeURL?.apiKey, "API_KEY")
- XCTAssertEqual(actionCodeURL?.operation, .passwordReset)
- XCTAssertEqual(actionCodeURL?.code, "OOB_CODE")
- }
- /// Tests parsing an invalid URL.
- func testParseInvalidURL() {
- let urlString = "invalid_url"
- let actionCodeURL = ActionCodeURL(link: urlString)
- XCTAssertNil(actionCodeURL)
- }
- /// Tests parsing a URL with missing parameters.
- func testParseURLMissingParameters() {
- let urlString = "https://www.example.com"
- let actionCodeURL = ActionCodeURL(link: urlString)
- XCTAssertNil(actionCodeURL)
- }
- // Tests parsing a URL with an operation and a code.
- func testParseURLDifferentMode() {
- let urlString = "https://www.example.com?apiKey=API_KEY&mode=verifyEmail&oobCode=OOB_CODE"
- let actionCodeURL = ActionCodeURL(link: urlString)
- XCTAssertNotNil(actionCodeURL)
- XCTAssertEqual(actionCodeURL?.apiKey, "API_KEY")
- XCTAssertEqual(actionCodeURL?.operation, .verifyEmail)
- XCTAssertEqual(actionCodeURL?.code, "OOB_CODE")
- }
- /// Tests parsing a URL with all properties.
- func testParseURLWithAllProperties() {
- let urlString =
- "https://www.example.com?apiKey=API_KEY&mode=recoverEmail&oobCode=OOB_CODE&continueUrl=https://www.continue.com&lang=en"
- let actionCodeURL = ActionCodeURL(link: urlString)
- XCTAssertNotNil(actionCodeURL)
- XCTAssertEqual(actionCodeURL?.apiKey, "API_KEY")
- XCTAssertEqual(actionCodeURL?.operation, .recoverEmail)
- XCTAssertEqual(actionCodeURL?.code, "OOB_CODE")
- XCTAssertEqual(actionCodeURL?.continueURL?.absoluteString, "https://www.continue.com")
- XCTAssertEqual(actionCodeURL?.languageCode, "en")
- }
- /// Tests parsing a URL with missing oobCode.
- func testParseURLMissingOobCode() {
- let urlString = "https://www.example.com?apiKey=API_KEY&mode=resetPassword"
- let actionCodeURL = ActionCodeURL(link: urlString)
- XCTAssertNil(actionCodeURL?.code)
- }
- /// Tests parsing a URL with invalid mode.
- func testParseURLInvalidMode() {
- let urlString = "https://www.example.com?apiKey=API_KEY&mode=invalidMode&oobCode=OOB_CODE"
- let actionCodeURL = ActionCodeURL(link: urlString)
- XCTAssertEqual(actionCodeURL?.operation, .unknown)
- }
- /// Tests parsing a URL with language code.
- func testActionCodeURL_languageCode() {
- let urlString = "https://example.com?lang=fr"
- let actionCodeURL = ActionCodeURL(link: urlString)
- XCTAssertEqual(actionCodeURL?.languageCode, "fr")
- }
- }
|