diff --git a/Lock/DatabaseForgotPasswordPresenter.swift b/Lock/DatabaseForgotPasswordPresenter.swift index a609699ff..77ad96544 100644 --- a/Lock/DatabaseForgotPasswordPresenter.swift +++ b/Lock/DatabaseForgotPasswordPresenter.swift @@ -73,6 +73,8 @@ class DatabaseForgotPasswordPresenter: Presentable, Loggable { } else { let message = "We've just sent you an email to reset your password".i18n(key: "com.auth0.lock.database.forgot.success.message", comment: "forgot password email sent") self.messagePresenter?.showSuccess(message) + guard self.options.allow.contains(.Login) else { return } + self.navigator.navigate(.root) } } } diff --git a/Lock/DatabasePresenter.swift b/Lock/DatabasePresenter.swift index e80ff9bd8..701cf8601 100644 --- a/Lock/DatabasePresenter.swift +++ b/Lock/DatabasePresenter.swift @@ -159,7 +159,7 @@ class DatabasePresenter: Presentable, Loggable { guard createError != nil || loginError != nil else { if !self.options.loginAfterSignup { let message = "Thanks for signing up.".i18n(key: "com.auth0.lock.database.signup.success.message", comment: "User signed up") - if let databaseView = self.databaseView { + if let databaseView = self.databaseView, self.options.allow.contains(.Login) { self.showLogin(inView: databaseView, identifier: self.creator.identifier) } self.messagePresenter?.showSuccess(message) diff --git a/LockTests/Presenters/DatabaseForgotPasswordPresenterSpec.swift b/LockTests/Presenters/DatabaseForgotPasswordPresenterSpec.swift index 76001ef80..a60e8bf50 100644 --- a/LockTests/Presenters/DatabaseForgotPasswordPresenterSpec.swift +++ b/LockTests/Presenters/DatabaseForgotPasswordPresenterSpec.swift @@ -196,6 +196,34 @@ class DatabaseForgotPasswordPresenterSpec: QuickSpec { } + describe("navigation on success") { + + it("should navigate to .root") { + let button = view.primaryButton! + interactor.onRequest = { + return nil + } + button.onPress(button) + expect(navigator.route).toEventually(equal(Route.root)) + } + + it("should not navigate to .root") { + options.allow = .ResetPassword + navigator.route = .forgotPassword + + presenter = DatabaseForgotPasswordPresenter(interactor: interactor, connections: connections, navigator: navigator, options: options) + view = presenter.view as! DatabaseForgotPasswordView + + let button = view.primaryButton! + interactor.onRequest = { + return nil + } + button.onPress(button) + expect(navigator.route).toEventuallyNot(equal(Route.root)) + } + + } + } } diff --git a/LockTests/Presenters/DatabasePresenterSpec.swift b/LockTests/Presenters/DatabasePresenterSpec.swift index a27d1e608..fd5871903 100644 --- a/LockTests/Presenters/DatabasePresenterSpec.swift +++ b/LockTests/Presenters/DatabasePresenterSpec.swift @@ -523,6 +523,40 @@ class DatabasePresenterSpec: QuickSpec { button.onPress(button) expect(button.inProgress).toEventually(beFalse()) } + + context("no login after signup") { + + beforeEach { + options.loginAfterSignup = false + } + + it("should switch to login on success") { + presenter = DatabasePresenter(authenticator: interactor, creator: interactor, connection: DatabaseConnection(name: connection, requiresUsername: true), navigator: navigator, options: options) + view = presenter.view as! DatabaseOnlyView + + let button = view.primaryButton! + interactor.onSignUp = { + return nil + } + button.onPress(button) + expect(view.switcher!.selected).toEventually(equal(DatabaseModeSwitcher.Mode.login)) + } + + it("should remain on signup on success") { + options.allow = .Signup + presenter = DatabasePresenter(authenticator: interactor, creator: interactor, connection: DatabaseConnection(name: connection, requiresUsername: true), navigator: navigator, options: options) + view = presenter.view as! DatabaseOnlyView + + let button = view.primaryButton! + interactor.onSignUp = { + return nil + } + button.onPress(button) + expect(button.title).toEventually(contain("Sign up")) + } + + + } } describe("tos action") {