Harden password reset and email send flows
This commit is contained in:
@@ -8,9 +8,11 @@ import { ToastProvider } from './toast';
|
||||
import { I18nProvider } from './i18n/I18nProvider';
|
||||
import { api } from './api';
|
||||
|
||||
const mockNavigate = jest.fn();
|
||||
|
||||
jest.mock('react-router-dom', () => ({
|
||||
...jest.requireActual('react-router-dom'),
|
||||
useNavigate: () => jest.fn(),
|
||||
useNavigate: () => mockNavigate,
|
||||
}));
|
||||
|
||||
const mockedApi = api as jest.Mocked<typeof api>;
|
||||
@@ -43,6 +45,7 @@ describe('LoginPage', () => {
|
||||
window.localStorage.clear();
|
||||
window.sessionStorage.clear();
|
||||
mockedApi.post.mockReset();
|
||||
mockNavigate.mockReset();
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
@@ -67,16 +70,13 @@ describe('LoginPage', () => {
|
||||
expect(window.localStorage.getItem('authTokenPersistence')).toBe('session');
|
||||
});
|
||||
|
||||
it('requests a password reset link for the entered email', async () => {
|
||||
mockedApi.post.mockResolvedValueOnce({ data: {} } as any);
|
||||
|
||||
it('opens the separate forgot-password page with the typed email prefilled', async () => {
|
||||
renderLoginPage();
|
||||
await screen.findByLabelText('Email');
|
||||
|
||||
await userEvent.type(screen.getByLabelText('Email'), 'person@example.com');
|
||||
await userEvent.click(screen.getByRole('button', { name: 'Forgot password?' }));
|
||||
|
||||
await waitFor(() => expect(mockedApi.post).toHaveBeenCalledWith('/auth/request-password-reset', { email: 'person@example.com' }));
|
||||
expect(await screen.findByText('If that account exists, a reset link has been sent.')).toBeTruthy();
|
||||
expect(mockNavigate).toHaveBeenCalledWith('/forgot-password?email=person%40example.com');
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user