@@ -203,6 +203,76 @@ describe("resolveOrgRegion", () => {
203203 }
204204 } ) ;
205205
206+ test ( "falls back to baseUrl when API returns a relative regionUrl" , async ( ) => {
207+ const originalFetch = globalThis . fetch ;
208+ globalThis . fetch = async ( input : RequestInfo | URL , init ?: RequestInit ) => {
209+ const req = new Request ( input , init ) ;
210+ if ( req . url . includes ( "/organizations/relative-region-org/" ) ) {
211+ return new Response (
212+ JSON . stringify ( {
213+ id : "789" ,
214+ slug : "relative-region-org" ,
215+ name : "Self-hosted Org" ,
216+ links : {
217+ organizationUrl : "/organizations/relative-region-org/" ,
218+ // Self-hosted instance returns a relative path instead of an absolute URL
219+ regionUrl : "/" ,
220+ } ,
221+ } ) ,
222+ {
223+ status : 200 ,
224+ headers : { "Content-Type" : "application/json" } ,
225+ }
226+ ) ;
227+ }
228+ return new Response ( JSON . stringify ( { detail : "Not found" } ) , {
229+ status : 404 ,
230+ } ) ;
231+ } ;
232+
233+ try {
234+ const regionUrl = await resolveOrgRegion ( "relative-region-org" ) ;
235+ // Should fall back to the configured baseUrl, not use the relative regionUrl
236+ expect ( regionUrl ) . toBe ( "https://sentry.io" ) ;
237+ } finally {
238+ globalThis . fetch = originalFetch ;
239+ }
240+ } ) ;
241+
242+ test ( "falls back to baseUrl when API returns a malformed regionUrl" , async ( ) => {
243+ const originalFetch = globalThis . fetch ;
244+ globalThis . fetch = async ( input : RequestInfo | URL , init ?: RequestInit ) => {
245+ const req = new Request ( input , init ) ;
246+ if ( req . url . includes ( "/organizations/malformed-region-org/" ) ) {
247+ return new Response (
248+ JSON . stringify ( {
249+ id : "790" ,
250+ slug : "malformed-region-org" ,
251+ name : "Self-hosted Org 2" ,
252+ links : {
253+ organizationUrl : "/organizations/malformed-region-org/" ,
254+ regionUrl : "not-a-valid-url" ,
255+ } ,
256+ } ) ,
257+ {
258+ status : 200 ,
259+ headers : { "Content-Type" : "application/json" } ,
260+ }
261+ ) ;
262+ }
263+ return new Response ( JSON . stringify ( { detail : "Not found" } ) , {
264+ status : 404 ,
265+ } ) ;
266+ } ;
267+
268+ try {
269+ const regionUrl = await resolveOrgRegion ( "malformed-region-org" ) ;
270+ expect ( regionUrl ) . toBe ( "https://sentry.io" ) ;
271+ } finally {
272+ globalThis . fetch = originalFetch ;
273+ }
274+ } ) ;
275+
206276 test ( "falls back to default URL when API call fails" , async ( ) => {
207277 // Mock fetch to fail
208278 const originalFetch = globalThis . fetch ;
0 commit comments