isAllowedMedia gère désormais "video/*", "*/*" et "*" en plus des types
exacts (comparaison insensible à la casse). parseConfig valide la forme des
entrées et lève ConfigError sur un joker malformé ("video/**", "vi*deo/mp4",
"video/") au lieu de laisser passer une liste qui ne matche rien.
Schéma + doc mis à jour. 62 tests.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
39 lines
1.5 KiB
TypeScript
39 lines
1.5 KiB
TypeScript
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();
|
|
});
|
|
});
|