gongxiangp2/lib/__tests__/s3-key-from-url.test.ts

35 lines
1.0 KiB
TypeScript

import { getS3KeyFromUrl } from '@/lib/s3'
describe('getS3KeyFromUrl', () => {
const originalBucket = process.env.S3_BUCKET
afterEach(() => {
if (originalBucket === undefined) {
delete process.env.S3_BUCKET
} else {
process.env.S3_BUCKET = originalBucket
}
})
it('剥离公网 URL 中的 bucket 前缀并解码中文路径', () => {
process.env.S3_BUCKET = 'gongxiangpan'
const url = 'https://s3.yydd.ai/gongxiangpan/%E7%94%B1%E5%A3%B9%E7%82%B9AI/video-thumb-1.jpg'
expect(getS3KeyFromUrl(url)).toBe('由壹点AI/video-thumb-1.jpg')
})
it('剥离内网 MinIO path-style URL 中的 bucket 前缀', () => {
process.env.S3_BUCKET = 'gongxiangpan'
expect(
getS3KeyFromUrl('http://192.168.58.20:9000/gongxiangpan/abc/def.png')
).toBe('abc/def.png')
})
it('路径不含 bucket 时保留完整对象 Key', () => {
process.env.S3_BUCKET = 'gongxiangpan'
expect(getS3KeyFromUrl('https://cdn.example.com/由壹点AI/x.webp')).toBe('由壹点AI/x.webp')
})
})