35 lines
1.0 KiB
TypeScript
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')
|
|
})
|
|
})
|