import {reactHooks} from 'sentry-test/reactTestingLibrary';
import {OrganizationContext} from 'sentry/views/organizationContext';
import useResolveRoute from './useResolveRoute';
describe('useResolveRoute', () => {
let devUi, host;
const organization = TestStubs.Organization();
const otherOrg = TestStubs.Organization({
features: ['customer-domains'],
slug: 'other-org',
});
beforeEach(() => {
devUi = window.__SENTRY_DEV_UI;
host = window.location.host;
});
afterEach(() => {
window.__SENTRY_DEV_UI = devUi;
window.location.host = host;
});
it('should use sentryUrl when no org is provided', () => {
window.__SENTRY_DEV_UI = true;
window.location.host = 'localhost:7999';
const wrapper = ({children}) => (
{children}
);
const {result} = reactHooks.renderHook(() => useResolveRoute('/organizations/new/'), {
wrapper,
});
expect(result.current).toBe('/organizations/new/');
});
it('should replace domains with dev-ui mode on localhost', () => {
window.__SENTRY_DEV_UI = true;
window.location.host = 'acme.localhost:7999';
const wrapper = ({children}) => (
{children}
);
const {result} = reactHooks.renderHook(() => useResolveRoute('/issues/', otherOrg), {
wrapper,
});
expect(result.current).toBe('https://other-org.localhost:7999/issues/');
});
it('should replace domains with dev-ui mode on dev.getsentry.net', () => {
window.__SENTRY_DEV_UI = true;
window.location.host = 'acme.dev.getsentry.net:7999';
const wrapper = ({children}) => (
{children}
);
const {result} = reactHooks.renderHook(() => useResolveRoute('/issues/', otherOrg), {
wrapper,
});
expect(result.current).toBe('https://other-org.dev.getsentry.net:7999/issues/');
});
it('should replace domains with dev-ui mode on sentry.dev', () => {
window.__SENTRY_DEV_UI = true;
window.location.host = 'acme.sentry-abc123.sentry.dev';
const wrapper = ({children}) => (
{children}
);
const {result} = reactHooks.renderHook(() => useResolveRoute('/issues/', otherOrg), {
wrapper,
});
expect(result.current).toBe('https://other-org.sentry-abc123.sentry.dev/issues/');
});
it('will not replace domains with dev-ui mode and an unsafe host', () => {
window.__SENTRY_DEV_UI = true;
window.location.host = 'bad-domain.com';
const wrapper = ({children}) => (
{children}
);
const {result} = reactHooks.renderHook(() => useResolveRoute('/issues/', otherOrg), {
wrapper,
});
expect(result.current).toBe('https://other-org.sentry.io/issues/');
});
it('should not replace domains normally', () => {
const wrapper = ({children}) => (
{children}
);
const {result} = reactHooks.renderHook(() => useResolveRoute('/issues/', otherOrg), {
wrapper,
});
expect(result.current).toBe('https://other-org.sentry.io/issues/');
});
});