198 lines
5.2 KiB
JavaScript
198 lines
5.2 KiB
JavaScript
const PixivBackend = require('./core');
|
|
const proxyConfig = require('./config');
|
|
const readline = require('readline');
|
|
|
|
// 创建命令行交互接口
|
|
const rl = readline.createInterface({
|
|
input: process.stdin,
|
|
output: process.stdout
|
|
});
|
|
|
|
// 询问用户输入
|
|
function askQuestion(question) {
|
|
return new Promise((resolve) => {
|
|
rl.question(question, (answer) => {
|
|
resolve(answer);
|
|
});
|
|
});
|
|
}
|
|
|
|
// 测试登录流程
|
|
async function testLogin() {
|
|
console.log('=== Pixiv 登录测试脚本 ===\n');
|
|
|
|
try {
|
|
// 1. 设置代理环境变量
|
|
console.log('1. 设置代理配置...');
|
|
proxyConfig.setEnvironmentVariables();
|
|
|
|
// 2. 初始化后端
|
|
console.log('\n2. 初始化 Pixiv 后端...');
|
|
const backend = new PixivBackend();
|
|
await backend.init();
|
|
|
|
// 3. 检查登录状态
|
|
console.log('\n3. 检查当前登录状态...');
|
|
const loginStatus = backend.getLoginStatus();
|
|
console.log('登录状态:', loginStatus);
|
|
|
|
if (loginStatus.isLoggedIn) {
|
|
console.log('✅ 已登录,用户:', loginStatus.username);
|
|
return;
|
|
}
|
|
|
|
// 4. 获取登录URL
|
|
console.log('\n4. 获取登录URL...');
|
|
const loginData = backend.getLoginUrl();
|
|
console.log('请访问以下URL进行登录:');
|
|
console.log(loginData.login_url);
|
|
console.log('\n登录完成后,请复制回调URL中的code参数');
|
|
|
|
// 5. 等待用户输入授权码
|
|
const code = await askQuestion('\n请输入授权码 (code参数): ');
|
|
|
|
if (!code || code.trim() === '') {
|
|
console.log('❌ 未输入授权码,测试终止');
|
|
return;
|
|
}
|
|
|
|
// 6. 处理登录回调
|
|
console.log('\n5. 处理登录回调...');
|
|
const loginResult = await backend.handleLoginCallback(code.trim());
|
|
|
|
if (loginResult.success) {
|
|
console.log('✅ 登录成功!');
|
|
console.log('用户信息:', loginResult.user);
|
|
|
|
// 7. 再次检查登录状态
|
|
console.log('\n6. 验证登录状态...');
|
|
const finalStatus = backend.getLoginStatus();
|
|
console.log('最终登录状态:', finalStatus);
|
|
|
|
// 8. 测试获取用户信息
|
|
console.log('\n7. 测试获取用户信息...');
|
|
const auth = backend.getAuth();
|
|
const userInfo = await auth.getUserInfo();
|
|
|
|
if (userInfo.success) {
|
|
console.log('✅ 获取用户信息成功:', userInfo.user);
|
|
} else {
|
|
console.log('❌ 获取用户信息失败:', userInfo.error);
|
|
}
|
|
|
|
} else {
|
|
console.log('❌ 登录失败:', loginResult.error);
|
|
}
|
|
|
|
} catch (error) {
|
|
console.error('❌ 测试过程中发生错误:', error.message);
|
|
console.error('错误详情:', error);
|
|
} finally {
|
|
// 清理资源
|
|
rl.close();
|
|
console.log('\n=== 测试完成 ===');
|
|
}
|
|
}
|
|
|
|
// 测试重新登录功能
|
|
async function testRelogin() {
|
|
console.log('=== 测试重新登录功能 ===\n');
|
|
|
|
try {
|
|
// 设置代理
|
|
proxyConfig.setEnvironmentVariables();
|
|
|
|
// 初始化后端
|
|
const backend = new PixivBackend();
|
|
await backend.init();
|
|
|
|
// 检查是否有保存的登录信息
|
|
const loginStatus = backend.getLoginStatus();
|
|
|
|
if (loginStatus.isLoggedIn) {
|
|
console.log('✅ 检测到已保存的登录信息');
|
|
console.log('用户:', loginStatus.username);
|
|
console.log('用户ID:', loginStatus.user_id);
|
|
} else {
|
|
console.log('❌ 没有保存的登录信息,无法测试重新登录');
|
|
}
|
|
|
|
} catch (error) {
|
|
console.error('❌ 重新登录测试失败:', error.message);
|
|
}
|
|
}
|
|
|
|
// 测试登出功能
|
|
async function testLogout() {
|
|
console.log('=== 测试登出功能 ===\n');
|
|
|
|
try {
|
|
// 设置代理
|
|
proxyConfig.setEnvironmentVariables();
|
|
|
|
// 初始化后端
|
|
const backend = new PixivBackend();
|
|
await backend.init();
|
|
|
|
// 执行登出
|
|
const logoutResult = backend.logout();
|
|
|
|
if (logoutResult.success) {
|
|
console.log('✅ 登出成功');
|
|
|
|
// 验证登出状态
|
|
const loginStatus = backend.getLoginStatus();
|
|
console.log('登出后状态:', loginStatus);
|
|
} else {
|
|
console.log('❌ 登出失败');
|
|
}
|
|
|
|
} catch (error) {
|
|
console.error('❌ 登出测试失败:', error.message);
|
|
}
|
|
}
|
|
|
|
// 主函数
|
|
async function main() {
|
|
console.log('请选择测试功能:');
|
|
console.log('1. 测试完整登录流程');
|
|
console.log('2. 测试重新登录');
|
|
console.log('3. 测试登出');
|
|
console.log('4. 运行所有测试');
|
|
|
|
const choice = await askQuestion('\n请输入选择 (1-4): ');
|
|
|
|
switch (choice.trim()) {
|
|
case '1':
|
|
await testLogin();
|
|
break;
|
|
case '2':
|
|
await testRelogin();
|
|
break;
|
|
case '3':
|
|
await testLogout();
|
|
break;
|
|
case '4':
|
|
console.log('\n=== 运行所有测试 ===\n');
|
|
await testLogin();
|
|
console.log('\n' + '='.repeat(50) + '\n');
|
|
await testRelogin();
|
|
console.log('\n' + '='.repeat(50) + '\n');
|
|
await testLogout();
|
|
break;
|
|
default:
|
|
console.log('❌ 无效选择');
|
|
rl.close();
|
|
}
|
|
}
|
|
|
|
// 如果直接运行此脚本
|
|
if (require.main === module) {
|
|
main().catch(console.error);
|
|
}
|
|
|
|
module.exports = {
|
|
testLogin,
|
|
testRelogin,
|
|
testLogout
|
|
};
|