| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- /*
- * 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
- import FirebaseAuth
- class AccountInfoTests: TestsBase {
- /** The testing email address for testCreateAccountWithEmailAndPassword. */
- let kOldUserEmail = "user+user_old_email@example.com"
- /** The testing email address for testUpdatingUsersEmail. */
- let kNewUserEmail = "user+user_new_email@example.com"
- override func setUp() {
- let auth = Auth.auth()
- let expectation1 = expectation(description: "Created account with email and password.")
- auth.createUser(withEmail: kOldUserEmail, password: "password") { user, error in
- // Succeed whether or not the user already exists.
- expectation1.fulfill()
- }
- waitForExpectations(timeout: TestsBase.kExpectationsTimeout)
- }
- override func tearDown() {
- // Clean up the created Firebase user for future runs.
- deleteCurrentUser()
- }
- func testUpdatingUsersEmail() {
- let auth = Auth.auth()
- let expectation1 = expectation(description: "Created account with email and password.")
- auth.createUser(withEmail: kOldUserEmail, password: "password") { user, error in
- if let error = error {
- XCTAssertEqual((error as NSError).code,
- AuthErrorCode.emailAlreadyInUse.rawValue,
- "Created a user despite it already exiting.")
- } else {
- XCTFail("Did not get error for recreating a user")
- }
- expectation1.fulfill()
- }
- waitForExpectations(timeout: TestsBase.kExpectationsTimeout)
- let expectation2 = expectation(description: "Sign in with email and password.")
- auth.signIn(withEmail: kOldUserEmail, password: "password") { user, error in
- XCTAssertNil(error)
- XCTAssertEqual(auth.currentUser?.email,
- self.kOldUserEmail,
- "Signed user does not match request.")
- expectation2.fulfill()
- }
- waitForExpectations(timeout: TestsBase.kExpectationsTimeout)
- let expectation3 = expectation(description: "Update email address.")
- auth.currentUser?.updateEmail(to: kNewUserEmail) { error in
- XCTAssertNil(error)
- XCTAssertEqual(auth.currentUser?.email,
- self.kNewUserEmail,
- "Signed user does not match change.")
- expectation3.fulfill()
- }
- waitForExpectations(timeout: TestsBase.kExpectationsTimeout)
- }
- #if compiler(>=5.5.2) && canImport(_Concurrency)
- @available(iOS 13, tvOS 13, macOS 10.15, watchOS 7, *)
- func testUpdatingUsersEmailAsync() async throws {
- let auth = Auth.auth()
- do {
- _ = try await auth.createUser(withEmail: kOldUserEmail, password: "password")
- XCTFail("Did not get error for recreating a user")
- } catch {
- XCTAssertEqual((error as NSError).code,
- AuthErrorCode.emailAlreadyInUse.rawValue,
- "Created a user despite it already exiting.")
- }
- let user = try await auth.signIn(withEmail: kOldUserEmail, password: "password")
- XCTAssertEqual(user.user.email, kOldUserEmail)
- XCTAssertEqual(auth.currentUser?.email,
- kOldUserEmail,
- "Signed user does not match request.")
- try await auth.currentUser?.updateEmail(to: kNewUserEmail)
- XCTAssertEqual(auth.currentUser?.email,
- kNewUserEmail,
- "Signed user does not match change.")
- }
- #endif
- }
|