Skip to content

Commit dc26e82

Browse files
authored
Add reset password helper (#1668)
Part of OPS-3123.
1 parent 7f444d1 commit dc26e82

File tree

3 files changed

+65
-0
lines changed

3 files changed

+65
-0
lines changed

packages/openops/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ export * from './lib/openops-tables/fields';
4444
export * from './lib/openops-tables/filters';
4545
export * from './lib/openops-tables/openops-tables-common-properties';
4646
export * from './lib/openops-tables/requests-helpers';
47+
export * from './lib/openops-tables/reset-user-password';
4748
export * from './lib/openops-tables/rows';
4849
export * from './lib/openops-tables/tables';
4950
export * from './lib/openops-tables/types';
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { createAxiosHeaders } from './create-axios-headers';
2+
import { makeOpenOpsTablesPatch } from './requests-helpers';
3+
4+
export async function resetUserPassword(
5+
email: string,
6+
password: string,
7+
token: string,
8+
): Promise<void> {
9+
const payload = {
10+
username: email,
11+
password,
12+
};
13+
14+
const headers = createAxiosHeaders(token);
15+
16+
await makeOpenOpsTablesPatch<void>('api/admin/users/', payload, headers);
17+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
const makeOpenOpsTablesPatchMock = jest.fn();
2+
const createAxiosHeadersMock = jest.fn();
3+
4+
jest.mock('../../src/lib/openops-tables/requests-helpers', () => {
5+
return {
6+
makeOpenOpsTablesPatch: makeOpenOpsTablesPatchMock,
7+
};
8+
});
9+
10+
jest.mock('../../src/lib/openops-tables/create-axios-headers', () => ({
11+
createAxiosHeaders: createAxiosHeadersMock,
12+
}));
13+
14+
import { resetUserPassword } from '../../src/lib/openops-tables/reset-user-password';
15+
16+
describe('resetUserPassword', () => {
17+
beforeEach(() => {
18+
jest.clearAllMocks();
19+
});
20+
21+
it('should call patch with correct params', async () => {
22+
createAxiosHeadersMock.mockReturnValue('headers');
23+
makeOpenOpsTablesPatchMock.mockResolvedValue(undefined);
24+
25+
await resetUserPassword('[email protected]', 'pass123', 'token');
26+
27+
expect(createAxiosHeadersMock).toHaveBeenCalledTimes(1);
28+
expect(createAxiosHeadersMock).toHaveBeenCalledWith('token');
29+
expect(makeOpenOpsTablesPatchMock).toHaveBeenCalledTimes(1);
30+
expect(makeOpenOpsTablesPatchMock).toHaveBeenCalledWith(
31+
'api/admin/users/',
32+
{ username: '[email protected]', password: 'pass123' },
33+
'headers',
34+
);
35+
});
36+
37+
it('should propagate errors from patch', async () => {
38+
createAxiosHeadersMock.mockReturnValue('headers');
39+
makeOpenOpsTablesPatchMock.mockRejectedValue(new Error('fail'));
40+
41+
await expect(
42+
resetUserPassword('[email protected]', 'pass123', 'token'),
43+
).rejects.toThrow('fail');
44+
45+
expect(makeOpenOpsTablesPatchMock).toHaveBeenCalledTimes(1);
46+
});
47+
});

0 commit comments

Comments
 (0)