import {SecretFixture} from 'sentry-fixture/secret'; import {initializeOrg} from 'sentry-test/initializeOrg'; import { render, renderGlobalModal, screen, userEvent, } from 'sentry-test/reactTestingLibrary'; import OrganizationsStore from 'sentry/stores/organizationsStore'; import type {Secret} from 'sentry/views/settings/featureFlags'; import {OrganizationFeatureFlagsProviderRow} from 'sentry/views/settings/featureFlags/organizationFeatureFlagsProviderRow'; describe('OrganizationFeatureFlagsProviderRow', function () { const {organization, router} = initializeOrg(); const removeSecret = jest.fn(); const secret: Secret = SecretFixture(); const defaultProps = { organization, isRemoving: false, secret, removeSecret, router, location: router.location, params: {orgId: organization.slug}, routes: router.routes, route: {}, routeParams: router.params, }; beforeEach(function () { MockApiClient.addMockResponse({ url: '/organizations/org-slug/users/1234/', body: {}, }); OrganizationsStore.addOrReplace(organization); }); afterEach(function () { MockApiClient.clearMockResponses(); }); it('shows secret and provider name', function () { render(); expect(screen.getByLabelText('Secret preview')).toHaveTextContent('123abc*****'); expect(screen.getByText('launchdarkly')).toBeInTheDocument(); }); describe('removing', function () { it('does not allow to remove without access', function () { const props = { ...defaultProps, removeSecret: undefined, }; render(); expect( screen.getByRole('button', {name: 'Remove secret for launchdarkly provider'}) ).toBeDisabled(); }); it('allows to remove', async function () { render(); renderGlobalModal(); expect( screen.getByRole('button', {name: 'Remove secret for launchdarkly provider'}) ).toBeEnabled(); await userEvent.click( screen.getByRole('button', {name: 'Remove secret for launchdarkly provider'}) ); // Confirm modal await userEvent.click(screen.getByRole('button', {name: 'Confirm'})); expect(removeSecret).toHaveBeenCalledWith(1); // the id of the secret }); it('does not allow to remove while removing in progress', function () { const props = { ...defaultProps, isRemoving: true, }; render(); expect( screen.getByRole('button', {name: 'Remove secret for launchdarkly provider'}) ).toBeDisabled(); }); }); });