77 lines
2.5 KiB
TypeScript
77 lines
2.5 KiB
TypeScript
#!/usr/bin/env ts-node
|
|
|
|
import jwt from 'jsonwebtoken';
|
|
|
|
/**
|
|
* Generate test JWT tokens for API testing
|
|
* Usage: npx ts-node scripts/generate-test-token.ts [free|premium]
|
|
*/
|
|
|
|
const tier = process.argv[2] || 'free';
|
|
const isPremium = tier.toLowerCase() === 'premium';
|
|
|
|
const freeToken = jwt.sign(
|
|
{
|
|
sub: 'test-free-user-001',
|
|
email: 'free-user@test.com',
|
|
preferred_username: 'freeuser',
|
|
name: 'Free User',
|
|
realm_access: { roles: [] },
|
|
},
|
|
'test-secret',
|
|
{ expiresIn: '24h' }
|
|
);
|
|
|
|
const premiumToken = jwt.sign(
|
|
{
|
|
sub: 'test-premium-user-001',
|
|
email: 'premium-user@test.com',
|
|
preferred_username: 'premiumuser',
|
|
name: 'Premium User',
|
|
realm_access: { roles: ['premium-user'] },
|
|
},
|
|
'test-secret',
|
|
{ expiresIn: '24h' }
|
|
);
|
|
|
|
console.log('\n=================================================');
|
|
console.log('🔑 Test JWT Tokens Generated');
|
|
console.log('=================================================\n');
|
|
|
|
if (tier.toLowerCase() === 'both' || !isPremium) {
|
|
console.log('📝 FREE User Token:');
|
|
console.log('---------------------------------------------------');
|
|
console.log(freeToken);
|
|
console.log('---------------------------------------------------');
|
|
console.log('User: free-user@test.com');
|
|
console.log('Tier: FREE');
|
|
console.log('Max File Size: 15MB');
|
|
console.log('Valid for: 24 hours\n');
|
|
}
|
|
|
|
if (tier.toLowerCase() === 'both' || isPremium) {
|
|
console.log('💎 PREMIUM User Token:');
|
|
console.log('---------------------------------------------------');
|
|
console.log(premiumToken);
|
|
console.log('---------------------------------------------------');
|
|
console.log('User: premium-user@test.com');
|
|
console.log('Tier: PREMIUM');
|
|
console.log('Max File Size: 200MB');
|
|
console.log('Valid for: 24 hours\n');
|
|
}
|
|
|
|
console.log('=================================================');
|
|
console.log('Usage in cURL:');
|
|
console.log('---------------------------------------------------');
|
|
console.log('curl -H "Authorization: Bearer YOUR_TOKEN" \\');
|
|
console.log(' http://localhost:4000/api/v1/user/profile');
|
|
console.log('=================================================\n');
|
|
|
|
console.log('Usage in Swagger UI:');
|
|
console.log('---------------------------------------------------');
|
|
console.log('1. Go to http://localhost:4000/docs');
|
|
console.log('2. Click "Authorize" button');
|
|
console.log('3. Paste token (include "Bearer " prefix)');
|
|
console.log('4. Click "Authorize"');
|
|
console.log('=================================================\n');
|