| 1234567891011121314151617181920212223 |
- import fs from 'node:fs'
- import path from 'node:path'
- import { describe, expect, it } from 'vitest'
- import { config } from '../src/config'
- import { convertDocument } from '../src/services/office'
- // 真实调用 LibreOffice(约数秒),验证独立沙箱中的转换可用
- describe('convertDocument', () => {
- const ws = path.join(config.dataDir, 'workspaces/ses_office')
- fs.mkdirSync(ws, { recursive: true })
- fs.writeFileSync(path.join(ws, '中文 报告.txt'), '你好,LibreOffice')
- it('把工作区内的文件转换为 PDF(中文文件名)', async () => {
- const out = await convertDocument({ workspaceDir: ws, input: '中文 报告.txt', format: 'pdf' })
- expect(out).toBe(path.join(fs.realpathSync(ws), 'outputs/中文 报告.pdf'))
- expect(fs.readFileSync(out).subarray(0, 4).toString()).toBe('%PDF')
- }, 120_000)
- it('拒绝工作区以外的输入和输出', async () => {
- await expect(convertDocument({ workspaceDir: ws, input: '/etc/hostname', format: 'pdf' })).rejects.toThrow(/工作区内/)
- await expect(convertDocument({ workspaceDir: ws, input: '中文 报告.txt', format: 'pdf', outDir: '/tmp' })).rejects.toThrow(/工作区内/)
- })
- })
|