message.spec.tsx 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import {DataScrubbingRelayPiiConfig} from 'sentry-fixture/dataScrubbingRelayPiiConfig';
  2. import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary';
  3. import {textWithMarkupMatcher} from 'sentry-test/utils';
  4. import {Message} from 'sentry/components/events/interfaces/message';
  5. describe('Message entry', function () {
  6. const routerContext = TestStubs.routerContext();
  7. it('display redacted data', async function () {
  8. const event = {
  9. ...TestStubs.Event(),
  10. entries: [
  11. {
  12. type: 'message',
  13. data: {
  14. formatted: null,
  15. },
  16. },
  17. ],
  18. _meta: {
  19. entries: {
  20. 0: {
  21. data: {
  22. formatted: {'': {rem: [['organization:0', 'x']]}},
  23. },
  24. },
  25. },
  26. },
  27. };
  28. render(<Message data={{formatted: null}} event={event} />, {
  29. context: routerContext,
  30. organization: {
  31. relayPiiConfig: JSON.stringify(DataScrubbingRelayPiiConfig()),
  32. },
  33. });
  34. expect(screen.getByText(/redacted/)).toBeInTheDocument();
  35. await userEvent.hover(screen.getByText(/redacted/));
  36. expect(
  37. await screen.findByText(
  38. textWithMarkupMatcher(
  39. "Removed because of the data scrubbing rule [Replace] [Password fields] with [Scrubbed] from [password] in your organization's settings"
  40. )
  41. )
  42. ).toBeInTheDocument(); // tooltip description
  43. expect(
  44. screen.getByRole('link', {
  45. name: '[Replace] [Password fields] with [Scrubbed] from [password]',
  46. })
  47. ).toHaveAttribute(
  48. 'href',
  49. '/settings/org-slug/security-and-privacy/advanced-data-scrubbing/0/'
  50. );
  51. expect(screen.getByRole('link', {name: "organization's settings"})).toHaveAttribute(
  52. 'href',
  53. '/settings/org-slug/security-and-privacy/'
  54. );
  55. });
  56. });