From d1a1b2085bd40172ce60a81d29c22918dfefb377 Mon Sep 17 00:00:00 2001 From: SleepWalker Date: Sat, 27 Aug 2016 13:34:44 +0300 Subject: [PATCH] #192: respect user-entered email in forgotPassword state --- src/services/authFlow/ForgotPasswordState.js | 4 ++-- .../authFlow/ForgotPasswordState.test.js | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/services/authFlow/ForgotPasswordState.js b/src/services/authFlow/ForgotPasswordState.js index 5155ddc..187fa90 100644 --- a/src/services/authFlow/ForgotPasswordState.js +++ b/src/services/authFlow/ForgotPasswordState.js @@ -18,8 +18,8 @@ export default class ForgotPasswordState extends AbstractState { } } - resolve(context) { - context.run('forgotPassword', {login: this.getLogin(context)}) + resolve(context, payload = {}) { + context.run('forgotPassword', {login: payload.email || this.getLogin(context)}) .then(() => context.setState(new RecoverPasswordState())); } diff --git a/tests/services/authFlow/ForgotPasswordState.test.js b/tests/services/authFlow/ForgotPasswordState.test.js index bde9651..eb27d58 100644 --- a/tests/services/authFlow/ForgotPasswordState.test.js +++ b/tests/services/authFlow/ForgotPasswordState.test.js @@ -84,6 +84,25 @@ describe('ForgotPasswordState', () => { state.resolve(context, {}); }); + it('should call forgotPassword with email from payload if any', () => { + const expectedLogin = 'foo@bar.com'; + context.getState.returns({ + user: { + email: 'should.not@be.used' + } + }); + + expectRun( + mock, + 'forgotPassword', + sinon.match({ + login: expectedLogin + }) + ).returns({then() {}}); + + state.resolve(context, {email: expectedLogin}); + }); + it('should call forgotPassword with username', () => { const expectedLogin = 'foobar'; context.getState.returns({