292 lines
8.0 KiB
JavaScript
292 lines
8.0 KiB
JavaScript
const http = require('http');
|
||
|
||
// 测试配置
|
||
const BASE_URL = 'http://localhost:5351';
|
||
let authToken = '';
|
||
|
||
// 辅助函数:发送HTTP请求
|
||
function makeRequest(options, data = null) {
|
||
return new Promise((resolve, reject) => {
|
||
const req = http.request(options, (res) => {
|
||
let body = '';
|
||
res.on('data', (chunk) => {
|
||
body += chunk;
|
||
});
|
||
res.on('end', () => {
|
||
try {
|
||
const result = JSON.parse(body);
|
||
resolve({ status: res.statusCode, data: result });
|
||
} catch (error) {
|
||
resolve({ status: res.statusCode, data: body });
|
||
}
|
||
});
|
||
});
|
||
|
||
req.on('error', (error) => {
|
||
reject(error);
|
||
});
|
||
|
||
if (data) {
|
||
req.write(JSON.stringify(data));
|
||
}
|
||
req.end();
|
||
});
|
||
}
|
||
|
||
// 测试登录
|
||
async function testLogin() {
|
||
console.log('🔐 测试登录...');
|
||
try {
|
||
const options = {
|
||
hostname: 'localhost',
|
||
port: 5351,
|
||
path: '/api/auth/login',
|
||
method: 'POST',
|
||
headers: {
|
||
'Content-Type': 'application/json'
|
||
}
|
||
};
|
||
|
||
const result = await makeRequest(options, {
|
||
username: 'admin',
|
||
password: 'Admin123456'
|
||
});
|
||
|
||
if (result.status === 200 && result.data.success) {
|
||
authToken = result.data.data.token;
|
||
console.log('✅ 登录成功');
|
||
return true;
|
||
} else {
|
||
console.log('❌ 登录失败:', result.data.message);
|
||
return false;
|
||
}
|
||
} catch (error) {
|
||
console.log('❌ 登录请求失败:', error.message);
|
||
return false;
|
||
}
|
||
}
|
||
|
||
// 测试仪表盘统计
|
||
async function testDashboardStats() {
|
||
console.log('📊 测试仪表盘统计...');
|
||
try {
|
||
const options = {
|
||
hostname: 'localhost',
|
||
port: 5351,
|
||
path: '/api/dashboard',
|
||
method: 'GET',
|
||
headers: {
|
||
'Authorization': `Bearer ${authToken}`
|
||
}
|
||
};
|
||
|
||
const result = await makeRequest(options);
|
||
if (result.status === 200 && result.data.success) {
|
||
console.log('✅ 仪表盘统计获取成功');
|
||
console.log(' - 总用户数:', result.data.data.overview?.totalUsers || 0);
|
||
console.log(' - 总账户数:', result.data.data.overview?.totalAccounts || 0);
|
||
console.log(' - 今日交易数:', result.data.data.today?.transactionCount || 0);
|
||
return true;
|
||
} else {
|
||
console.log('❌ 仪表盘统计获取失败:', result.data.message);
|
||
return false;
|
||
}
|
||
} catch (error) {
|
||
console.log('❌ 仪表盘统计请求失败:', error.message);
|
||
return false;
|
||
}
|
||
}
|
||
|
||
// 测试用户列表
|
||
async function testUsersList() {
|
||
console.log('👥 测试用户列表...');
|
||
try {
|
||
const options = {
|
||
hostname: 'localhost',
|
||
port: 5351,
|
||
path: '/api/users?page=1&pageSize=10',
|
||
method: 'GET',
|
||
headers: {
|
||
'Authorization': `Bearer ${authToken}`
|
||
}
|
||
};
|
||
|
||
const result = await makeRequest(options);
|
||
if (result.status === 200 && result.data.success) {
|
||
console.log('✅ 用户列表获取成功');
|
||
console.log(' - 用户数量:', result.data.data.users?.length || 0);
|
||
console.log(' - 分页信息:', result.data.data.pagination);
|
||
return true;
|
||
} else {
|
||
console.log('❌ 用户列表获取失败:', result.data.message);
|
||
return false;
|
||
}
|
||
} catch (error) {
|
||
console.log('❌ 用户列表请求失败:', error.message);
|
||
return false;
|
||
}
|
||
}
|
||
|
||
// 测试账户列表
|
||
async function testAccountsList() {
|
||
console.log('🏦 测试账户列表...');
|
||
try {
|
||
const options = {
|
||
hostname: 'localhost',
|
||
port: 5351,
|
||
path: '/api/accounts?page=1&pageSize=10',
|
||
method: 'GET',
|
||
headers: {
|
||
'Authorization': `Bearer ${authToken}`
|
||
}
|
||
};
|
||
|
||
const result = await makeRequest(options);
|
||
if (result.status === 200 && result.data.success) {
|
||
console.log('✅ 账户列表获取成功');
|
||
console.log(' - 账户数量:', result.data.data.accounts?.length || 0);
|
||
console.log(' - 分页信息:', result.data.data.pagination);
|
||
return true;
|
||
} else {
|
||
console.log('❌ 账户列表获取失败:', result.data.message);
|
||
return false;
|
||
}
|
||
} catch (error) {
|
||
console.log('❌ 账户列表请求失败:', error.message);
|
||
return false;
|
||
}
|
||
}
|
||
|
||
// 测试交易记录列表
|
||
async function testTransactionsList() {
|
||
console.log('💳 测试交易记录列表...');
|
||
try {
|
||
const options = {
|
||
hostname: 'localhost',
|
||
port: 5351,
|
||
path: '/api/transactions?page=1&pageSize=10',
|
||
method: 'GET',
|
||
headers: {
|
||
'Authorization': `Bearer ${authToken}`
|
||
}
|
||
};
|
||
|
||
const result = await makeRequest(options);
|
||
if (result.status === 200 && result.data.success) {
|
||
console.log('✅ 交易记录列表获取成功');
|
||
console.log(' - 交易数量:', result.data.data.transactions?.length || 0);
|
||
console.log(' - 分页信息:', result.data.data.pagination);
|
||
return true;
|
||
} else {
|
||
console.log('❌ 交易记录列表获取失败:', result.data.message);
|
||
return false;
|
||
}
|
||
} catch (error) {
|
||
console.log('❌ 交易记录列表请求失败:', error.message);
|
||
return false;
|
||
}
|
||
}
|
||
|
||
// 测试员工列表
|
||
async function testEmployeesList() {
|
||
console.log('👨💼 测试员工列表...');
|
||
try {
|
||
const options = {
|
||
hostname: 'localhost',
|
||
port: 5351,
|
||
path: '/api/employees?page=1&pageSize=10',
|
||
method: 'GET',
|
||
headers: {
|
||
'Authorization': `Bearer ${authToken}`
|
||
}
|
||
};
|
||
|
||
const result = await makeRequest(options);
|
||
if (result.status === 200 && result.data.success) {
|
||
console.log('✅ 员工列表获取成功');
|
||
console.log(' - 员工数量:', result.data.data.employees?.length || 0);
|
||
console.log(' - 分页信息:', result.data.data.pagination);
|
||
return true;
|
||
} else {
|
||
console.log('❌ 员工列表获取失败:', result.data.message);
|
||
return false;
|
||
}
|
||
} catch (error) {
|
||
console.log('❌ 员工列表请求失败:', error.message);
|
||
return false;
|
||
}
|
||
}
|
||
|
||
// 测试贷款产品列表
|
||
async function testLoanProductsList() {
|
||
console.log('💰 测试贷款产品列表...');
|
||
try {
|
||
const options = {
|
||
hostname: 'localhost',
|
||
port: 5351,
|
||
path: '/api/loan-products?page=1&pageSize=10',
|
||
method: 'GET',
|
||
headers: {
|
||
'Authorization': `Bearer ${authToken}`
|
||
}
|
||
};
|
||
|
||
const result = await makeRequest(options);
|
||
if (result.status === 200 && result.data.success) {
|
||
console.log('✅ 贷款产品列表获取成功');
|
||
console.log(' - 产品数量:', result.data.data.products?.length || 0);
|
||
console.log(' - 分页信息:', result.data.data.pagination);
|
||
return true;
|
||
} else {
|
||
console.log('❌ 贷款产品列表获取失败:', result.data.message);
|
||
return false;
|
||
}
|
||
} catch (error) {
|
||
console.log('❌ 贷款产品列表请求失败:', error.message);
|
||
return false;
|
||
}
|
||
}
|
||
|
||
// 主测试函数
|
||
async function runTests() {
|
||
console.log('🚀 开始API集成测试...\n');
|
||
|
||
const tests = [
|
||
{ name: '登录', fn: testLogin },
|
||
{ name: '仪表盘统计', fn: testDashboardStats },
|
||
{ name: '用户列表', fn: testUsersList },
|
||
{ name: '账户列表', fn: testAccountsList },
|
||
{ name: '交易记录列表', fn: testTransactionsList },
|
||
{ name: '员工列表', fn: testEmployeesList },
|
||
{ name: '贷款产品列表', fn: testLoanProductsList }
|
||
];
|
||
|
||
let passed = 0;
|
||
let total = tests.length;
|
||
|
||
for (const test of tests) {
|
||
try {
|
||
const success = await test.fn();
|
||
if (success) {
|
||
passed++;
|
||
}
|
||
} catch (error) {
|
||
console.log(`❌ ${test.name}测试异常:`, error.message);
|
||
}
|
||
console.log(''); // 空行分隔
|
||
}
|
||
|
||
console.log('📋 测试结果汇总:');
|
||
console.log(`✅ 通过: ${passed}/${total}`);
|
||
console.log(`❌ 失败: ${total - passed}/${total}`);
|
||
|
||
if (passed === total) {
|
||
console.log('🎉 所有测试通过!API集成正常');
|
||
} else {
|
||
console.log('⚠️ 部分测试失败,请检查相关API接口');
|
||
}
|
||
}
|
||
|
||
// 运行测试
|
||
runTests().catch(console.error);
|