import {initializeOrg} from 'sentry-test/initializeOrg';
import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary';
import {textWithMarkupMatcher} from 'sentry-test/utils';
import {Http} from 'sentry/components/events/interfaces/breadcrumbs/breadcrumb/data/http';
import ProjectsStore from 'sentry/stores/projectsStore';
import {BreadcrumbLevelType, BreadcrumbType} from 'sentry/types/breadcrumbs';
describe('Breadcrumb Data Http', function () {
const project = TestStubs.Project({
id: '0',
relayPiiConfig: JSON.stringify(TestStubs.DataScrubbingRelayPiiConfig()),
});
const {organization, router} = initializeOrg({
router: {
location: {query: {project: '0'}},
},
project: '0',
projects: [project],
});
ProjectsStore.loadInitialData([project]);
it('display redacted url', async function () {
render(
,
{organization, router}
);
expect(screen.getByText('POST')).toBeInTheDocument();
expect(screen.queryByText('http://example.com/foo')).not.toBeInTheDocument();
await userEvent.hover(screen.getByText(/redacted/));
expect(
await screen.findByText(
textWithMarkupMatcher(
'Replaced because of the data scrubbing rule [Replace] [Password fields] with [Scrubbed] from [password] in the settings of the project project-slug'
)
)
).toBeInTheDocument(); // tooltip description
});
it('display redacted data', async function () {
render(
,
{organization, router}
);
expect(screen.queryByText('http://example.com/foo')).not.toBeInTheDocument();
await userEvent.hover(screen.getByText(/redacted/));
expect(
await screen.findByText(
textWithMarkupMatcher(
'Removed because of the data scrubbing rule [Replace] [Password fields] with [Scrubbed] from [password] in the settings of the project project-slug'
)
)
).toBeInTheDocument(); // tooltip description
});
});