Files
frontend-miniapp/tests/unit/PublicUrl.spec.ts
cxk 00585a7b48
Some checks failed
CI / verify (push) Has been cancelled
fix(h5): prevent internal asset host exposure
Made-with: Proma
2026-08-15 19:01:55 +08:00

34 lines
1.3 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import { normalizeSameOriginPublicUrl } from '@/utils/publicUrl'
describe('normalizeSameOriginPublicUrl', () => {
it('rewrites guide assets to the public SDK MinIO cache proxy', () => {
expect(normalizeSameOriginPublicUrl(
'/minio/museum-assets/guide-final/E2/detail.jpg'
)).toBe('/app-api/gis/sdk/minio/museum-assets/guide-final/E2/detail.jpg')
expect(normalizeSameOriginPublicUrl(
'/museum-assets/guide-final/E2/detail.jpg'
)).toBe('/app-api/gis/sdk/minio/museum-assets/guide-final/E2/detail.jpg')
})
it('rewrites legacy absolute media and proxy URLs without embedding their host', () => {
expect(normalizeSameOriginPublicUrl(
'http://172.20.14.21:9000/museum-assets/guide-final/E2/detail.jpg'
)).toBe('/app-api/gis/sdk/minio/museum-assets/guide-final/E2/detail.jpg')
expect(normalizeSameOriginPublicUrl(
'http://172.20.14.21:48080/yudao-server/app-api/gis/guide?stopId=1'
)).toBe('/yudao-server/app-api/gis/guide?stopId=1')
expect(normalizeSameOriginPublicUrl(
'http://172.20.14.21:19000/nhm/audio/guide.mp3'
)).toBe('/nhm/audio/guide.mp3')
})
it('keeps ordinary relative paths unchanged', () => {
expect(normalizeSameOriginPublicUrl('/static/placeholder.png'))
.toBe('/static/placeholder.png')
})
})