import { test } from '@japa/runner' import yencode from 'yencode' import { sniffContentType } from '#lib/content/index' import { crc32Hex, decodeSegment, YencError } from '#lib/yenc/index' test.group('content / sniffContentType', () => { test('recognises containers and media by magic bytes', ({ assert }) => { const magic = (hex: string, pad = 16) => Buffer.concat([Buffer.from(hex, 'hex'), Buffer.alloc(pad)]) assert.equal(sniffContentType(Buffer.concat([Buffer.from('nzbe'), Buffer.alloc(40)])), 'nzbe') assert.equal(sniffContentType(magic('5041523200504b54')), 'par2') assert.equal(sniffContentType(magic('526172211a070100')), 'rar5') assert.equal(sniffContentType(magic('526172211a0700')), 'rar4') assert.equal(sniffContentType(magic('1a45dfa3')), 'matroska') assert.equal(sniffContentType(magic('0000001866747970')), 'mp4') assert.equal(sniffContentType(magic('28b52ffd')), 'zstd') assert.equal(sniffContentType(Buffer.from('\n')), 'nzb') assert.isNull(sniffContentType(Buffer.from('plain text'))) assert.equal(sniffContentType(magic('ffd8ffe0')), 'jpeg') assert.equal(sniffContentType(magic('89504e470d0a1a0a')), 'png') assert.equal(sniffContentType(Buffer.concat([Buffer.from('ID3'), Buffer.alloc(16)])), 'mp3') assert.equal(sniffContentType(Buffer.concat([Buffer.from('fLaC'), Buffer.alloc(16)])), 'flac') assert.equal(sniffContentType(Buffer.from('RIFF\x00\x00\x00\x00AVI LIST', 'latin1')), 'avi') // UDF (Blu-ray) volume recognition sequence at 32 KiB const udf = Buffer.alloc(0x9000) udf.write('BEA01', 0x8001, 'latin1') udf.write('NSR03', 0x8801, 'latin1') assert.equal(sniffContentType(udf), 'udf') }) }) test.group('yenc / lenientSize', () => { test('decodes a part whose declared size leaves out a header, still checking the CRC', ({ assert }) => { const data = Buffer.concat([Buffer.from('nzbe'), Buffer.alloc(16, 7), Buffer.from('ciphertext-here')]) const declared = data.length - 20 const body = Buffer.from( `=ybegin part=1 line=128 size=${declared} name=f6dd6b156692a52b.bin\r\n=ypart begin=1 end=${declared}\r\n` + yencode.encode(data).toString('latin1') + `\r\n=yend size=${declared} part=1 pcrc32=${crc32Hex(data)}`, 'latin1' ) assert.throws(() => decodeSegment(body), YencError as any) assert.isTrue(decodeSegment(body, { lenientSize: true }).data.equals(data)) }) })