implemented a lot of features
This commit is contained in:
1 parent
62f1767df3
commit
bcb9be5da9
141 files changed
+10705
-385
No files matched your search
@@ -0,0 +1,45 @@
|
||||
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('<?xml version="1.0"?>\n<!DOCTYPE nzb PUBLIC "x">')), '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))
|
||||
})
|
||||
})
|
||||
Reference in new issue
Block a user