XuqmGroup-RNSDK/packages/common/tests/file.test.ts

21 行
944 B
TypeScript

import assert from 'node:assert/strict'
import test from 'node:test'
import { fileNameFromUrl, parseContentDispositionFileName, sanitizeFileName } from '../src/fileName'
test('fileNameFromUrl handles encoded names, query strings, and fallbacks', () => {
assert.equal(fileNameFromUrl('https://example.test/files/%E6%8A%A5%E5%91%8A.pdf?x=1'), '报告.pdf')
assert.equal(fileNameFromUrl('https://example.test/'), 'download')
assert.equal(fileNameFromUrl('not a url/file.txt#preview'), 'file.txt')
})
test('parseContentDispositionFileName prefers RFC 5987 and sanitizes names', () => {
assert.equal(
parseContentDispositionFileName("attachment; filename*=UTF-8''%E6%8A%A5%E5%91%8A.pdf"),
'报告.pdf',
)
assert.equal(parseContentDispositionFileName('attachment; filename="a:b.pdf"'), 'a_b.pdf')
assert.equal(parseContentDispositionFileName('inline'), null)
assert.equal(sanitizeFileName(' a / b.txt '), 'a _ b.txt')
})