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')