#!/usr/bin/env node /** * 模拟飞书上传测试 */ const { exec } = require('child_process'); const path = require('path'); const CONFIG = { scriptDir: __dirname, tempFile: path.join(__dirname, 'test-file.txt'), tempFileV2: path.join(__dirname, 'test-file-v2.txt') }; async function testUpload(targetKey, file) { return new Promise((resolve, reject) => { const uploadScript = path.join(CONFIG.scriptDir, 'scripts/upload-to-qiniu.js'); const cmd = `node "${uploadScript}" upload --file "${file}" --key "${targetKey}" --bucket default`; console.log(`\n📤 测试上传:`); console.log(` 文件:${file}`); console.log(` 目标 key: ${targetKey}`); console.log(` 命令:${cmd}\n`); exec(cmd, (error, stdout, stderr) => { if (error) { console.log('❌ 上传失败:', stderr || error.message); resolve({ success: false, error: stderr || error.message }); } else { console.log('✅ 上传成功:'); console.log(stdout); resolve({ success: true, output: stdout }); } }); }); } async function main() { console.log('═══════════════════════════════════════════════════════════'); console.log('🧪 七牛云覆盖上传测试 - 模拟飞书流程'); console.log('═══════════════════════════════════════════════════════════\n'); const testKey = 'feishu-test/override-file.txt'; // 第一次上传 console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); console.log('第 1 次上传(新增)'); console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); const result1 = await testUpload(testKey, CONFIG.tempFile); if (!result1.success) { console.log('\n❌ 第一次上传失败,测试终止'); process.exit(1); } // 等待 2 秒 await new Promise(r => setTimeout(r, 2000)); // 第二次上传(覆盖) console.log('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); console.log('第 2 次上传(覆盖测试)'); console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); const result2 = await testUpload(testKey, CONFIG.tempFileV2); if (!result2.success) { console.log('\n❌ 覆盖上传失败!'); console.log('问题:scope 参数可能没有包含 key'); process.exit(1); } // 验证内容 console.log('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); console.log('✅ 覆盖上传成功!'); console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n'); console.log('📋 测试总结:'); console.log(' 第 1 次上传:✅ 成功'); console.log(' 第 2 次上传:✅ 成功(已覆盖)'); console.log('\n结论:覆盖上传功能正常工作!'); } main().catch(console.error);