From 163ff203a7250a54d36adad4a9bb877dfa925bbe Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 19 Oct 2020 23:55:11 -0300 Subject: [PATCH 1/5] Update Quick and Nimble --- Cartfile | 2 +- Cartfile.private | 4 ++-- Cartfile.resolved | 10 +++++----- Gemfile.lock | 14 ++++++++------ Lock.podspec | 2 +- README.md | 4 ++-- 6 files changed, 19 insertions(+), 17 deletions(-) diff --git a/Cartfile b/Cartfile index 255ba7bb9..4689d4508 100644 --- a/Cartfile +++ b/Cartfile @@ -1 +1 @@ -github "auth0/Auth0.swift" +github "auth0/Auth0.swift" ~> 1.0 diff --git a/Cartfile.private b/Cartfile.private index a5c19f367..3e62673bd 100644 --- a/Cartfile.private +++ b/Cartfile.private @@ -1,4 +1,4 @@ -github "Quick/Quick" ~> 2.2 -github "Quick/Nimble" ~> 8.0 +github "Quick/Quick" ~> 3.0 +github "Quick/Nimble" ~> 9.0 github "AliSoftware/OHHTTPStubs" ~> 9.0 github "emaloney/CleanroomLogger" ~> 7.0 diff --git a/Cartfile.resolved b/Cartfile.resolved index 9fac7fd61..6c09b6330 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -1,7 +1,7 @@ github "AliSoftware/OHHTTPStubs" "9.0.0" -github "Quick/Nimble" "v8.0.9" -github "Quick/Quick" "v2.2.0" -github "auth0/Auth0.swift" "1.28.0" -github "auth0/JWTDecode.swift" "2.4.1" -github "auth0/SimpleKeychain" "0.11.1" +github "Quick/Nimble" "v9.0.0" +github "Quick/Quick" "v3.0.0" +github "auth0/Auth0.swift" "1.29.0" +github "auth0/JWTDecode.swift" "2.5.0" +github "auth0/SimpleKeychain" "0.12.1" github "emaloney/CleanroomLogger" "7.0.0" diff --git a/Gemfile.lock b/Gemfile.lock index 62f265560..1747c1889 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -14,7 +14,7 @@ GEM json (>= 1.5.1) atomos (0.1.3) aws-eventstream (1.1.0) - aws-partitions (1.381.0) + aws-partitions (1.383.0) aws-sdk-core (3.109.1) aws-eventstream (~> 1, >= 1.0.2) aws-partitions (~> 1, >= 1.239.0) @@ -23,7 +23,7 @@ GEM aws-sdk-kms (1.39.0) aws-sdk-core (~> 3, >= 3.109.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.83.0) + aws-sdk-s3 (1.83.1) aws-sdk-core (~> 3, >= 3.109.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.1) @@ -84,16 +84,17 @@ GEM escape (0.0.4) ethon (0.12.0) ffi (>= 1.3.0) - excon (0.76.0) - faraday (1.0.1) + excon (0.78.0) + faraday (1.1.0) multipart-post (>= 1.2, < 3) + ruby2_keywords faraday-cookie_jar (0.0.7) faraday (>= 0.8.0) http-cookie (~> 1.0.0) faraday_middleware (1.0.0) faraday (~> 1.0) fastimage (2.2.0) - fastlane (2.162.0) + fastlane (2.164.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.3, < 3.0.0) aws-sdk-s3 (~> 1.0) @@ -146,7 +147,7 @@ GEM google-cloud-core (1.5.0) google-cloud-env (~> 1.0) google-cloud-errors (~> 1.0) - google-cloud-env (1.3.3) + google-cloud-env (1.4.0) faraday (>= 0.17.3, < 2.0) google-cloud-errors (1.0.1) google-cloud-storage (1.29.1) @@ -194,6 +195,7 @@ GEM retriable (3.1.2) rouge (2.0.7) ruby-macho (1.4.0) + ruby2_keywords (0.0.2) rubyzip (2.3.0) security (0.1.3) semantic (1.6.1) diff --git a/Lock.podspec b/Lock.podspec index 7f315a435..faa611251 100644 --- a/Lock.podspec +++ b/Lock.podspec @@ -26,6 +26,6 @@ Auth0 is a SaaS that helps you with Authentication and Authorization. You can us classic.ios.resource = ["Lock/*.xcassets", "Lock/*.lproj", "Lock/passwordless_country_codes.plist"] end - s.swift_versions = ['4.0', '4.1', '4.2', '5.0', '5.1', '5.2'] + s.swift_versions = ['4.0', '4.1', '4.2', '5.0', '5.1', '5.2', '5.3'] end diff --git a/README.md b/README.md index 22f23af45..296a54f20 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ [![Version](https://img.shields.io/cocoapods/v/Lock.svg?style=flat-square)](https://cocoadocs.org/docsets/Lock) [![License](https://img.shields.io/cocoapods/l/Lock.svg?style=flat-square)](https://cocoadocs.org/docsets/Lock) [![Platform](https://img.shields.io/cocoapods/p/Lock.svg?style=flat-square)](https://cocoadocs.org/docsets/Lock) -![Swift 5.2](https://img.shields.io/badge/Swift-5.2-orange.svg?style=flat-square) +![Swift 5.3](https://img.shields.io/badge/Swift-5.3-orange.svg?style=flat-square) [![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fauth0%2FLock.swift.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fauth0%2FLock.swift?ref=badge_shield) [Auth0](https://auth0.com) is an authentication broker that supports social identity providers as well as enterprise identity providers such as Active Directory, LDAP, Google Apps and Salesforce. @@ -37,7 +37,7 @@ Need help migrating from v1? Please check our [Migration Guide](MIGRATION.md). ## Requirements - iOS 9+ -- Xcode 11.x +- Xcode 11.4+ / 12.x - Swift 4.x/5.x ## Installation From 3ba0c5f651040c42d5cc206158aafd098c6fa3e1 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Tue, 20 Oct 2020 00:12:31 -0300 Subject: [PATCH 2/5] Update CI config --- .circleci/config.yml | 46 +++----------------------------------------- 1 file changed, 3 insertions(+), 43 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 40462da64..887b19ffe 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -17,20 +17,14 @@ executors: FASTLANE_EXPLICIT_OPEN_SIMULATOR: 2 commands: - use-swift: - parameters: - version: - type: string - steps: - - run: sed -i "" 's/SWIFT_VERSION = 5.0/SWIFT_VERSION = << parameters.version >>/g' "Lock.xcodeproj/project.pbxproj" prepare: parameters: ruby: type: string - default: "2.6.3" + default: "2.7.1p83" xcode: type: string - default: "10.3.0" + default: "11.7.0" steps: - restore_cache: keys: @@ -56,7 +50,6 @@ commands: key: lock-swift-carthage-{ checksum "Cartfile.resolved" }}-<< parameters.xcode >> paths: - Carthage/Build - test: steps: - run: bundle exec fastlane ios ci @@ -74,9 +67,7 @@ jobs: xcode: 11.7.0 steps: - checkout - - prepare: - ruby: "2.7.1p83" - xcode: "11.7.0" + - prepare - test - send-coverage-report - pod-lint @@ -84,39 +75,8 @@ jobs: path: output/scan - store_artifacts: path: output - build-and-test-swift-5_0: - executor: job-environment - macos: - xcode: 10.3.0 - steps: - - checkout - - prepare - - test - build-and-test-swift-4_2: - executor: job-environment - macos: - xcode: 10.3.0 - steps: - - checkout - - use-swift: - version: "4.2" - - prepare - - test - build-and-test-swift-4_0: - executor: job-environment - macos: - xcode: 10.3.0 - steps: - - checkout - - use-swift: - version: "4.0" - - prepare - - test workflows: build: jobs: - build-and-test-swift-5_2 - - build-and-test-swift-5_0 - - build-and-test-swift-4_2 - - build-and-test-swift-4_0 From 24ba1d53596da8f352fd687f073db8e9bb8e7297 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Tue, 20 Oct 2020 00:48:45 -0300 Subject: [PATCH 3/5] Replace int timeout with DispatchTimeInterval --- .../Auth0OAuth2InteractorSpec.swift | 2 +- .../Interactors/DatabaseInteractorSpec.swift | 128 +++++++++--------- .../DatabasePasswordInteractorSpec.swift | 8 +- .../EnterpriseActiveAuthInteractorSpec.swift | 30 ++-- .../MultifactorInteractorSpec.swift | 20 +-- .../PasswordlessInteractorSpec.swift | 46 +++---- LockTests/Models/ObserverStoreSpec.swift | 20 +-- LockTests/Router/ClassicRouterSpec.swift | 4 +- LockTests/Router/PasswordlessRouterSpec.swift | 4 +- 9 files changed, 131 insertions(+), 131 deletions(-) diff --git a/LockTests/Interactors/Auth0OAuth2InteractorSpec.swift b/LockTests/Interactors/Auth0OAuth2InteractorSpec.swift index 2ea0ebf1d..a9667137e 100644 --- a/LockTests/Interactors/Auth0OAuth2InteractorSpec.swift +++ b/LockTests/Interactors/Auth0OAuth2InteractorSpec.swift @@ -28,7 +28,7 @@ import Auth0 @testable import Lock private let DomainURL = URL(fileURLWithPath: domain) -private let Timeout = 2.0 +private let Timeout = DispatchTimeInterval.seconds(2) private let AccessToken = UUID().uuidString.replacingOccurrences(of: "-", with: "") private let IdToken = UUID().uuidString.replacingOccurrences(of: "-", with: "") private let FacebookToken = UUID().uuidString.replacingOccurrences(of: "-", with: "") diff --git a/LockTests/Interactors/DatabaseInteractorSpec.swift b/LockTests/Interactors/DatabaseInteractorSpec.swift index e0fca7d91..a8abfc526 100644 --- a/LockTests/Interactors/DatabaseInteractorSpec.swift +++ b/LockTests/Interactors/DatabaseInteractorSpec.swift @@ -407,7 +407,7 @@ class DatabaseInteractorSpec: QuickSpec { stub(condition: databaseLogin(identifier: email, password: password, connection: connection)) { _ in return Auth0Stubs.authentication() } try! database.update(.email, value: email) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(error).to(beNil()) done() @@ -420,7 +420,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(error).to(beNil()) done() @@ -437,7 +437,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(error).to(beNil()) done() @@ -454,7 +454,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(error).to(beNil()) done() @@ -466,7 +466,7 @@ class DatabaseInteractorSpec: QuickSpec { stub(condition: databaseLogin(identifier: username, password: password, connection: connection)) { _ in return Auth0Stubs.authentication() } try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(error).to(beNil()) done() @@ -478,7 +478,7 @@ class DatabaseInteractorSpec: QuickSpec { stub(condition: databaseLogin(identifier: email, password: password, connection: connection)) { _ in return Auth0Stubs.failure() } try! database.update(.email, value: email) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(error) == .couldNotLogin done() @@ -490,7 +490,7 @@ class DatabaseInteractorSpec: QuickSpec { stub(condition: databaseLogin(identifier: email, password: password, connection: connection)) { _ in return Auth0Stubs.failure("invalid_user_password") } try! database.update(.email, value: email) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(error) == .invalidEmailPassword done() @@ -502,7 +502,7 @@ class DatabaseInteractorSpec: QuickSpec { stub(condition: databaseLogin(identifier: email, password: password, connection: connection)) { _ in return Auth0Stubs.failure("a0.mfa_required") } try! database.update(.email, value: email) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(error) == .multifactorRequired done() @@ -514,7 +514,7 @@ class DatabaseInteractorSpec: QuickSpec { stub(condition: databaseLogin(identifier: email, password: password, connection: connection)) { _ in return Auth0Stubs.failure("a0.mfa_registration_required") } try! database.update(.email, value: email) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(error) == .multifactorRequired done() @@ -523,7 +523,7 @@ class DatabaseInteractorSpec: QuickSpec { } it("should yield error when input is not valid") { - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(error) == .nonValidInput done() @@ -535,7 +535,7 @@ class DatabaseInteractorSpec: QuickSpec { stub(condition: databaseLogin(identifier: email, password: password, connection: connection)) { _ in return Auth0Stubs.failure("too_many_attempts") } try! database.update(.email, value: email) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(error) == .tooManyAttempts done() @@ -547,7 +547,7 @@ class DatabaseInteractorSpec: QuickSpec { stub(condition: databaseLogin(identifier: email, password: password, connection: connection)) { _ in return Auth0Stubs.failure("unauthorized", description: "user is blocked") } try! database.update(.email, value: email) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(error) == .userBlocked done() @@ -559,7 +559,7 @@ class DatabaseInteractorSpec: QuickSpec { stub(condition: databaseLogin(identifier: email, password: password, connection: connection)) { _ in return Auth0Stubs.failure("password_change_required") } try! database.update(.email, value: email) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(error) == .passwordChangeRequired done() @@ -571,7 +571,7 @@ class DatabaseInteractorSpec: QuickSpec { stub(condition: databaseLogin(identifier: email, password: password, connection: connection)) { _ in return Auth0Stubs.failure("password_leaked") } try! database.update(.email, value: email) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(error) == .passwordLeaked done() @@ -583,7 +583,7 @@ class DatabaseInteractorSpec: QuickSpec { stub(condition: databaseLogin(identifier: email, password: password, connection: connection)) { _ in return Auth0Stubs.failure("unauthorized", description: "Only admins can use this") } try! database.update(.email, value: email) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(error) == .customRuleFailure(cause: "Only admins can use this") done() @@ -609,7 +609,7 @@ class DatabaseInteractorSpec: QuickSpec { stub(condition: realmLogin(identifier: email, password: password, realm: connection)) { _ in return Auth0Stubs.authentication() } try! database.update(.email, value: email) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(error).to(beNil()) done() @@ -622,7 +622,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(error).to(beNil()) done() @@ -640,7 +640,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(error).to(beNil()) done() @@ -658,7 +658,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(error).to(beNil()) done() @@ -671,7 +671,7 @@ class DatabaseInteractorSpec: QuickSpec { stub(condition: realmLogin(identifier: username, password: password, realm: connection)) { _ in return Auth0Stubs.authentication() } try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(error).to(beNil()) done() @@ -683,7 +683,7 @@ class DatabaseInteractorSpec: QuickSpec { stub(condition: realmLogin(identifier: email, password: password, realm: connection)) { _ in return Auth0Stubs.failure() } try! database.update(.email, value: email) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(error) == .couldNotLogin done() @@ -695,7 +695,7 @@ class DatabaseInteractorSpec: QuickSpec { stub(condition: realmLogin(identifier: email, password: password, realm: connection)) { _ in return Auth0Stubs.failure("invalid_user_password") } try! database.update(.email, value: email) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(error) == .invalidEmailPassword done() @@ -707,7 +707,7 @@ class DatabaseInteractorSpec: QuickSpec { stub(condition: realmLogin(identifier: email, password: password, realm: connection)) { _ in return Auth0Stubs.failure("a0.mfa_required", jsonExtra: ["mfa_token": "VALID_TOKEN"]) } try! database.update(.email, value: email) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(error) == .multifactorTokenRequired(token: "VALID_TOKEN") done() @@ -719,7 +719,7 @@ class DatabaseInteractorSpec: QuickSpec { stub(condition: realmLogin(identifier: email, password: password, realm: connection)) { _ in return Auth0Stubs.failure("a0.mfa_registration_required") } try! database.update(.email, value: email) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(error) == .multifactorRequired done() @@ -728,7 +728,7 @@ class DatabaseInteractorSpec: QuickSpec { } it("should yield error when input is not valid") { - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(error) == .nonValidInput done() @@ -740,7 +740,7 @@ class DatabaseInteractorSpec: QuickSpec { stub(condition: realmLogin(identifier: email, password: password, realm: connection)) { _ in return Auth0Stubs.failure("too_many_attempts") } try! database.update(.email, value: email) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(error) == .tooManyAttempts done() @@ -752,7 +752,7 @@ class DatabaseInteractorSpec: QuickSpec { stub(condition: realmLogin(identifier: email, password: password, realm: connection)) { _ in return Auth0Stubs.failure("unauthorized", description: "user is blocked") } try! database.update(.email, value: email) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(error) == .userBlocked done() @@ -764,7 +764,7 @@ class DatabaseInteractorSpec: QuickSpec { stub(condition: realmLogin(identifier: email, password: password, realm: connection)) { _ in return Auth0Stubs.failure("password_change_required") } try! database.update(.email, value: email) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(error) == .passwordChangeRequired done() @@ -776,7 +776,7 @@ class DatabaseInteractorSpec: QuickSpec { stub(condition: realmLogin(identifier: email, password: password, realm: connection)) { _ in return Auth0Stubs.failure("password_leaked") } try! database.update(.email, value: email) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(error) == .passwordLeaked done() @@ -791,7 +791,7 @@ class DatabaseInteractorSpec: QuickSpec { database = DatabaseInteractor(connection: db, authentication: authentication, webAuthentication: webAuthentication, user: user, options: options, dispatcher: ObserverStore()) try! database.update(.email, value: email) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(webAuthentication.parameters["login_hint"]) == email expect(webAuthentication.parameters["screen_hint"]) == "login" @@ -805,7 +805,7 @@ class DatabaseInteractorSpec: QuickSpec { stub(condition: realmLogin(identifier: email, password: password, realm: connection)) { _ in return Auth0Stubs.failure("unauthorized", description: "Only admins can use this") } try! database.update(.email, value: email) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.login { error in expect(error) == .customRuleFailure(cause: "Only admins can use this") done() @@ -833,7 +833,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create).to(beNil()) expect(login).to(beNil()) @@ -850,7 +850,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) let _ = try? database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create).to(beNil()) expect(login).to(beNil()) @@ -865,7 +865,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create).to(beNil()) expect(login) == .multifactorRequired @@ -890,7 +890,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create).to(beNil()) expect(login).to(beNil()) @@ -907,7 +907,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) let _ = try? database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create).to(beNil()) expect(login).to(beNil()) @@ -922,7 +922,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create).to(beNil()) expect(login) == .multifactorRequired @@ -937,7 +937,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create).to(beNil()) expect(login) == .couldNotLogin @@ -951,7 +951,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create) == .couldNotCreateUser done() @@ -964,7 +964,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create) == .passwordInvalid done() @@ -977,7 +977,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create) == .passwordTooWeak done() @@ -990,7 +990,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create) == .passwordAlreadyUsed done() @@ -1003,7 +1003,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create) == .passwordTooCommon done() @@ -1018,7 +1018,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create).to(beNil()) expect(login) == .couldNotLogin @@ -1032,7 +1032,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create) == .passwordHasUserInfo done() @@ -1041,7 +1041,7 @@ class DatabaseInteractorSpec: QuickSpec { } it("should yield error when input is not valid") { - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create) == .nonValidInput done() @@ -1052,7 +1052,7 @@ class DatabaseInteractorSpec: QuickSpec { it("should yield error when username is not valid and required") { try! database.update(.email, value: email) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create) == .nonValidInput done() @@ -1070,7 +1070,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create).to(beNil()) expect(login).to(beNil()) @@ -1088,7 +1088,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create).to(beNil()) expect(login).to(beNil()) @@ -1116,7 +1116,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create).to(beNil()) expect(login).to(beNil()) @@ -1133,7 +1133,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) let _ = try? database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create).to(beNil()) expect(login).to(beNil()) @@ -1148,7 +1148,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create).to(beNil()) expect(login) == .multifactorRequired @@ -1163,7 +1163,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create).to(beNil()) expect(login) == .couldNotLogin @@ -1177,7 +1177,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create) == .couldNotCreateUser done() @@ -1190,7 +1190,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create) == .passwordInvalid done() @@ -1203,7 +1203,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create) == .passwordTooWeak done() @@ -1216,7 +1216,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create) == .passwordAlreadyUsed done() @@ -1229,7 +1229,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create) == .passwordTooCommon done() @@ -1242,7 +1242,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create) == .passwordHasUserInfo done() @@ -1258,7 +1258,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create).to(beNil()) expect(webAuthentication.parameters["login_hint"]) == email @@ -1270,7 +1270,7 @@ class DatabaseInteractorSpec: QuickSpec { } it("should yield error when input is not valid") { - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create) == .nonValidInput done() @@ -1281,7 +1281,7 @@ class DatabaseInteractorSpec: QuickSpec { it("should yield error when username is not valid and required") { try! database.update(.email, value: email) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create) == .nonValidInput done() @@ -1300,7 +1300,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create).to(beNil()) expect(login).to(beNil()) @@ -1319,7 +1319,7 @@ class DatabaseInteractorSpec: QuickSpec { try! database.update(.email, value: email) try! database.update(.username, value: username) try! database.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in database.create { create, login in expect(create).to(beNil()) expect(login).to(beNil()) diff --git a/LockTests/Interactors/DatabasePasswordInteractorSpec.swift b/LockTests/Interactors/DatabasePasswordInteractorSpec.swift index c8c31d1b5..bd5ea6aeb 100644 --- a/LockTests/Interactors/DatabasePasswordInteractorSpec.swift +++ b/LockTests/Interactors/DatabasePasswordInteractorSpec.swift @@ -106,7 +106,7 @@ class DatabasePasswordInteractorSpec: QuickSpec { it("should fail if no db connection is found") { forgot = DatabasePasswordInteractor(connections: OfflineConnections(), authentication: authentication, user: user, dispatcher: dispatcher) try! forgot.updateEmail(email) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in forgot.requestEmail { error in expect(error) == .noDatabaseConnection done() @@ -117,7 +117,7 @@ class DatabasePasswordInteractorSpec: QuickSpec { it("should yield no error on success") { stub(condition: databaseForgotPassword(email: email, connection: connection)) { _ in return Auth0Stubs.forgotEmailSent() } try! forgot.updateEmail(email) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in forgot.requestEmail { error in expect(error).to(beNil()) done() @@ -128,7 +128,7 @@ class DatabasePasswordInteractorSpec: QuickSpec { it("should yield error on failure") { stub(condition: databaseForgotPassword(email: email, connection: connection)) { _ in return Auth0Stubs.failure() } try! forgot.updateEmail(email) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in forgot.requestEmail { error in expect(error) == .emailNotSent done() @@ -137,7 +137,7 @@ class DatabasePasswordInteractorSpec: QuickSpec { } it("should yield error when input is not valid") { - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in forgot.requestEmail { error in expect(error) == .nonValidInput done() diff --git a/LockTests/Interactors/EnterpriseActiveAuthInteractorSpec.swift b/LockTests/Interactors/EnterpriseActiveAuthInteractorSpec.swift index 8a05ea424..175480be4 100644 --- a/LockTests/Interactors/EnterpriseActiveAuthInteractorSpec.swift +++ b/LockTests/Interactors/EnterpriseActiveAuthInteractorSpec.swift @@ -151,7 +151,7 @@ class EnterpriseActiveAuthInteractorSpec: QuickSpec { stub(condition: databaseLogin(identifier: email, password: password, connection: interactor.connection.name)) { _ in return Auth0Stubs.authentication() } try! interactor.update(.email, value: email) try! interactor.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login { error in expect(error).to(beNil()) done() @@ -163,7 +163,7 @@ class EnterpriseActiveAuthInteractorSpec: QuickSpec { stub(condition: databaseLogin(identifier: email, password: password, connection: interactor.connection.name)) { _ in return Auth0Stubs.failure("invalid_user_password") } try! interactor.update(.email, value: email) try! interactor.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login { error in expect(error) == .invalidEmailPassword done() @@ -175,7 +175,7 @@ class EnterpriseActiveAuthInteractorSpec: QuickSpec { stub(condition: databaseLogin(identifier: email, password: password, connection: interactor.connection.name)) { _ in return Auth0Stubs.failure("a0.mfa_required") } try! interactor.update(.email, value: email) try! interactor.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login { error in expect(error) == .multifactorRequired done() @@ -187,7 +187,7 @@ class EnterpriseActiveAuthInteractorSpec: QuickSpec { stub(condition: databaseLogin(identifier: email, password: password, connection: interactor.connection.name)) { _ in return Auth0Stubs.failure("a0.mfa_registration_required") } try! interactor.update(.email, value: email) try! interactor.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login { error in expect(error) == .multifactorRequired done() @@ -199,7 +199,7 @@ class EnterpriseActiveAuthInteractorSpec: QuickSpec { stub(condition: databaseLogin(identifier: email, password: password, connection: interactor.connection.name)) { _ in return Auth0Stubs.failure("unauthorized", description: "user is blocked") } try! interactor.update(.email, value: email) try! interactor.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login { error in expect(error) == .userBlocked done() @@ -211,7 +211,7 @@ class EnterpriseActiveAuthInteractorSpec: QuickSpec { stub(condition: databaseLogin(identifier: email, password: password, connection: interactor.connection.name)) { _ in return Auth0Stubs.failure("password_change_required") } try! interactor.update(.email, value: email) try! interactor.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login { error in expect(error) == .passwordChangeRequired done() @@ -223,7 +223,7 @@ class EnterpriseActiveAuthInteractorSpec: QuickSpec { stub(condition: databaseLogin(identifier: email, password: password, connection: interactor.connection.name)) { _ in return Auth0Stubs.failure("unauthorized", description: "Only admins can use this") } try! interactor.update(.email, value: email) try! interactor.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login { error in expect(error) == .customRuleFailure(cause: "Only admins can use this") done() @@ -251,7 +251,7 @@ class EnterpriseActiveAuthInteractorSpec: QuickSpec { stub(condition: realmLogin(identifier: email, password: password, realm: interactor.connection.name)) { _ in return Auth0Stubs.authentication() } try! interactor.update(.email, value: email) try! interactor.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login { error in expect(error).to(beNil()) done() @@ -263,7 +263,7 @@ class EnterpriseActiveAuthInteractorSpec: QuickSpec { stub(condition: realmLogin(identifier: email, password: password, realm: interactor.connection.name)) { _ in return Auth0Stubs.failure("invalid_user_password") } try! interactor.update(.email, value: email) try! interactor.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login { error in expect(error) == .invalidEmailPassword done() @@ -275,7 +275,7 @@ class EnterpriseActiveAuthInteractorSpec: QuickSpec { stub(condition: realmLogin(identifier: email, password: password, realm: interactor.connection.name)) { _ in return Auth0Stubs.failure("a0.mfa_required") } try! interactor.update(.email, value: email) try! interactor.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login { error in expect(error) == .multifactorRequired done() @@ -287,7 +287,7 @@ class EnterpriseActiveAuthInteractorSpec: QuickSpec { stub(condition: realmLogin(identifier: email, password: password, realm: interactor.connection.name)) { _ in return Auth0Stubs.failure("a0.mfa_registration_required") } try! interactor.update(.email, value: email) try! interactor.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login { error in expect(error) == .multifactorRequired done() @@ -299,7 +299,7 @@ class EnterpriseActiveAuthInteractorSpec: QuickSpec { stub(condition: realmLogin(identifier: email, password: password, realm: interactor.connection.name)) { _ in return Auth0Stubs.failure("unauthorized", description: "user is blocked") } try! interactor.update(.email, value: email) try! interactor.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login { error in expect(error) == .userBlocked done() @@ -311,7 +311,7 @@ class EnterpriseActiveAuthInteractorSpec: QuickSpec { stub(condition: realmLogin(identifier: email, password: password, realm: interactor.connection.name)) { _ in return Auth0Stubs.failure("password_change_required") } try! interactor.update(.email, value: email) try! interactor.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login { error in expect(error) == .passwordChangeRequired done() @@ -323,7 +323,7 @@ class EnterpriseActiveAuthInteractorSpec: QuickSpec { stub(condition: realmLogin(identifier: email, password: password, realm: interactor.connection.name)) { _ in return Auth0Stubs.failure("unauthorized", description: "Only admins can use this") } try! interactor.update(.email, value: email) try! interactor.update(.password(enforcePolicy: false), value: password) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login { error in expect(error) == .customRuleFailure(cause: "Only admins can use this") done() @@ -341,7 +341,7 @@ public func ==(lhs: UserAttribute, rhs: UserAttribute) -> Bool { switch((lhs, rhs)) { case (.email, .email), (.username, .username), (.password, .password), (.emailOrUsername, .emailOrUsername): return true - case (.custom(let lhsConnection), .custom(let rhsConnection)): + case (.custom(let lhsConnection, _), .custom(let rhsConnection, _)): return lhsConnection == rhsConnection default: return false diff --git a/LockTests/Interactors/MultifactorInteractorSpec.swift b/LockTests/Interactors/MultifactorInteractorSpec.swift index 8d4fab231..1dc9a1cc1 100644 --- a/LockTests/Interactors/MultifactorInteractorSpec.swift +++ b/LockTests/Interactors/MultifactorInteractorSpec.swift @@ -110,7 +110,7 @@ class MultifactorInteractorSpec: QuickSpec { it("should yield no error on success") { stub(condition: databaseLogin(identifier: email, password: password, code: code, connection: connection.name)) { _ in return Auth0Stubs.authentication() } try! interactor.setMultifactorCode(code) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login { error in expect(error).to(beNil()) done() @@ -128,7 +128,7 @@ class MultifactorInteractorSpec: QuickSpec { it("should yield error on failure") { stub(condition: databaseLogin(identifier: email, password: password, code: code, connection: connection.name)) { _ in return Auth0Stubs.failure() } try! interactor.setMultifactorCode(code) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login { error in expect(error) == .couldNotLogin done() @@ -139,7 +139,7 @@ class MultifactorInteractorSpec: QuickSpec { it("should notify when code is invalid") { stub(condition: databaseLogin(identifier: email, password: password, code: code, connection: connection.name)) { _ in return Auth0Stubs.failure("a0.mfa_invalid_code") } try! interactor.setMultifactorCode(code) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login { error in expect(error) == .multifactorInvalid done() @@ -148,7 +148,7 @@ class MultifactorInteractorSpec: QuickSpec { } it("should yield error when input is not valid") { - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login { error in expect(error) == .nonValidInput done() @@ -159,7 +159,7 @@ class MultifactorInteractorSpec: QuickSpec { it("should indicate that a custom rule prevented the user from logging in") { stub(condition: databaseLogin(identifier: email, password: password, code: code, connection: connection.name)) { _ in return Auth0Stubs.failure("unauthorized", description: "Only admins can use this") } try! interactor.setMultifactorCode(code) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login { error in expect(error) == .customRuleFailure(cause: "Only admins can use this") done() @@ -183,7 +183,7 @@ class MultifactorInteractorSpec: QuickSpec { it("should yield no error on success") { stub(condition: otpLogin(otp: code, mfaToken: mfaToken)) { _ in return Auth0Stubs.authentication() } try! interactor.setMultifactorCode(code) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login { error in expect(error).to(beNil()) done() @@ -201,7 +201,7 @@ class MultifactorInteractorSpec: QuickSpec { it("should yield error when not token set") { interactor = MultifactorInteractor(user: user, authentication: Auth0.authentication(clientId: clientId, domain: domain), connection: connection, options: options, dispatcher: dispatcher, mfaToken: nil) try! interactor.setMultifactorCode(code) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login { error in expect(error) == .couldNotLogin done() @@ -213,7 +213,7 @@ class MultifactorInteractorSpec: QuickSpec { interactor = MultifactorInteractor(user: user, authentication: Auth0.authentication(clientId: clientId, domain: domain), connection: connection, options: options, dispatcher: dispatcher, mfaToken: "INVALID_TOKEN") stub(condition: otpLogin(otp: code, mfaToken: "INVALID_TOKEN")) { _ in return Auth0Stubs.failure("a0.mfa_invalid_code") } try! interactor.setMultifactorCode(code) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login { error in expect(error) == .multifactorInvalid done() @@ -222,7 +222,7 @@ class MultifactorInteractorSpec: QuickSpec { } it("should yield error when input is not valid") { - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login { error in expect(error) == .nonValidInput done() @@ -233,7 +233,7 @@ class MultifactorInteractorSpec: QuickSpec { it("should indicate that a custom rule prevented the user from logging in") { stub(condition: otpLogin(otp: code, mfaToken: mfaToken)) { _ in return Auth0Stubs.failure("unauthorized", description: "Only admins can use this") } try! interactor.setMultifactorCode(code) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login { error in expect(error) == .customRuleFailure(cause: "Only admins can use this") done() diff --git a/LockTests/Interactors/PasswordlessInteractorSpec.swift b/LockTests/Interactors/PasswordlessInteractorSpec.swift index 898e87c65..891fc26f9 100644 --- a/LockTests/Interactors/PasswordlessInteractorSpec.swift +++ b/LockTests/Interactors/PasswordlessInteractorSpec.swift @@ -146,7 +146,7 @@ class PasswordlessInteractorSpec: QuickSpec { let user = User() user.validEmail = false interactor = PasswordlessInteractor(connection: connection, authentication: authentication, dispatcher: dispatcher, user: user, options: options, passwordlessActivity: passwordlessActivity) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login(connection.name) { error in expect(error) == .nonValidInput done() @@ -159,7 +159,7 @@ class PasswordlessInteractorSpec: QuickSpec { user.validEmail = true user.validPassword = false interactor = PasswordlessInteractor(connection: connection, authentication: authentication, dispatcher: dispatcher, user: user, options: options, passwordlessActivity: passwordlessActivity) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login(connection.name) { error in expect(error) == .nonValidInput done() @@ -180,7 +180,7 @@ class PasswordlessInteractorSpec: QuickSpec { stub(condition: passwordlessLogin(username: email, otp: code, realm: connection.name)) { _ in return Auth0Stubs.authentication() } try! interactor.update(.email, value: email) try! interactor.update(.oneTimePassword, value: code) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login(connection.name) { error in expect(error).to(beNil()) done() @@ -193,7 +193,7 @@ class PasswordlessInteractorSpec: QuickSpec { stub(condition: passwordlessLogin(username: email, otp: code, realm: connection.name)) { _ in return Auth0Stubs.failure("unauthorized", description: "Only admins can use this") } try! interactor.update(.email, value: email) try! interactor.update(.oneTimePassword, value: code) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login(connection.name) { error in expect(error) == .customRuleFailure(cause: "Only admins can use this") done() @@ -214,7 +214,7 @@ class PasswordlessInteractorSpec: QuickSpec { stub(condition: databaseLogin(identifier: email, password: code, connection: connection.name)) { _ in return Auth0Stubs.authentication() } try! interactor.update(.email, value: email) try! interactor.update(.oneTimePassword, value: code) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login(connection.name) { error in expect(error).to(beNil()) done() @@ -227,7 +227,7 @@ class PasswordlessInteractorSpec: QuickSpec { stub(condition: databaseLogin(identifier: email, password: code, connection: connection.name)) { _ in return Auth0Stubs.failure("unauthorized", description: "Only admins can use this") } try! interactor.update(.email, value: email) try! interactor.update(.oneTimePassword, value: code) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login(connection.name) { error in expect(error) == .customRuleFailure(cause: "Only admins can use this") done() @@ -251,7 +251,7 @@ class PasswordlessInteractorSpec: QuickSpec { user = User() user.validEmail = false interactor = PasswordlessInteractor(connection: connection, authentication: authentication, dispatcher: dispatcher, user: user, options: options, passwordlessActivity: passwordlessActivity) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.request(connection.name) { error in expect(error) == .nonValidInput done() @@ -262,7 +262,7 @@ class PasswordlessInteractorSpec: QuickSpec { it("should yield specific error when new signups disabled") { stub(condition: passwordlessStart(email: email, connection: connection.name)) { _ in return Auth0Stubs.failure("bad.connection", name: "no_signup") } - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.request(connection.name) { error in expect(error) == .noSignup done() @@ -273,7 +273,7 @@ class PasswordlessInteractorSpec: QuickSpec { it("should yield error on response error") { stub(condition: passwordlessStart(email: email, connection: connection.name)) { _ in return Auth0Stubs.failure("unknown.error", name: "Generic error") } - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.request(connection.name) { error in expect(error) == .codeNotSent done() @@ -284,7 +284,7 @@ class PasswordlessInteractorSpec: QuickSpec { it("should yield success on response success") { stub(condition: passwordlessStart(email: email, connection: connection.name)) { _ in return Auth0Stubs.passwordlessSent(email) } - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.request(connection.name) { error in expect(error).to(beNil()) done() @@ -310,7 +310,7 @@ class PasswordlessInteractorSpec: QuickSpec { } it("should store passwordless transaction on sending link") { - waitUntil(timeout: 4) { done in + waitUntil(timeout: .seconds(4)) { done in interactor.request(connection.name) { error in expect(error).to(beNil()) done() @@ -426,7 +426,7 @@ class PasswordlessInteractorSpec: QuickSpec { let user = User() user.validEmail = false interactor = PasswordlessInteractor(connection: connection, authentication: authentication, dispatcher: dispatcher, user: user, options: options, passwordlessActivity: passwordlessActivity) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login(connection.name) { error in expect(error) == .nonValidInput done() @@ -439,7 +439,7 @@ class PasswordlessInteractorSpec: QuickSpec { user.validEmail = true user.validPassword = false interactor = PasswordlessInteractor(connection: connection, authentication: authentication, dispatcher: dispatcher, user: user, options: options, passwordlessActivity: passwordlessActivity) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login(connection.name) { error in expect(error) == .nonValidInput done() @@ -460,7 +460,7 @@ class PasswordlessInteractorSpec: QuickSpec { stub(condition: passwordlessLogin(username: phone, otp: code, realm: connection.name)) { _ in return Auth0Stubs.authentication() } try! interactor.update(.phone, value: phone) try! interactor.update(.oneTimePassword, value: code) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login(connection.name) { error in expect(error).to(beNil()) done() @@ -473,7 +473,7 @@ class PasswordlessInteractorSpec: QuickSpec { stub(condition: passwordlessLogin(username: phone, otp: code, realm: connection.name)) { _ in return Auth0Stubs.failure("unauthorized", description: "Only admins can use this") } try! interactor.update(.phone, value: phone) try! interactor.update(.oneTimePassword, value: code) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login(connection.name) { error in expect(error) == .customRuleFailure(cause: "Only admins can use this") done() @@ -494,7 +494,7 @@ class PasswordlessInteractorSpec: QuickSpec { stub(condition: databaseLogin(identifier: phone, password: code, connection: connection.name)) { _ in return Auth0Stubs.authentication() } try! interactor.update(.phone, value: phone) try! interactor.update(.oneTimePassword, value: code) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login(connection.name) { error in expect(error).to(beNil()) done() @@ -507,7 +507,7 @@ class PasswordlessInteractorSpec: QuickSpec { stub(condition: databaseLogin(identifier: phone, password: code, connection: connection.name)) { _ in return Auth0Stubs.failure("unauthorized", description: "Only admins can use this") } try! interactor.update(.phone, value: phone) try! interactor.update(.oneTimePassword, value: code) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.login(connection.name) { error in expect(error) == .customRuleFailure(cause: "Only admins can use this") done() @@ -532,7 +532,7 @@ class PasswordlessInteractorSpec: QuickSpec { user = User() user.validEmail = false interactor = PasswordlessInteractor(connection: connection, authentication: authentication, dispatcher: dispatcher, user: user, options: options, passwordlessActivity: passwordlessActivity) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.request(connection.name) { error in expect(error) == .nonValidInput done() @@ -543,7 +543,7 @@ class PasswordlessInteractorSpec: QuickSpec { it("should yield error on no country code") { user.countryCode = nil interactor = PasswordlessInteractor(connection: connection, authentication: authentication, dispatcher: dispatcher, user: user, options: options, passwordlessActivity: passwordlessActivity) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.request(connection.name) { error in expect(error) == .nonValidInput done() @@ -557,7 +557,7 @@ class PasswordlessInteractorSpec: QuickSpec { return Auth0Stubs.failure("bad.connection", name: "no_signup") } print(phoneInternational) - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.request(connection.name) { error in expect(error) == .noSignup done() @@ -568,7 +568,7 @@ class PasswordlessInteractorSpec: QuickSpec { it("should yield error on response error") { stub(condition: passwordlessStart(phone: phoneInternational, connection: connection.name)) { _ in return Auth0Stubs.failure("unknown.error", name: "Generic error") } - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.request(connection.name) { error in expect(error) == .codeNotSent done() @@ -579,7 +579,7 @@ class PasswordlessInteractorSpec: QuickSpec { it("should yield success on response success") { stub(condition: passwordlessStart(phone: phoneInternational, connection: connection.name)) { _ in return Auth0Stubs.passwordlessSent(email) } - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in interactor.request(connection.name) { error in expect(error).to(beNil()) done() @@ -607,7 +607,7 @@ class PasswordlessInteractorSpec: QuickSpec { } it("should store passwordless transaction on sending link") { - waitUntil(timeout: 4) { done in + waitUntil(timeout: .seconds(4)) { done in interactor.request(connection.name) { error in expect(error).to(beNil()) done() diff --git a/LockTests/Models/ObserverStoreSpec.swift b/LockTests/Models/ObserverStoreSpec.swift index 53c572085..62dfdf0ec 100644 --- a/LockTests/Models/ObserverStoreSpec.swift +++ b/LockTests/Models/ObserverStoreSpec.swift @@ -104,7 +104,7 @@ class ObserverStoreSpec: QuickSpec { it("should dismiss onAuth") { let value = mockCredentials() dispatcher.dispatch(result: .auth(value)) - expect(presenter.presented).toEventually(beNil(), timeout: 2) + expect(presenter.presented).toEventually(beNil(), timeout: .seconds(2)) } it("should not dismiss onAuth when autoclose disabled") { @@ -113,18 +113,18 @@ class ObserverStoreSpec: QuickSpec { options.autoClose = false dispatcher.options = options dispatcher.dispatch(result: .auth(value)) - expect(presenter.presented).toEventuallyNot(beNil(), timeout: 2) + expect(presenter.presented).toEventuallyNot(beNil(), timeout: .seconds(2)) } it("should dismiss onCancel") { dispatcher.dispatch(result: .cancel) - expect(presenter.presented).toEventually(beNil(), timeout: 2) + expect(presenter.presented).toEventually(beNil(), timeout: .seconds(2)) } it("should not dismiss onSignUp") { dispatcher.dispatch(result: .signUp(email, ["username": username])) expect(newEmail).toEventually(equal(email)) - expect(presenter.presented).toEventuallyNot(beNil(), timeout: 2) + expect(presenter.presented).toEventuallyNot(beNil(), timeout: .seconds(2)) } it("should dismiss onSignUp when single screen") { @@ -133,7 +133,7 @@ class ObserverStoreSpec: QuickSpec { dispatcher.options = options dispatcher.dispatch(result: .signUp(email, ["username": username])) expect(newEmail).toEventually(equal(email)) - expect(presenter.presented).toEventually(beNil(), timeout: 2) + expect(presenter.presented).toEventually(beNil(), timeout: .seconds(2)) } it("should not dismiss onSignUp when single screen but autoclose disabled") { @@ -143,12 +143,12 @@ class ObserverStoreSpec: QuickSpec { dispatcher.options = options dispatcher.dispatch(result: .signUp(email, ["username": username])) expect(newEmail).toEventually(equal(email)) - expect(presenter.presented).toEventuallyNot(beNil(), timeout: 2) + expect(presenter.presented).toEventuallyNot(beNil(), timeout: .seconds(2)) } it("should not dismiss forgotPassword") { dispatcher.dispatch(result: .forgotPassword(email)) - expect(presenter.presented).toEventuallyNot(beNil(), timeout: 2) + expect(presenter.presented).toEventuallyNot(beNil(), timeout: .seconds(2)) } it("should dismiss forgotPassword when single screen") { @@ -157,7 +157,7 @@ class ObserverStoreSpec: QuickSpec { dispatcher.options = options dispatcher.dispatch(result: .forgotPassword(email)) expect(newEmail).toEventually(equal(email)) - expect(presenter.presented).toEventually(beNil(), timeout: 2) + expect(presenter.presented).toEventually(beNil(), timeout: .seconds(2)) } it("should not dismiss forgotPassword when single screen but autoclose disabled") { @@ -167,12 +167,12 @@ class ObserverStoreSpec: QuickSpec { dispatcher.options = options dispatcher.dispatch(result: .forgotPassword(email)) expect(newEmail).toEventually(equal(email)) - expect(presenter.presented).toEventuallyNot(beNil(), timeout: 2) + expect(presenter.presented).toEventuallyNot(beNil(), timeout: .seconds(2)) } it("should not dismiss onPasswordless") { dispatcher.dispatch(result: .passwordless(email)) - expect(presenter.presented).toEventuallyNot(beNil(), timeout: 2) + expect(presenter.presented).toEventuallyNot(beNil(), timeout: .seconds(2)) } } diff --git a/LockTests/Router/ClassicRouterSpec.swift b/LockTests/Router/ClassicRouterSpec.swift index c8bc8070e..8fa18d0c1 100644 --- a/LockTests/Router/ClassicRouterSpec.swift +++ b/LockTests/Router/ClassicRouterSpec.swift @@ -235,7 +235,7 @@ class ClassicRouterSpec: QuickSpec { } it("should pass error in callback") { - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in lock.observerStore.onFailure = { cause in if case UnrecoverableError.invalidClientOrDomain = cause { done() @@ -356,7 +356,7 @@ class ClassicRouterSpec: QuickSpec { } it("should exit with error when connections are empty") { - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in lock.observerStore.onFailure = { cause in if case UnrecoverableError.clientWithNoConnections = cause { done() diff --git a/LockTests/Router/PasswordlessRouterSpec.swift b/LockTests/Router/PasswordlessRouterSpec.swift index e8ff6571c..2726d7838 100644 --- a/LockTests/Router/PasswordlessRouterSpec.swift +++ b/LockTests/Router/PasswordlessRouterSpec.swift @@ -158,7 +158,7 @@ class PasswordlessRouterSpec: QuickSpec { } it("should pass error in callback") { - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in lock.observerStore.onFailure = { cause in if case UnrecoverableError.invalidClientOrDomain = cause { done() @@ -231,7 +231,7 @@ class PasswordlessRouterSpec: QuickSpec { } it("should exit with error when connections are empty") { - waitUntil(timeout: 2) { done in + waitUntil(timeout: .seconds(2)) { done in lock.observerStore.onFailure = { cause in if case UnrecoverableError.clientWithNoConnections = cause { done() From e6c850408a91b2fecdd8359557149f35b010670a Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Tue, 20 Oct 2020 00:49:07 -0300 Subject: [PATCH 4/5] Remove redundant equatable implementation --- LockTests/CredentialAuthErrorSpec.swift | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/LockTests/CredentialAuthErrorSpec.swift b/LockTests/CredentialAuthErrorSpec.swift index 6af57f0e2..3d1347296 100644 --- a/LockTests/CredentialAuthErrorSpec.swift +++ b/LockTests/CredentialAuthErrorSpec.swift @@ -92,26 +92,3 @@ class CredentialAuthErrorSpec: QuickSpec { } } - -extension CredentialAuthError: Equatable { - public static func ==(lhs: CredentialAuthError, rhs: CredentialAuthError) -> Bool { - switch (lhs, rhs) { - case (.nonValidInput, .nonValidInput), - (.userBlocked, .userBlocked), - (.invalidEmailPassword, .invalidEmailPassword), - (.couldNotLogin, .couldNotLogin), - (.passwordChangeRequired, .passwordChangeRequired), - (.passwordLeaked, .passwordLeaked), - (.tooManyAttempts, .tooManyAttempts), - (.multifactorRequired, .multifactorRequired), - (.multifactorInvalid, .multifactorInvalid): - return true - case (.customRuleFailure(let lhsCause), .customRuleFailure(let rhsCause)): - return lhsCause == rhsCause - case (.multifactorTokenRequired(let lhsToken), .multifactorTokenRequired(let rhsToken)): - return lhsToken == rhsToken - default: - return false - } - } -} From 456182397c7579946482100dfceb02988f003200 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 21 Oct 2020 17:27:23 -0300 Subject: [PATCH 5/5] Remove the FOSSA badge and widget --- README.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/README.md b/README.md index 296a54f20..9a5169dfc 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,6 @@ [![License](https://img.shields.io/cocoapods/l/Lock.svg?style=flat-square)](https://cocoadocs.org/docsets/Lock) [![Platform](https://img.shields.io/cocoapods/p/Lock.svg?style=flat-square)](https://cocoadocs.org/docsets/Lock) ![Swift 5.3](https://img.shields.io/badge/Swift-5.3-orange.svg?style=flat-square) -[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fauth0%2FLock.swift.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fauth0%2FLock.swift?ref=badge_shield) [Auth0](https://auth0.com) is an authentication broker that supports social identity providers as well as enterprise identity providers such as Active Directory, LDAP, Google Apps and Salesforce. @@ -535,7 +534,4 @@ If you have found a bug or to request a feature, please [raise an issue](https:/ ## License -This project is licensed under the MIT license. See the [LICENSE](https://github.com/auth0/Lock.swift/blob/master/LICENSE) file for more info. - - -[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fauth0%2FLock.swift.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fauth0%2FLock.swift?ref=badge_large) \ No newline at end of file +This project is licensed under the MIT license. See the [LICENSE](LICENSE) file for more info.