winupdate-neo/envtests/test-file-operations.ts

85 lines
2.8 KiB
TypeScript
Raw Permalink 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)