95 lines
3.0 KiB
JavaScript
95 lines
3.0 KiB
JavaScript
const { sequelize } = require('./config/database');
|
|
const jwt = require('jsonwebtoken');
|
|
require('dotenv').config();
|
|
|
|
// 测试数据库连接
|
|
async function testDatabaseConnection() {
|
|
try {
|
|
console.log('\n=== 测试数据库连接 ===');
|
|
console.log('使用配置:');
|
|
console.log(`- 主机: ${process.env.DB_HOST || '默认值'}`);
|
|
console.log(`- 端口: ${process.env.DB_PORT || '默认值'}`);
|
|
console.log(`- 数据库: ${process.env.DB_DATABASE || process.env.DB_NAME || '默认值'}`);
|
|
console.log(`- 用户名: ${process.env.DB_USER || '默认值'}`);
|
|
console.log(`- 密码: ${process.env.DB_PASSWORD ? '已设置 (不显示)' : '未设置'}`);
|
|
|
|
await sequelize.authenticate();
|
|
console.log('✅ 数据库连接成功!');
|
|
return true;
|
|
} catch (error) {
|
|
console.error('❌ 数据库连接失败:', error.message);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// 测试JWT配置
|
|
function testJWTConfig() {
|
|
try {
|
|
console.log('\n=== 测试JWT配置 ===');
|
|
console.log(`- JWT_SECRET: ${process.env.JWT_SECRET ? '已设置 (长度: ' + process.env.JWT_SECRET.length + ')' : '未设置'}`);
|
|
console.log(`- JWT_EXPIRE: ${process.env.JWT_EXPIRE || '默认值'}`);
|
|
|
|
if (!process.env.JWT_SECRET) {
|
|
console.error('❌ JWT_SECRET未设置!');
|
|
return false;
|
|
}
|
|
|
|
// 尝试生成并验证令牌
|
|
const testPayload = { test: 'data' };
|
|
const token = jwt.sign(testPayload, process.env.JWT_SECRET, { expiresIn: '1h' });
|
|
const decoded = jwt.verify(token, process.env.JWT_SECRET);
|
|
|
|
console.log('✅ JWT配置有效!');
|
|
return true;
|
|
} catch (error) {
|
|
console.error('❌ JWT配置错误:', error.message);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// 测试模型导入
|
|
async function testModels() {
|
|
try {
|
|
console.log('\n=== 测试模型导入 ===');
|
|
const { User, Role } = require('./models');
|
|
console.log('✅ 用户模型导入成功');
|
|
console.log('✅ 角色模型导入成功');
|
|
|
|
// 尝试查询用户表结构
|
|
const userAttributes = User.rawAttributes;
|
|
console.log(`✅ 用户表有 ${Object.keys(userAttributes).length} 个字段`);
|
|
|
|
return true;
|
|
} catch (error) {
|
|
console.error('❌ 模型导入错误:', error.message);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// 运行所有测试
|
|
async function runTests() {
|
|
console.log('\n开始测试认证相关配置...');
|
|
|
|
const dbResult = await testDatabaseConnection();
|
|
const jwtResult = testJWTConfig();
|
|
const modelsResult = await testModels();
|
|
|
|
console.log('\n=== 测试总结 ===');
|
|
console.log(`数据库连接: ${dbResult ? '通过' : '失败'}`);
|
|
console.log(`JWT配置: ${jwtResult ? '通过' : '失败'}`);
|
|
console.log(`模型导入: ${modelsResult ? '通过' : '失败'}`);
|
|
|
|
if (dbResult && jwtResult && modelsResult) {
|
|
console.log('✅ 所有测试通过!');
|
|
} else {
|
|
console.error('❌ 测试失败,请检查上述错误!');
|
|
}
|
|
|
|
// 关闭数据库连接
|
|
await sequelize.close();
|
|
}
|
|
|
|
// 运行测试
|
|
runTests().catch(error => {
|
|
console.error('测试过程中出现未捕获错误:', error);
|
|
}); |