sanitizePath.spec.tsx 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. import {sanitizePath} from 'sentry/utils/requestError/sanitizePath';
  2. describe('sanitizePath', function () {
  3. for (const prefix of ['https://sentry.io/api/0', '']) {
  4. test.each([
  5. // /organizations/ endpoints
  6. [
  7. // OrganizationGroupIndexEndpoint
  8. '/organizations/sentry/issues/',
  9. '/organizations/{orgSlug}/issues/',
  10. ],
  11. [
  12. // OrganizationEventDetailsEndpoint
  13. '/organizations/sentry/events/javascript:11a21f2012e12b31c2012a09d08a2013/',
  14. '/organizations/{orgSlug}/events/{projectSlug}:{eventId}/',
  15. ],
  16. [
  17. // OrganizationEventsEndpoint
  18. '/organizations/sentry/events/',
  19. '/organizations/{orgSlug}/events/',
  20. ],
  21. [
  22. // OrganizationEnvironmentsEndpoint
  23. '/organizations/sentry/environments/',
  24. '/organizations/{orgSlug}/environments/',
  25. ],
  26. [
  27. // OrganizationSentryAppComponentsEndpoint
  28. '/organizations/sentry/sentry-app-components/?projectId=4152013',
  29. '/organizations/{orgSlug}/sentry-app-components/',
  30. ],
  31. [
  32. // OrganizationPluginsConfigsEndpoint
  33. '/organizations/sentry/plugins/configs/',
  34. '/organizations/{orgSlug}/plugins/configs/',
  35. ],
  36. [
  37. // OrganizationMemberTeamDetailsEndpoint
  38. '/organizations/sentry/members/90813/teams/search-and-storage/',
  39. '/organizations/{orgSlug}/members/{memberId}/teams/{teamSlug}/',
  40. ],
  41. [
  42. // OrganizationReleaseDetailsEndpoint
  43. '/organizations/sentry/releases/v4.15.13/',
  44. '/organizations/{orgSlug}/releases/{releaseId}/',
  45. ],
  46. [
  47. // ReleaseDeploysEndpoint
  48. '/organizations/sentry/releases/v4.15.13/deploys/',
  49. '/organizations/{orgSlug}/releases/{releaseId}/deploys/',
  50. ],
  51. [
  52. // OrganizationTagsEndpoint
  53. '/organizations/sentry/tags/',
  54. '/organizations/{orgSlug}/tags/',
  55. ],
  56. [
  57. // OrganizationTagKeyValuesEndpoint
  58. '/organizations/sentry/tags/browser/values/',
  59. '/organizations/{orgSlug}/tags/{tagName}/values/',
  60. ],
  61. // /projects/ endpoints
  62. [
  63. // ProjectAlertRuleDetailsEndpoint
  64. '/projects/sentry/javascript/alert-rules/123113/',
  65. '/projects/{orgSlug}/{projectSlug}/alert-rules/{ruleId}/',
  66. ],
  67. [
  68. // ProjectStacktraceLinkEndpoint
  69. '/projects/sentry/javascript/stacktrace-link/',
  70. '/projects/{orgSlug}/{projectSlug}/stacktrace-link/',
  71. ],
  72. [
  73. // EventOwnersEndpoint
  74. '/projects/sentry/javascript/events/11a21f2012e12b31c2012a09d08a2013/owners/',
  75. '/projects/{orgSlug}/{projectSlug}/events/{eventId}/owners/',
  76. ],
  77. [
  78. // ProjectReleaseDetailsEndpoint
  79. '/projects/sentry/javascript/releases/v4.15.13/',
  80. '/projects/{orgSlug}/{projectSlug}/releases/{releaseId}/',
  81. ],
  82. [
  83. // ProjectTeamDetailsEndpoint
  84. '/projects/sentry/javascript/teams/search-and-storage/',
  85. '/projects/{orgSlug}/{projectSlug}/teams/{teamSlug}/',
  86. ],
  87. [
  88. // XXX: This should probably be an organization endpoint...
  89. // ProjectAgnosticRuleConditionsEndpoint
  90. '/projects/sentry/rule-conditions/',
  91. '/projects/{orgSlug}/rule-conditions/',
  92. ],
  93. [
  94. // TeamReleaseCountEndpoint
  95. '/teams/sentry/search-and-storage/release-count/',
  96. '/teams/{orgSlug}/{teamSlug}/release-count/',
  97. ],
  98. [
  99. // CustomerDetailsEndpoint
  100. '/customers/sentry/',
  101. '/customers/{orgSlug}/',
  102. ],
  103. [
  104. // CustomerDetailsEndpoint
  105. '/subscriptions/sentry/',
  106. '/subscriptions/{orgSlug}/',
  107. ],
  108. // replays endpionts
  109. [
  110. // ProjectReplayDetailsEndpoint
  111. '/projects/sentry/javascript/replays/9081341513/',
  112. '/projects/{orgSlug}/{projectSlug}/replays/{replayId}/',
  113. ],
  114. [
  115. // OrganizationReplayDetailsEndpoint
  116. '/organizations/sentry/replays/9081341513/',
  117. '/organizations/{orgSlug}/replays/{replayId}/',
  118. ],
  119. // groups endpoints
  120. [
  121. // GroupDetailsEndpoint
  122. '/issues/11211231/',
  123. '/issues/{issueId}/',
  124. ],
  125. [
  126. // GroupEventDetailsEndpoint
  127. '/issues/11211231/events/latest/',
  128. '/issues/{issueId}/events/latest/',
  129. ],
  130. [
  131. // GroupEventDetailsEndpoint
  132. '/issues/11211231/events/oldest/',
  133. '/issues/{issueId}/events/oldest/',
  134. ],
  135. [
  136. // GroupEventDetailsEndpoint
  137. '/issues/11211231/events/11a21f2012e12b31c2012a09d08a2013/',
  138. '/issues/{issueId}/events/{eventId}/',
  139. ],
  140. [
  141. // GroupIntegrationsEndpoint
  142. '/groups/11211231/integrations/',
  143. '/groups/{groupId}/integrations/',
  144. ],
  145. [
  146. // GroupExternalIssuesEndpoint
  147. '/groups/11211231/external-issues/',
  148. '/groups/{groupId}/external-issues/',
  149. ],
  150. [
  151. // SentryAppsEndpoint
  152. '/sentry-apps/',
  153. '/sentry-apps/',
  154. ],
  155. ])(`sanitizes ${prefix}%s`, (path, expected) => {
  156. expect(sanitizePath(prefix + path)).toBe(prefix + expected);
  157. });
  158. }
  159. it('uses original value if placeholder type not found', () => {
  160. expect(sanitizePath('/organizations/sentry/dogName/maisey')).toEqual(
  161. '/organizations/{orgSlug}/dogName/maisey'
  162. );
  163. });
  164. });