import { describe, expect, it, vi } from 'vitest'; import { MatrixMediaDownloader } from '../src/services/chat/matrix/http-media-downloader.js'; import { createMockLogger } from './mockLogger.js'; describe('MatrixMediaDownloader', () => { it('uses replacement Matrix credentials for subsequent media downloads', async () => { const staleClient = { downloadMedia: vi.fn().mockRejectedValue(new Error('expired')) }; const freshClient = { downloadMedia: vi.fn().mockResolvedValue({ bytes: Buffer.from('fresh-image'), contentType: 'image/jpeg', }), }; const downloader = new MatrixMediaDownloader(staleClient as never, createMockLogger()); downloader.setMatrixClient(freshClient as never); await expect(downloader.fetch('mxc://reddit.com/image')).resolves.toEqual({ buffer: Buffer.from('fresh-image'), contentType: 'image/jpeg', }); expect(staleClient.downloadMedia).not.toHaveBeenCalled(); expect(freshClient.downloadMedia).toHaveBeenCalledWith('mxc://reddit.com/image'); }); });