mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-06-23 15:30:47 -04:00
32 lines
1.2 KiB
TypeScript
32 lines
1.2 KiB
TypeScript
import { getFilenameFromContentDisposition } from './http'
|
|
|
|
describe('getFilenameFromContentDisposition', () => {
|
|
it('should extract filename from Content-Disposition header with filename*', () => {
|
|
const header = "attachment; filename*=UTF-8''example%20file.txt"
|
|
expect(getFilenameFromContentDisposition(header)).toBe('example file.txt')
|
|
})
|
|
|
|
it('should extract filename from Content-Disposition header with filename=', () => {
|
|
const header = 'attachment; filename="example-file.txt"'
|
|
expect(getFilenameFromContentDisposition(header)).toBe('example-file.txt')
|
|
})
|
|
|
|
it('should prioritize filename* over filename if both are present', () => {
|
|
const header =
|
|
'attachment; filename="fallback.txt"; filename*=UTF-8\'\'preferred%20file.txt'
|
|
const result = getFilenameFromContentDisposition(header)
|
|
expect(result).toBe('preferred file.txt')
|
|
})
|
|
|
|
it('should gracefully fall back to null', () => {
|
|
// invalid UTF-8 sequence
|
|
expect(
|
|
getFilenameFromContentDisposition("attachment; filename*=UTF-8''%E0%A4%A")
|
|
).toBeNull()
|
|
// missing filename
|
|
expect(getFilenameFromContentDisposition('attachment;')).toBeNull()
|
|
// empty header
|
|
expect(getFilenameFromContentDisposition(null)).toBeNull()
|
|
})
|
|
})
|