73 lines
2.0 KiB
JavaScript
73 lines
2.0 KiB
JavaScript
import assert from 'node:assert/strict'
|
|
import {
|
|
buildDirectMinioUrl,
|
|
parsePdfPreviewQuery,
|
|
pickQueryValue,
|
|
safeDecodeURIComponent,
|
|
toAbsoluteDownloadUrl
|
|
} from './oa-pdf-preview-query.js'
|
|
|
|
assert.equal(safeDecodeURIComponent('a%2Fb.pdf'), 'a/b.pdf')
|
|
assert.equal(safeDecodeURIComponent('100%完成.pdf'), '100%完成.pdf')
|
|
|
|
assert.equal(
|
|
pickQueryValue({ fileUrl: 'k1', f: 'k2' }, ['fileUrl', 'f']),
|
|
'k1'
|
|
)
|
|
assert.equal(pickQueryValue({ FILEURL: 'k-upper' }, ['fileUrl']), 'k-upper')
|
|
assert.equal(pickQueryValue({ f: 'short' }, ['fileUrl', 'f']), 'short')
|
|
|
|
const parsed = parsePdfPreviewQuery({
|
|
fileUrl: encodeURIComponent('oa-approval/x.pdf'),
|
|
name: 'approval.pdf'
|
|
})
|
|
assert.equal(parsed.fileUrl, 'oa-approval/x.pdf')
|
|
assert.equal(parsed.name, 'approval.pdf')
|
|
|
|
const fromF = parsePdfPreviewQuery({ f: 'oa-approval/y.pdf' })
|
|
assert.equal(fromF.fileUrl, 'oa-approval/y.pdf')
|
|
|
|
const legacy = parsePdfPreviewQuery({
|
|
url: 'https://example.com/a.pdf'
|
|
})
|
|
assert.equal(legacy.legacyUrl, 'https://example.com/a.pdf')
|
|
assert.equal(legacy.fileUrl, '')
|
|
|
|
const bases = {
|
|
apiBaseUrl: 'https://www.chengyantek.cn/api',
|
|
minioBaseUrl: 'https://www.chengyantek.cn/minio/zkxw'
|
|
}
|
|
assert.equal(
|
|
toAbsoluteDownloadUrl(
|
|
'/minio/zkxw/oa-approval/x.pdf?X-Amz-Signature=abc',
|
|
bases
|
|
),
|
|
'https://www.chengyantek.cn/minio/zkxw/oa-approval/x.pdf?X-Amz-Signature=abc'
|
|
)
|
|
assert.equal(
|
|
toAbsoluteDownloadUrl('https://cdn.example/a.pdf', bases),
|
|
'https://cdn.example/a.pdf'
|
|
)
|
|
assert.equal(
|
|
toAbsoluteDownloadUrl('oa-approval/x.pdf', bases),
|
|
'https://www.chengyantek.cn/minio/zkxw/oa-approval/x.pdf'
|
|
)
|
|
assert.equal(
|
|
toAbsoluteDownloadUrl('//cdn.example/a.pdf', bases),
|
|
'https://cdn.example/a.pdf'
|
|
)
|
|
|
|
assert.equal(
|
|
buildDirectMinioUrl('oa-approval/x.pdf', bases),
|
|
'https://www.chengyantek.cn/minio/zkxw/oa-approval/x.pdf'
|
|
)
|
|
assert.equal(
|
|
buildDirectMinioUrl(
|
|
'/minio/zkxw/oa-approval/x.pdf?X-Amz-Signature=broken',
|
|
bases
|
|
),
|
|
'https://www.chengyantek.cn/minio/zkxw/oa-approval/x.pdf'
|
|
)
|
|
|
|
console.log('oa-pdf-preview-query: ok')
|