fix: Password reset success msg has been shown (#652)

This commit is contained in:
Attiya Ishaque
2022-10-07 11:44:19 +05:00
committed by GitHub
parent 345777cb72
commit 54015223a2
5 changed files with 59 additions and 5 deletions

View File

@@ -35,7 +35,7 @@ import {
import ResetPasswordSuccess from '../reset-password/ResetPasswordSuccess';
import AccountActivationMessage from './AccountActivationMessage';
import {
loginRequest, loginRequestFailure, loginRequestReset, setLoginFormData,
loginRemovePasswordResetBanner, loginRequest, loginRequestFailure, loginRequestReset, setLoginFormData,
} from './data/actions';
import { INVALID_FORM } from './data/constants';
import { loginErrorSelector, loginFormDataSelector, loginRequestSelector } from './data/selectors';
@@ -85,12 +85,21 @@ class LoginPage extends React.Component {
return true;
}
componentWillUnmount() {
if (this.props.resetPassword) {
this.props.loginRemovePasswordResetBanner();
}
}
getEnterPriseLoginURL() {
return getConfig().LMS_BASE_URL + ENTERPRISE_LOGIN_URL;
}
handleSubmit = (e) => {
e.preventDefault();
if (this.props.resetPassword) {
this.props.loginRemovePasswordResetBanner();
}
this.setState({ isSubmitted: true });
const { emailOrUsername, password } = this.state;
const emailValidationError = this.validateEmail(emailOrUsername);
@@ -367,6 +376,7 @@ LoginPage.propTypes = {
loginRequestFailure: PropTypes.func.isRequired,
loginRequestReset: PropTypes.func.isRequired,
setLoginFormData: PropTypes.func.isRequired,
loginRemovePasswordResetBanner: PropTypes.func.isRequired,
loginResult: PropTypes.shape({
redirectUrl: PropTypes.string,
success: PropTypes.bool,
@@ -417,5 +427,6 @@ export default connect(
loginRequestFailure,
loginRequestReset,
setLoginFormData,
loginRemovePasswordResetBanner,
},
)(injectIntl(LoginPage));

View File

@@ -2,6 +2,7 @@ import { AsyncActionType } from '../../data/utils';
export const LOGIN_REQUEST = new AsyncActionType('LOGIN', 'REQUEST');
export const LOGIN_PERSIST_FORM_DATA = 'LOGIN_PERSIST_FORM_DATA';
export const LOGIN_REMOVE_PASSWORD_RESET_BANNER = 'LOGIN_REMOVE_PASSWORD_RESET_BANNER';
// Login
export const loginRequest = creds => ({
@@ -31,3 +32,7 @@ export const setLoginFormData = (formData) => ({
type: LOGIN_PERSIST_FORM_DATA,
payload: { formData },
});
export const loginRemovePasswordResetBanner = () => ({
type: LOGIN_REMOVE_PASSWORD_RESET_BANNER,
});

View File

@@ -1,6 +1,6 @@
import { DEFAULT_STATE, PENDING_STATE } from '../../data/constants';
import { RESET_PASSWORD } from '../../reset-password';
import { LOGIN_PERSIST_FORM_DATA, LOGIN_REQUEST } from './actions';
import { LOGIN_PERSIST_FORM_DATA, LOGIN_REMOVE_PASSWORD_RESET_BANNER, LOGIN_REQUEST } from './actions';
export const defaultState = {
loginError: null,
@@ -49,13 +49,18 @@ const reducer = (state = defaultState, action) => {
const { formData } = action.payload;
return {
...state,
resetPassword: false,
loginFormData: {
...state.loginFormData,
...formData,
},
};
}
case LOGIN_REMOVE_PASSWORD_RESET_BANNER: {
return {
...state,
resetPassword: false,
};
}
default:
return {
...state,

View File

@@ -1,5 +1,5 @@
import {
LOGIN_PERSIST_FORM_DATA,
LOGIN_PERSIST_FORM_DATA, LOGIN_REMOVE_PASSWORD_RESET_BANNER,
} from '../actions';
import reducer from '../reducers';
@@ -38,4 +38,21 @@ describe('login reducer', () => {
},
);
});
it('should set resetPassword', () => {
const state = {
resetPassword: true,
};
const action = {
type: LOGIN_REMOVE_PASSWORD_RESET_BANNER,
};
expect(
reducer(state, action),
).toEqual(
{
resetPassword: false,
},
);
});
});

View File

@@ -13,7 +13,7 @@ import configureStore from 'redux-mock-store';
import { COMPLETE_STATE, PENDING_STATE } from '../../data/constants';
import {
loginRequest, loginRequestFailure, loginRequestReset, setLoginFormData,
loginRemovePasswordResetBanner, loginRequest, loginRequestFailure, loginRequestReset, setLoginFormData,
} from '../data/actions';
import { INTERNAL_SERVER_ERROR } from '../data/constants';
import LoginFailureMessage from '../LoginFailure';
@@ -557,4 +557,20 @@ describe('LoginPage', () => {
expect(loginPage.find('LoginPage').state('emailOrUsername')).toEqual('john_doe');
expect(loginPage.find('LoginPage').state('password')).toEqual('password1');
});
it('should update reset password value when unmount called', () => {
store = mockStore({
...initialState,
login: {
...initialState.login,
resetPassword: true,
},
});
store.dispatch = jest.fn(store.dispatch);
const loginPage = mount(reduxWrapper(<IntlLoginPage {...props} />));
loginPage.unmount();
expect(store.dispatch).toHaveBeenCalledWith(loginRemovePasswordResetBanner());
});
});