winupdate-neo/test-file-operations.ts
2025-06-28 15:16:06 +08:00

85 lines
2.8 KiB
TypeScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bun
import { storeFile, getFileByObjectName, deleteFile, getStorageStats } from './lib/fileStorage'
async function testMinIOFileOperations() {
console.log('🚀 开始测试 MinIO 文件操作...')
try {
// 测试截图文件上传
console.log('\n📤 测试截图文件上传...')
const testImageData = Buffer.from('fake image data for testing')
const storedScreenshot = await storeFile(
testImageData,
'test-screenshot.webp',
'image/webp',
'screenshot',
'test-hostname'
)
console.log('✅ 截图上传成功:', {
id: storedScreenshot.id,
objectName: storedScreenshot.objectName,
size: storedScreenshot.size
})
// 测试版本文件上传
console.log('\n📤 测试版本文件上传...')
const testExeData = Buffer.from('fake exe data for testing')
const storedVersion = await storeFile(
testExeData,
'winupdate-v1.0.0.exe',
'application/x-msdownload',
'version'
)
console.log('✅ 版本文件上传成功:', {
id: storedVersion.id,
objectName: storedVersion.objectName,
size: storedVersion.size
})
// 测试文件下载
console.log('\n📥 测试文件下载...')
const downloadedScreenshot = await getFileByObjectName(storedScreenshot.objectName)
if (downloadedScreenshot && downloadedScreenshot.buffer.equals(testImageData)) {
console.log('✅ 截图下载成功,数据一致')
} else {
console.log('❌ 截图下载失败或数据不一致')
}
const downloadedVersion = await getFileByObjectName(storedVersion.objectName)
if (downloadedVersion && downloadedVersion.buffer.equals(testExeData)) {
console.log('✅ 版本文件下载成功,数据一致')
} else {
console.log('❌ 版本文件下载失败或数据不一致')
}
// 测试存储统计
console.log('\n📊 测试存储统计...')
const stats = await getStorageStats()
console.log('✅ 存储统计:', {
totalObjects: stats.totalObjects,
totalSize: `${(stats.totalSize / 1024).toFixed(2)} KB`,
bucketName: stats.bucketName
})
// 清理测试文件
console.log('\n🗑 清理测试文件...')
const deleteScreenshotResult = await deleteFile(storedScreenshot.objectName)
const deleteVersionResult = await deleteFile(storedVersion.objectName)
if (deleteScreenshotResult && deleteVersionResult) {
console.log('✅ 测试文件清理成功')
} else {
console.log('⚠️ 部分测试文件清理失败')
}
console.log('\n🎉 MinIO 文件操作测试完成!')
} catch (error) {
console.error('❌ 测试过程中出现错误:', error)
process.exit(1)
}
}
testMinIOFileOperations().catch(console.error)