Files
nxxmdata/test-auth.js

150 lines
4.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const axios = require('axios');
// 设置axios实例
const api = axios.create({
baseURL: 'http://localhost:5352/api',
timeout: 5000
});
// 登录凭证
const credentials = {
username: 'admin',
password: '123456'
};
// 存储登录后的token
let authToken = null;
console.log('开始测试政府管理系统登录和退出功能');
console.log('======================================');
// 测试登录功能
async function testLogin() {
console.log('\n1. 测试登录功能');
try {
const response = await api.post('/auth/login', credentials);
console.log('登录请求状态码:', response.status);
console.log('登录响应数据:', response.data);
if (response.status === 200 && response.data.code === 200 && response.data.data.token) {
authToken = response.data.data.token;
console.log('✅ 登录成功已获取token');
return true;
} else {
console.log('❌ 登录失败:', response.data.message || '未知错误');
return false;
}
} catch (error) {
console.log('❌ 登录请求失败:', error.message);
return false;
}
}
// 测试获取用户信息功能
async function testUserInfo() {
if (!authToken) {
console.log('\n2. 测试获取用户信息功能 - 跳过,未登录');
return false;
}
console.log('\n2. 测试获取用户信息功能');
try {
const response = await api.get('/auth/userinfo', {
headers: {
'Authorization': `Bearer ${authToken}`
}
});
console.log('用户信息请求状态码:', response.status);
console.log('用户信息响应数据:', response.data);
if (response.status === 200 && response.data.code === 200) {
console.log('✅ 获取用户信息成功');
console.log(' 用户名:', response.data.data.username);
console.log(' 角色:', response.data.data.role);
console.log(' 姓名:', response.data.data.name);
return true;
} else {
console.log('❌ 获取用户信息失败:', response.data.message || '未知错误');
return false;
}
} catch (error) {
console.log('❌ 获取用户信息请求失败:');
if (error.response) {
console.log(' 状态码:', error.response.status);
console.log(' 响应数据:', error.response.data);
} else {
console.log(' 错误信息:', error.message);
}
return false;
}
}
// 测试退出登录功能
async function testLogout() {
if (!authToken) {
console.log('\n3. 测试退出登录功能 - 跳过,未登录');
return false;
}
console.log('\n3. 测试退出登录功能');
try {
const response = await api.post('/auth/logout', {}, {
headers: {
'Authorization': `Bearer ${authToken}`
}
});
console.log('退出登录请求状态码:', response.status);
console.log('退出登录响应数据:', response.data);
if (response.status === 200 && response.data.code === 200) {
console.log('✅ 退出登录成功');
// 验证token是否失效
try {
const checkResponse = await api.get('/auth/userinfo', {
headers: {
'Authorization': `Bearer ${authToken}`
}
});
console.log('❌ 退出登录后token仍然有效这可能是一个安全问题');
} catch (checkError) {
console.log('✅ 退出登录后token已失效符合预期');
}
return true;
} else {
console.log('❌ 退出登录失败:', response.data.message || '未知错误');
return false;
}
} catch (error) {
console.log('❌ 退出登录请求失败:');
if (error.response) {
console.log(' 状态码:', error.response.status);
console.log(' 响应数据:', error.response.data);
} else {
console.log(' 错误信息:', error.message);
}
return false;
}
}
// 运行完整测试
async function runTests() {
const loginSuccess = await testLogin();
const userInfoSuccess = loginSuccess ? await testUserInfo() : false;
const logoutSuccess = loginSuccess ? await testLogout() : false;
console.log('\n测试总结');
console.log('==========');
console.log('登录功能测试:', loginSuccess ? '通过 ✅' : '失败 ❌');
console.log('获取用户信息测试:', userInfoSuccess ? '通过 ✅' : '失败 ❌');
console.log('退出登录功能测试:', logoutSuccess ? '通过 ✅' : '失败 ❌');
if (loginSuccess && userInfoSuccess && logoutSuccess) {
console.log('\n🎉 所有测试通过!登录和退出登录功能正常工作。');
console.log('建议前端检查路由跳转和页面渲染逻辑,确保登录成功后能正确跳转到主页。');
} else {
console.log('\n❌ 部分测试失败,需要进一步排查问题。');
}
}
// 开始测试
runTests();