75 lines
2.7 KiB
TypeScript
75 lines
2.7 KiB
TypeScript
import { sequelize } from '../config/database';
|
|
import { User } from '../models/User';
|
|
import { ApiTokenService } from '../services/apiToken.service';
|
|
|
|
async function testApiTokens() {
|
|
try {
|
|
console.log('🔌 Connecting to database...');
|
|
await sequelize.authenticate();
|
|
console.log('✅ Database connected');
|
|
|
|
const apiTokenService = new ApiTokenService();
|
|
|
|
// 1. Find an admin user
|
|
const adminUser = await User.findOne({ where: { role: 'ADMIN' } });
|
|
if (!adminUser) {
|
|
console.error('❌ No admin user found. Please seed the database first.');
|
|
process.exit(1);
|
|
}
|
|
console.log(`👤 Found Admin User: ${adminUser.email}`);
|
|
|
|
// 2. Create a Token
|
|
console.log('🔑 Creating API Token...');
|
|
const tokenName = 'Test Token ' + Date.now();
|
|
const { token, apiToken } = await apiTokenService.createToken(adminUser.userId, tokenName, 30);
|
|
console.log(`✅ Token Created: ${token}`);
|
|
console.log(` ID: ${apiToken.id}`);
|
|
console.log(` Prefix: ${apiToken.prefix}`);
|
|
|
|
// 3. Verify Token
|
|
console.log('🔍 Verifying Token...');
|
|
const verifiedUser = await apiTokenService.verifyToken(token);
|
|
if (verifiedUser && verifiedUser.userId === adminUser.userId) {
|
|
console.log('✅ Token Verification Successful');
|
|
} else {
|
|
console.error('❌ Token Verification Failed');
|
|
}
|
|
|
|
// 4. List Tokens
|
|
console.log('📋 Listing Tokens...');
|
|
const tokens = await apiTokenService.listTokens(adminUser.userId);
|
|
console.log(`✅ Found ${tokens.length} tokens`);
|
|
const createdToken = tokens.find(t => t.id === apiToken.id);
|
|
if (createdToken) {
|
|
console.log('✅ Created token found in list');
|
|
} else {
|
|
console.error('❌ Created token NOT found in list');
|
|
}
|
|
|
|
// 5. Revoke Token
|
|
console.log('🚫 Revoking Token...');
|
|
const revoked = await apiTokenService.revokeToken(adminUser.userId, apiToken.id);
|
|
if (revoked) {
|
|
console.log('✅ Token Revoked Successfully');
|
|
} else {
|
|
console.error('❌ Token Revocation Failed');
|
|
}
|
|
|
|
// 6. Verify Revocation
|
|
console.log('🔍 Verifying Revoked Token...');
|
|
const revokedUser = await apiTokenService.verifyToken(token);
|
|
if (!revokedUser) {
|
|
console.log('✅ Revoked Token Verification Successful (Access Denied)');
|
|
} else {
|
|
console.error('❌ Revoked Token Verification Failed (Access Granted)');
|
|
}
|
|
|
|
} catch (error) {
|
|
console.error('❌ Test Failed:', error);
|
|
} finally {
|
|
await sequelize.close();
|
|
}
|
|
}
|
|
|
|
testApiTokens();
|