53 lines
1.7 KiB
JavaScript
53 lines
1.7 KiB
JavaScript
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!');
|