import { describe, expect, it } from 'vitest'; import { DEFAULT_ALLOWED_MIME, extensionForMime, isAllowedMedia } from '../src/lib/media-types.js'; describe('isAllowedMedia', () => { it('accepte un type présent dans la liste blanche', () => { expect(isAllowedMedia('image/png', DEFAULT_ALLOWED_MIME)).toBe(true); expect(isAllowedMedia('video/mp4', DEFAULT_ALLOWED_MIME)).toBe(true); }); it('refuse un type absent de la liste blanche', () => { expect(isAllowedMedia('application/zip', DEFAULT_ALLOWED_MIME)).toBe(false); expect(isAllowedMedia('image/png', ['image/jpeg'])).toBe(false); }); it('accepte tout avec la politique "all"', () => { expect(isAllowedMedia('application/x-msdownload', 'all')).toBe(true); }); it('gère les jokers de préfixe', () => { expect(isAllowedMedia('video/x-matroska', ['video/*'])).toBe(true); expect(isAllowedMedia('VIDEO/QUICKTIME', ['video/*'])).toBe(true); expect(isAllowedMedia('image/png', ['video/*'])).toBe(false); expect(isAllowedMedia('image/png', ['video/*', 'image/png'])).toBe(true); expect(isAllowedMedia('application/octet-stream', ['*/*'])).toBe(true); expect(isAllowedMedia('n-importe/quoi', ['*'])).toBe(true); }); }); describe('extensionForMime', () => { it('renvoie une extension sûre pour un type connu', () => { expect(extensionForMime('image/jpeg')).toBe('.jpg'); expect(extensionForMime('video/quicktime')).toBe('.mov'); }); it('renvoie null pour un type inconnu', () => { expect(extensionForMime('application/x-unknown')).toBeNull(); }); });