From fcd9e401f5b5b1af42de1e5e839ff4d36cc1c1d2 Mon Sep 17 00:00:00 2001 From: Harrison Healey Date: Wed, 22 May 2019 11:55:27 -0400 Subject: [PATCH] MM-15582 Don't show forgot password link without email/username login (#2811) --- app/screens/login/login.js | 27 +++++++----- app/screens/login/login.test.js | 75 +++++++++++++++++++++++++++++++++ test/setup.js | 8 ++++ 3 files changed, 100 insertions(+), 10 deletions(-) create mode 100644 app/screens/login/login.test.js diff --git a/app/screens/login/login.js b/app/screens/login/login.js index 79d5e867c..f05979b5d 100644 --- a/app/screens/login/login.js +++ b/app/screens/login/login.js @@ -364,6 +364,22 @@ export default class Login extends PureComponent { ); } + let forgotPassword; + if (this.props.config.EnableSignInWithEmail === 'true' || this.props.config.EnableSignInWithUsername === 'true') { + forgotPassword = ( + + ); + } + return ( @@ -419,16 +435,7 @@ export default class Login extends PureComponent { disableFullscreenUI={true} /> {proceed} - + {forgotPassword} diff --git a/app/screens/login/login.test.js b/app/screens/login/login.test.js new file mode 100644 index 000000000..e2ed4935a --- /dev/null +++ b/app/screens/login/login.test.js @@ -0,0 +1,75 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See LICENSE.txt for license information. + +import React from 'react'; + +import FormattedText from 'app/components/formatted_text'; + +import {shallowWithIntl} from 'test/intl-test-helper'; + +import Login from './login'; + +describe('Login', () => { + const baseProps = { + config: { + EnableSignInWithEmail: 'true', + EnableSignInWithUsername: 'true', + }, + license: { + IsLicensed: 'false', + }, + loginId: '', + password: '', + loginRequest: {}, + actions: { + handleLoginIdChanged: jest.fn(), + handlePasswordChanged: jest.fn(), + handleSuccessfulLogin: jest.fn(), + scheduleExpiredNotification: jest.fn(), + login: jest.fn(), + }, + }; + + test('should show "I forgot my password" with only email login enabled', () => { + const props = { + ...baseProps, + config: { + ...baseProps.config, + EnableSignInWithUsername: 'false', + }, + }; + + const wrapper = shallowWithIntl(); + + expect(wrapper.find(FormattedText).find({id: 'login.forgot'}).exists()).toBe(true); + }); + + test('should show "I forgot my password" with only username login enabled', () => { + const props = { + ...baseProps, + config: { + ...baseProps.config, + EnableSignInWithEmail: 'false', + }, + }; + + const wrapper = shallowWithIntl(); + + expect(wrapper.find(FormattedText).find({id: 'login.forgot'}).exists()).toBe(true); + }); + + test('should not show "I forgot my password" without email or username login enabled', () => { + const props = { + ...baseProps, + config: { + ...baseProps.config, + EnableSignInWithEmail: 'false', + EnableSignInWithUsername: 'false', + }, + }; + + const wrapper = shallowWithIntl(); + + expect(wrapper.find(FormattedText).find({id: 'login.forgot'}).exists()).toBe(false); + }); +}); diff --git a/test/setup.js b/test/setup.js index 2b5d84bfc..dd30a9374 100644 --- a/test/setup.js +++ b/test/setup.js @@ -42,6 +42,14 @@ jest.mock('react-native-device-info', () => { }; }); +jest.mock('react-native-cookies', () => ({ + addEventListener: jest.fn(), + removeEventListener: jest.fn(), + openURL: jest.fn(), + canOpenURL: jest.fn(), + getInitialURL: jest.fn(), +})); + let logs; let warns; let errors;