import {sanitizePath} from 'sentry/utils/requestError/sanitizePath'; describe('sanitizePath', function () { for (const prefix of ['https://sentry.io/api/0', '']) { test.each([ // /organizations/ endpoints [ // OrganizationGroupIndexEndpoint '/organizations/sentry/issues/', '/organizations/{orgSlug}/issues/', ], [ // OrganizationEventDetailsEndpoint '/organizations/sentry/events/javascript:11a21f2012e12b31c2012a09d08a2013/', '/organizations/{orgSlug}/events/{projectSlug}:{eventId}/', ], [ // OrganizationEventsEndpoint '/organizations/sentry/events/', '/organizations/{orgSlug}/events/', ], [ // OrganizationEnvironmentsEndpoint '/organizations/sentry/environments/', '/organizations/{orgSlug}/environments/', ], [ // OrganizationSentryAppComponentsEndpoint '/organizations/sentry/sentry-app-components/?projectId=4152013', '/organizations/{orgSlug}/sentry-app-components/', ], [ // OrganizationPluginsConfigsEndpoint '/organizations/sentry/plugins/configs/', '/organizations/{orgSlug}/plugins/configs/', ], [ // OrganizationMemberTeamDetailsEndpoint '/organizations/sentry/members/90813/teams/search-and-storage/', '/organizations/{orgSlug}/members/{memberId}/teams/{teamSlug}/', ], [ // OrganizationReleaseDetailsEndpoint '/organizations/sentry/releases/v4.15.13/', '/organizations/{orgSlug}/releases/{releaseId}/', ], [ // ReleaseDeploysEndpoint '/organizations/sentry/releases/v4.15.13/deploys/', '/organizations/{orgSlug}/releases/{releaseId}/deploys/', ], [ // OrganizationTagsEndpoint '/organizations/sentry/tags/', '/organizations/{orgSlug}/tags/', ], [ // OrganizationTagKeyValuesEndpoint '/organizations/sentry/tags/browser/values/', '/organizations/{orgSlug}/tags/{tagName}/values/', ], // /projects/ endpoints [ // ProjectAlertRuleDetailsEndpoint '/projects/sentry/javascript/alert-rules/123113/', '/projects/{orgSlug}/{projectSlug}/alert-rules/{ruleId}/', ], [ // ProjectStacktraceLinkEndpoint '/projects/sentry/javascript/stacktrace-link/', '/projects/{orgSlug}/{projectSlug}/stacktrace-link/', ], [ // EventOwnersEndpoint '/projects/sentry/javascript/events/11a21f2012e12b31c2012a09d08a2013/owners/', '/projects/{orgSlug}/{projectSlug}/events/{eventId}/owners/', ], [ // ProjectReleaseDetailsEndpoint '/projects/sentry/javascript/releases/v4.15.13/', '/projects/{orgSlug}/{projectSlug}/releases/{releaseId}/', ], [ // ProjectTeamDetailsEndpoint '/projects/sentry/javascript/teams/search-and-storage/', '/projects/{orgSlug}/{projectSlug}/teams/{teamSlug}/', ], [ // XXX: This should probably be an organization endpoint... // ProjectAgnosticRuleConditionsEndpoint '/projects/sentry/rule-conditions/', '/projects/{orgSlug}/rule-conditions/', ], [ // TeamReleaseCountEndpoint '/teams/sentry/search-and-storage/release-count/', '/teams/{orgSlug}/{teamSlug}/release-count/', ], [ // CustomerDetailsEndpoint '/customers/sentry/', '/customers/{orgSlug}/', ], [ // CustomerDetailsEndpoint '/subscriptions/sentry/', '/subscriptions/{orgSlug}/', ], // replays endpionts [ // ProjectReplayDetailsEndpoint '/projects/sentry/javascript/replays/9081341513/', '/projects/{orgSlug}/{projectSlug}/replays/{replayId}/', ], [ // OrganizationReplayDetailsEndpoint '/organizations/sentry/replays/9081341513/', '/organizations/{orgSlug}/replays/{replayId}/', ], // groups endpoints [ // GroupDetailsEndpoint '/issues/11211231/', '/issues/{issueId}/', ], [ // GroupEventDetailsEndpoint '/issues/11211231/events/latest/', '/issues/{issueId}/events/latest/', ], [ // GroupEventDetailsEndpoint '/issues/11211231/events/oldest/', '/issues/{issueId}/events/oldest/', ], [ // GroupEventDetailsEndpoint '/issues/11211231/events/11a21f2012e12b31c2012a09d08a2013/', '/issues/{issueId}/events/{eventId}/', ], [ // GroupIntegrationsEndpoint '/groups/11211231/integrations/', '/groups/{groupId}/integrations/', ], [ // GroupExternalIssuesEndpoint '/groups/11211231/external-issues/', '/groups/{groupId}/external-issues/', ], [ // SentryAppsEndpoint '/sentry-apps/', '/sentry-apps/', ], ])(`sanitizes ${prefix}%s`, (path, expected) => { expect(sanitizePath(prefix + path)).toBe(prefix + expected); }); } it('uses original value if placeholder type not found', () => { expect(sanitizePath('/organizations/sentry/dogName/maisey')).toEqual( '/organizations/{orgSlug}/dogName/maisey' ); }); });