gongxiangp2/lib/__tests__/s3-delete.test.ts
chenpei 4712175cb0 feat(素材链路): 发布白底图双轨与AI生图回传能力
- 完成白底图 WebP 双轨接口、上传链路与预览缓存改造
- 新增 AI 生图平台成品回传接口、任务状态与表单规则
- 补齐 AI 生成标签、任务详情补全、相关测试与对接文档
2026-03-25 10:28:02 +08:00

41 lines
1.3 KiB
TypeScript

/** @jest-environment node */
const sendMock = jest.fn()
const deleteObjectCommandMock = jest.fn((input) => ({ input }))
jest.mock('@aws-sdk/client-s3', () => ({
S3Client: jest.fn(() => ({
send: sendMock,
})),
PutObjectCommand: jest.fn((input) => ({ input })),
DeleteObjectCommand: deleteObjectCommandMock,
GetObjectCommand: jest.fn((input) => ({ input })),
}))
describe('deleteFromS3', () => {
beforeEach(() => {
jest.clearAllMocks()
process.env.S3_BUCKET = 'jsxiangche'
process.env.S3_PUBLIC_DOMAIN = 'https://s3.1080p.hk/jsxiangche'
process.env.S3_ENDPOINT = 'https://s3.1080p.hk'
process.env.S3_REGION = 'us-east-1'
process.env.S3_ACCESS_KEY_ID = 'test-key'
process.env.S3_SECRET_ACCESS_KEY = 'test-secret'
})
test('删除公网 URL 时应解码中文路径并去掉 bucket 前缀', async () => {
jest.resetModules()
const { deleteFromS3 } = await import('@/lib/s3')
await deleteFromS3(
'https://s3.1080p.hk/jsxiangche/%E7%94%B1%E5%A3%B9%E7%82%B9AI/external-material-import-real-test/test-image.png',
)
expect(deleteObjectCommandMock).toHaveBeenCalledWith({
Bucket: 'jsxiangche',
Key: '由壹点AI/external-material-import-real-test/test-image.png',
})
expect(sendMock).toHaveBeenCalledTimes(1)
})
})