| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- 'use strict';
- const assert = require('node:assert/strict');
- const fs = require('fs');
- const os = require('os');
- const path = require('path');
- const { discoverMedia } = require('../mcp/src/features/media/media-discovery');
- const { processMedia, replaceMediaUrls } = require('../mcp/src/features/media/media-pipeline');
- const { manifestPath } = require('../mcp/src/features/media/media-manifest');
- async function main() {
- const image = `data:image/png;base64,${Buffer.from('png-fixture').toString('base64')}`;
- const video = `data:video/mp4;base64,${Buffer.from('video-fixture').toString('base64')}`;
- const input = { id: 'note-1', coverUrl: image, media: { videoUrl: video }, text: 'unchanged' };
- const discovered = discoverMedia(input);
- assert.equal(discovered.length, 2);
- const outputDir = fs.mkdtempSync(path.join(os.tmpdir(), 'voc-media-smoke-'));
- fs.mkdirSync(path.dirname(manifestPath(outputDir)), { recursive: true });
- fs.writeFileSync(manifestPath(outputDir), JSON.stringify({
- items: [{
- mediaId: 'legacy-cloud-item',
- sourceUrl: 'https://example.invalid/legacy.jpg',
- localPath: '',
- cloudUrl: 'https://storage.example.invalid/legacy.jpg',
- uploadStatus: 'uploaded'
- }]
- }));
- let uploadCalls = 0;
- const result = await processMedia(input, {
- outputDir,
- usageTraceId: 'usage_media_smoke',
- platform: 'xiaohongshu',
- storage: { upload: async () => { uploadCalls += 1; } }
- });
- assert.equal(result.items.filter(item => item.cacheStatus === 'cached').length, 2);
- assert.equal(result.items.filter(item => item.uploadStatus === 'disabled_local_only').length, 3);
- assert.equal(uploadCalls, 0, 'local-only media pipeline must not upload to Storage');
- assert(fs.existsSync(result.manifestFile));
- const savedManifest = JSON.parse(fs.readFileSync(result.manifestFile, 'utf8'));
- const legacyItem = savedManifest.items.find(item => item.mediaId === 'legacy-cloud-item');
- assert.equal(legacyItem.cloudUrl, null, 'legacy cloud URLs must be removed from the manifest');
- assert.equal(legacyItem.uploadStatus, 'disabled_local_only');
- assert.equal(legacyItem.effectiveUrl, '');
- const replaced = replaceMediaUrls(input, result.replacements);
- assert.match(replaced.coverUrl, /^assets\/xiaohongshu\/note-1\//);
- assert.match(replaced.media.videoUrl, /^assets\/xiaohongshu\/(?:note-1|evidence)\//);
- assert.equal(result.items.some(item => item.cloudUrl), false);
- console.log('media pipeline smoke passed');
- }
- main().catch(error => { console.error(error); process.exitCode = 1; });
|