package services import "testing" func TestResolvePublicAssetURL(t *testing.T) { SetPublicAssetURLResolver(func(value string) string { return "https://cdn.example.com/" + value }) t.Cleanup(func() { SetPublicAssetURLResolver(nil) }) if got := ResolvePublicAssetURL(" mall/materials/avatar.png "); got != "https://cdn.example.com/mall/materials/avatar.png" { t.Fatalf("ResolvePublicAssetURL() = %q", got) } } func TestResolvePublicAssetURLFallsBackToStoredValue(t *testing.T) { SetPublicAssetURLResolver(func(string) string { return "" }) t.Cleanup(func() { SetPublicAssetURLResolver(nil) }) if got := ResolvePublicAssetURL(" /storage/avatar.png "); got != "/storage/avatar.png" { t.Fatalf("ResolvePublicAssetURL() = %q", got) } } func TestSetPublicAssetURLSettingsUsesManagementDomainRule(t *testing.T) { SetPublicAssetURLSettings(map[string]string{ "oss_default_engine": "qiniu", "oss_qiniu_domain": "cdn.example.com", }) t.Cleanup(func() { SetPublicAssetURLResolver(nil) }) tests := map[string]string{ "mall/materials/avatar.png": "https://cdn.example.com/mall/materials/avatar.png", "/storage/builtin-avatar.png": "/storage/builtin-avatar.png", "https://system.example.com/icon.png": "https://system.example.com/icon.png", } for input, want := range tests { if got := ResolvePublicAssetURL(input); got != want { t.Fatalf("ResolvePublicAssetURL(%q) = %q, want %q", input, got, want) } } }