const { initTokenManager, generateAccessToken, verifyAccessToken, generateRefreshToken, verifyRefreshToken, generateDeviceFingerprint } = require('./src/utils/tokenManager'); const crypto = require('crypto'); // Initialize const secret = crypto.randomBytes(32).toString('hex'); initTokenManager(secret); console.log('šŸ”‘ Testing Token Manager...\n'); // Test 1: Access token generation and verification const payload = { userId: 'user123', email: 'test@example.com', role: 'user', plan: 'professional' }; const accessToken = generateAccessToken(payload); const decoded = verifyAccessToken(accessToken); console.log('Test 1: Access Token'); console.log(' Token:', accessToken.substring(0, 50) + '...'); console.log(' User ID:', decoded.userId); console.log(' Email:', decoded.email); console.log(' Valid:', decoded.userId === payload.userId ? 'āœ…' : 'āŒ'); // Test 2: Refresh token const { token, tokenHash } = generateRefreshToken(); const isValid = verifyRefreshToken(token, tokenHash); const isInvalid = verifyRefreshToken('wrongtoken', tokenHash); console.log('\nTest 2: Refresh Token'); console.log(' Token:', token.substring(0, 30) + '...'); console.log(' Hash:', tokenHash.substring(0, 30) + '...'); console.log(' Valid verification:', isValid ? 'āœ…' : 'āŒ'); console.log(' Invalid verification:', !isInvalid ? 'āœ…' : 'āŒ'); // Test 3: Device fingerprint const mockReq = { headers: { 'user-agent': 'Mozilla/5.0', 'accept-language': 'en-US' }, ip: '127.0.0.1' }; const fingerprint = generateDeviceFingerprint(mockReq); console.log('\nTest 3: Device Fingerprint'); console.log(' Fingerprint:', fingerprint); console.log(' Length correct:', fingerprint.length === 32 ? 'āœ…' : 'āŒ'); console.log('\nāœ… All token tests passed!');