test-upload.ts 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import * as dotenv from 'dotenv';
  2. import * as fs from 'fs';
  3. import path from 'path';
  4. import { uploadMedia } from '../src/actions/media';
  5. import { mediaBucketName } from '../src/lib/config';
  6. import minioClient from '../src/lib/minio';
  7. dotenv.config({ path: path.resolve(process.cwd(), '.env') });
  8. async function runTest() {
  9. console.log('--- Environment Check ---');
  10. console.log('MINIO_ENDPOINT:', process.env.MINIO_ENDPOINT);
  11. console.log('-------------------------');
  12. if (!fs.existsSync('test_sample.mp4')) {
  13. console.error('Missing test_sample.mp4 in project root.');
  14. process.exit(1);
  15. }
  16. console.log('Starting end-to-end upload test...');
  17. console.log('1. Calling uploadMedia action...');
  18. try {
  19. const fileBuffer = fs.readFileSync('test_sample.mp4');
  20. const result = await uploadMedia({
  21. name: 'test_sample.mp4',
  22. type: 'video/mp4',
  23. size: fileBuffer.byteLength,
  24. arrayBuffer: async () => fileBuffer.buffer.slice(
  25. fileBuffer.byteOffset,
  26. fileBuffer.byteOffset + fileBuffer.byteLength
  27. ),
  28. });
  29. console.log('Action returned successfully.');
  30. console.log('Media ID:', result.media.id);
  31. console.log('Resource ID:', result.resource.id);
  32. console.log('\n2. Verifying database record...');
  33. if (result.media.status !== 'pending' || !result.media.storageKey) {
  34. console.error('Upload did not create the expected pending media record.');
  35. process.exit(1);
  36. }
  37. console.log('Database record verification passed.');
  38. console.log('\n3. Verifying MinIO file...');
  39. await minioClient.statObject(mediaBucketName, result.media.storageKey);
  40. console.log('MinIO file verification passed.');
  41. } catch (error: any) {
  42. console.error('\nTest failed.');
  43. console.error('Error Message:', error.message);
  44. if (error.code) console.error('Error Code:', error.code);
  45. process.exit(1);
  46. }
  47. process.exit(0);
  48. }
  49. runTest();