import { createAuthProvider, createRandomString, createUser } from './config'; import { describe, expect, it } from 'vitest'; describe('changePassword', async () => { it('should fail changing password because not active', async () => { const authProvider = createAuthProvider(); const user = createUser(); const response = await authProvider.register(user); expect(response).toBeDefined(); await expect(authProvider.changePassword(user.password, createRandomString(10))).rejects.toThrow( 'iam.error.unauthorized' ); }); it('should fail when password not match', async () => { const authProvider = createAuthProvider(); const user = createUser(); const response = await authProvider.register(user); const activationCode = response.userId.substring(0, 6); await authProvider.activate(activationCode); const loginResponse = await authProvider.login({ username: user.email, password: user.password }); expect(loginResponse).toBeDefined(); expect(loginResponse?.user).toBeDefined(); await expect(authProvider.changePassword(createRandomString(5), createRandomString(10))).rejects.toThrow( 'iam.error.unauthorized' ); }); it('should change user password', async () => { const authProvider = createAuthProvider(); const user = createUser(); const response = await authProvider.register(user); expect(response).toBeDefined(); const activationCode = response.userId.substring(0, 6); const activateResponse = await authProvider.activate(activationCode); expect(activateResponse).toBeDefined(); const recoverPasswordResponse = await authProvider.recover(user?.email); expect(recoverPasswordResponse).toBeDefined(); expect(recoverPasswordResponse?.newPassword).toBeDefined(); let loginResponse = await authProvider.login({ username: user?.email, password: recoverPasswordResponse?.newPassword || '' }); expect(loginResponse).toBeDefined(); expect(loginResponse?.user).toBeDefined(); expect(loginResponse?.user?.needToChangePassword).toBe(true); const newPassword = createRandomString(10); const changePasswordResponse = await authProvider.changePassword( recoverPasswordResponse?.newPassword || '', newPassword ); expect(changePasswordResponse).toBeDefined(); await authProvider.logout(); loginResponse = await authProvider.login({ username: user?.email, password: newPassword }); expect(loginResponse).toBeDefined(); expect(loginResponse?.user).toBeDefined(); expect(loginResponse?.user?.needToChangePassword).toBe(false); }); });