import { extensionForMime, isSafeMediaFileId, mimeForFileId } from './ultramsg-media.service';

describe('ultramsg-media helpers', () => {
  it('maps inbound mime types to file extensions', () => {
    expect(extensionForMime('image/jpeg')).toBe('jpg');
    expect(extensionForMime('audio/ogg; codecs=opus')).toBe('ogg');
    expect(extensionForMime('application/pdf')).toBe('pdf');
    expect(extensionForMime('unknown/thing')).toBe('bin');
  });

  it('rejects path-traversal media ids', () => {
    expect(isSafeMediaFileId('ok.jpg')).toBe(true);
    expect(isSafeMediaFileId('a-b_c.1.webp')).toBe(true);
    expect(isSafeMediaFileId('../secret')).toBe(false);
    expect(isSafeMediaFileId('a/b.jpg')).toBe(false);
    expect(isSafeMediaFileId('')).toBe(false);
  });

  it('resolves a content type from the stored filename', () => {
    expect(mimeForFileId('x.jpg')).toBe('image/jpeg');
    expect(mimeForFileId('x.ogg')).toBe('audio/ogg');
  });
});
