import {ApiApplicationFixture} from 'sentry-fixture/apiApplication';
import {render, screen, userEvent, waitFor} from 'sentry-test/reactTestingLibrary';
import AccountAuthorizations from 'sentry/views/settings/account/accountAuthorizations';
describe('AccountAuthorizations', function () {
beforeEach(function () {
MockApiClient.clearMockResponses();
});
it('renders empty', async function () {
MockApiClient.addMockResponse({
url: '/api-authorizations/',
method: 'GET',
body: [],
});
render();
expect(
await screen.findByText("You haven't approved any third party applications.")
).toBeInTheDocument();
});
it('revokes authorizations correctly', async function () {
MockApiClient.addMockResponse({
url: '/api-authorizations/',
method: 'GET',
body: [
{
application: ApiApplicationFixture({name: 'Delete Shrimp'}),
homepageUrl: 'test.com',
id: 'delete_shrimp',
scopes: [],
},
{
application: ApiApplicationFixture({name: 'Keep Shrimp'}),
homepageUrl: 'test2.com',
id: 'keep_shrimp',
scopes: [],
},
],
});
const deleteMock = MockApiClient.addMockResponse({
url: '/api-authorizations/',
method: 'DELETE',
});
render();
expect(await screen.findByText('Delete Shrimp')).toBeInTheDocument();
expect(await screen.findByText('Keep Shrimp')).toBeInTheDocument();
// delete the 'Detete Shrimp' authorization
await userEvent.click(screen.getByTestId('delete_shrimp'));
expect(deleteMock).toHaveBeenCalledWith(
'/api-authorizations/',
expect.objectContaining({
method: 'DELETE',
data: {authorization: 'delete_shrimp'},
})
);
await waitFor(() =>
expect(screen.queryByText('Delete Shrimp')).not.toBeInTheDocument()
);
await waitFor(() => expect(screen.queryByText('Keep Shrimp')).toBeInTheDocument());
});
});