oa-pdf-preview-query.test.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import assert from 'node:assert/strict'
  2. import {
  3. buildDirectMinioUrl,
  4. parsePdfPreviewQuery,
  5. pickQueryValue,
  6. safeDecodeURIComponent,
  7. toAbsoluteDownloadUrl
  8. } from './oa-pdf-preview-query.js'
  9. assert.equal(safeDecodeURIComponent('a%2Fb.pdf'), 'a/b.pdf')
  10. assert.equal(safeDecodeURIComponent('100%完成.pdf'), '100%完成.pdf')
  11. assert.equal(
  12. pickQueryValue({ fileUrl: 'k1', f: 'k2' }, ['fileUrl', 'f']),
  13. 'k1'
  14. )
  15. assert.equal(pickQueryValue({ FILEURL: 'k-upper' }, ['fileUrl']), 'k-upper')
  16. assert.equal(pickQueryValue({ f: 'short' }, ['fileUrl', 'f']), 'short')
  17. const parsed = parsePdfPreviewQuery({
  18. fileUrl: encodeURIComponent('oa-approval/x.pdf'),
  19. name: 'approval.pdf'
  20. })
  21. assert.equal(parsed.fileUrl, 'oa-approval/x.pdf')
  22. assert.equal(parsed.name, 'approval.pdf')
  23. const fromF = parsePdfPreviewQuery({ f: 'oa-approval/y.pdf' })
  24. assert.equal(fromF.fileUrl, 'oa-approval/y.pdf')
  25. const legacy = parsePdfPreviewQuery({
  26. url: 'https://example.com/a.pdf'
  27. })
  28. assert.equal(legacy.legacyUrl, 'https://example.com/a.pdf')
  29. assert.equal(legacy.fileUrl, '')
  30. const bases = {
  31. apiBaseUrl: 'https://www.chengyantek.cn/api',
  32. minioBaseUrl: 'https://www.chengyantek.cn/minio/zkxw'
  33. }
  34. assert.equal(
  35. toAbsoluteDownloadUrl(
  36. '/minio/zkxw/oa-approval/x.pdf?X-Amz-Signature=abc',
  37. bases
  38. ),
  39. 'https://www.chengyantek.cn/minio/zkxw/oa-approval/x.pdf?X-Amz-Signature=abc'
  40. )
  41. assert.equal(
  42. toAbsoluteDownloadUrl('https://cdn.example/a.pdf', bases),
  43. 'https://cdn.example/a.pdf'
  44. )
  45. assert.equal(
  46. toAbsoluteDownloadUrl('oa-approval/x.pdf', bases),
  47. 'https://www.chengyantek.cn/minio/zkxw/oa-approval/x.pdf'
  48. )
  49. assert.equal(
  50. toAbsoluteDownloadUrl('//cdn.example/a.pdf', bases),
  51. 'https://cdn.example/a.pdf'
  52. )
  53. assert.equal(
  54. buildDirectMinioUrl('oa-approval/x.pdf', bases),
  55. 'https://www.chengyantek.cn/minio/zkxw/oa-approval/x.pdf'
  56. )
  57. assert.equal(
  58. buildDirectMinioUrl(
  59. '/minio/zkxw/oa-approval/x.pdf?X-Amz-Signature=broken',
  60. bases
  61. ),
  62. 'https://www.chengyantek.cn/minio/zkxw/oa-approval/x.pdf'
  63. )
  64. console.log('oa-pdf-preview-query: ok')