import { createAuthProvider, createRandomString, createUser } from './config'; import { describe, expect, it } from 'vitest'; describe('pinLogin', async () => { it('should work', async () => { const authProvider = createAuthProvider(); const user = createUser(); const response = await authProvider.register(user); expect(response).toBeDefined(); expect(response?.userId).toBeDefined(); const activationCode = response.userId.substring(0, 6); const activateResponse = await authProvider.activate(activationCode); expect(activateResponse).toBeDefined(); const randomPin = createRandomString(5); console.log('=== PIN Login Test Debug ==='); console.log('User ID:', response.userId); console.log('Random PIN:', randomPin); await authProvider.login({ username: 'admin@applica.guru', password: 'applica' }); const resetPinResponse = await authProvider.resetPin(response.userId, randomPin); console.log('Reset PIN response:', resetPinResponse); await authProvider.logout(); const randomDeviceCode = createRandomString(10); const device = await authProvider.registerDevice(randomDeviceCode); console.log('Device code:', randomDeviceCode); console.log('Device secret:', device?.secret); expect(device).toBeDefined(); expect(device?.secret).toBeDefined(); try { const pinLoginResponse = await authProvider.pinLogin(randomDeviceCode, randomPin); console.log('Pin login response:', pinLoginResponse); expect(pinLoginResponse).toBeDefined(); expect(pinLoginResponse?.user).toBeDefined(); } catch (error) { console.error('Pin login failed:', error); throw error; } console.log('=== End Debug ==='); }); it('should register device and execute login with pin', async () => { const authProvider = createAuthProvider(); const deviceCode = createRandomString(10); const user = createUser(); const response = await authProvider.register(user); expect(response).toBeDefined(); expect(response?.userId).toBeDefined(); const randomPin = Math.random().toString(36).substring(7); await authProvider.login({ username: 'admin@applica.guru', password: 'applica' }); await authProvider.resetPin(response.userId, randomPin); // Register device before attempting pin login const device = await authProvider.registerDevice(deviceCode); expect(device).toBeDefined(); expect(device?.secret).toBeDefined(); await authProvider.logout(); const pinLoginResponse = await authProvider.pinLogin(deviceCode, randomPin); expect(pinLoginResponse).toBeDefined(); expect(pinLoginResponse?.user).toBeDefined(); }); });