123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- import {initializeOrg} from 'sentry-test/initializeOrg';
- import {
- render,
- renderGlobalModal,
- screen,
- userEvent,
- } from 'sentry-test/reactTestingLibrary';
- import ApiApplicationDetails from 'sentry/views/settings/account/apiApplications/details';
- describe('ApiApplications', function () {
- it('renders basic details for newly created App', function () {
- const {router} = initializeOrg();
- MockApiClient.addMockResponse({
- url: '/api-applications/abcd/',
- body: {
- allowedOrigins: ['http://example.com'],
- clientID: 'abcd',
- clientSecret: '1234',
- homepageUrl: 'http://example.com/homepage',
- id: 'abcd',
- name: 'Example App Name',
- privacyUrl: 'http://example.com/privacy',
- redirectUris: ['http://example.com/redirect'],
- termsUrl: ['http://example.com/terms'],
- },
- });
- render(
- <ApiApplicationDetails
- router={router}
- location={router.location}
- routes={router.routes}
- route={{}}
- routeParams={{}}
- params={{
- appId: 'abcd',
- }}
- />
- );
- expect(screen.getByDisplayValue('http://example.com')).toBeInTheDocument();
- expect(screen.getByDisplayValue('http://example.com/redirect')).toBeInTheDocument();
- expect(screen.getByDisplayValue('http://example.com/privacy')).toBeInTheDocument();
- expect(screen.getByDisplayValue('http://example.com/terms')).toBeInTheDocument();
- expect(screen.getByDisplayValue('abcd')).toBeInTheDocument();
- expect(screen.getByDisplayValue('1234')).toBeInTheDocument();
- expect(screen.getByDisplayValue('Example App Name')).toBeInTheDocument();
- expect(screen.getByLabelText('Name')).toBeInTheDocument();
- expect(screen.getByLabelText('Homepage')).toBeInTheDocument();
- expect(screen.getByLabelText('Privacy Policy')).toBeInTheDocument();
- expect(screen.getByLabelText('Terms of Service')).toBeInTheDocument();
- expect(screen.getByLabelText('Authorized Redirect URIs')).toBeInTheDocument();
- expect(screen.getByLabelText('Authorized JavaScript Origins')).toBeInTheDocument();
- expect(screen.getByLabelText('Client ID')).toBeInTheDocument();
- expect(screen.getByLabelText('Client Secret')).toBeInTheDocument();
- expect(screen.getByLabelText('Authorization URL')).toBeInTheDocument();
- expect(screen.getByLabelText('Token URL')).toBeInTheDocument();
- });
- it('handles client secret rotation', async function () {
- const {router} = initializeOrg();
- MockApiClient.addMockResponse({
- url: '/api-applications/abcd/',
- body: {
- allowedOrigins: ['http://example.com'],
- clientID: 'abcd',
- clientSecret: null,
- homepageUrl: 'http://example.com/homepage',
- id: 'abcd',
- name: 'Example App Name',
- privacyUrl: 'http://example.com/privacy',
- redirectUris: ['http://example.com/redirect'],
- termsUrl: ['http://example.com/terms'],
- },
- });
- const rotateSecretApiCall = MockApiClient.addMockResponse({
- method: 'POST',
- url: '/api-applications/abcd/rotate-secret/',
- body: {
- clientSecret: 'newSecret!',
- },
- });
- render(
- <ApiApplicationDetails
- router={router}
- location={router.location}
- routes={router.routes}
- route={{}}
- routeParams={{}}
- params={{
- appId: 'abcd',
- }}
- />
- );
- renderGlobalModal();
- expect(screen.getByText('hidden')).toBeInTheDocument();
- expect(
- screen.getByRole('button', {name: 'Rotate client secret'})
- ).toBeInTheDocument();
- await userEvent.click(screen.getByRole('button', {name: 'Rotate client secret'}));
- // Confirm modal
- await userEvent.click(screen.getByRole('button', {name: 'Confirm'}));
- expect(
- screen.getByText('This will be the only time your client secret is visible!')
- ).toBeInTheDocument();
- expect(screen.getByText('Your new Client Secret')).toBeInTheDocument();
- expect(screen.getByLabelText<HTMLInputElement>('new-client-secret')).toHaveValue(
- 'newSecret!'
- );
- expect(rotateSecretApiCall).toHaveBeenCalledTimes(1);
- });
- });
|