mediaDrop/tests/media-types.test.ts
Nicolas 0f5bdb7080
Some checks failed
Publier l'image Docker / test (push) Successful in 18s
Publier l'image Docker / publish (push) Failing after 11s
allowedMimeTypes : jokers de préfixe
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>
2026-09-10 09:18:52 +02:00

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();
});
});