import { createAuthProvider, createRandomString, createUser } from './config'; import { describe, expect, it } from 'vitest'; describe('recover', async () => { it('should fail with invalid email', async () => { const authProvider = createAuthProvider(); const user = createUser(); await expect(authProvider.recover(user.email)).rejects.toThrow('iam.error.unauthorized'); }); it('should recover user password', async () => { const authProvider = createAuthProvider(); const user = createUser(); const registerResponse = await authProvider.register(user); expect(registerResponse).toBeDefined(); const activationCode = registerResponse.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); }); });