mirror of
https://github.com/grafana/grafana.git
synced 2025-02-13 00:55:47 -06:00
* ServiceAccounts: refactor ServiceAccountRoleRow * Refactor ServiceAccountRoleRow * Refactor ServiceAccountProfile * Refactor components * Change service accounts icon * Refine service accounts page header * Improve service accounts filtering * Change delete button style * Tweak account id * Auto focus name field when create service account * Add disable/enable button * Enable/disable service accounts * Optimize updating service account (do not fetch all) * Remove status column (replace by enable/disable button) * Add banner with service accounts description * Add tokens from main page * Update tokens count when add token from main page * Fix action buttons column * Fix tokens count when change role * Refine table row classes * Fix buttons * Simplify working with state * Show message when service account updated * Able to filter disabled accounts * Mark disabled accounts in a table * Refine disabled account view * Move non-critical components to separate folder * Remove confusing focusing * Fix date picker position when creating new token * DatePicker: able to set minimum date that can be selected * Don't allow to select expiration dates prior today * Set tomorrow as a default token expiration date * Fix displaying expiration period * Rename Add token button * Refine page styles * Show modal when disabling SA from main page * Arrange role picker * Refine SA page styles * Generate default token name * More smooth navigation between SA pages * Stop loading indicator in case of error * Remove legacy styles usage * Tweaks after code review Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com> * Get rid of useDisapatch in favor of mapDispatchToProps * Tests for ServiceAccountsListPage * Tests for service account page * Show new role picker only with license * Get rid of deprecated css classes * Apply suggestion from code review Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com> * Fix service accounts icon * Tests for service account create page * Return service account info when update * Add behaviour tests for ServiceAccountsListPage * Fix disabled cursor on confirm button * More behavior tests for service account page * Temporary disable service account migration banner * Use safe where condition Co-authored-by: Jguer <joao.guerreiro@grafana.com> * Apply review suggestions Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com> * Remove autofocus from search Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com> Co-authored-by: Jguer <joao.guerreiro@grafana.com>
83 lines
2.2 KiB
TypeScript
83 lines
2.2 KiB
TypeScript
import { render, screen, fireEvent, waitFor } from '@testing-library/react';
|
|
import userEvent from '@testing-library/user-event';
|
|
import React from 'react';
|
|
|
|
import { ServiceAccountCreatePageUnconnected, Props } from './ServiceAccountCreatePage';
|
|
|
|
const postMock = jest.fn().mockResolvedValue({});
|
|
const patchMock = jest.fn().mockResolvedValue({});
|
|
const putMock = jest.fn().mockResolvedValue({});
|
|
jest.mock('@grafana/runtime', () => ({
|
|
getBackendSrv: () => ({
|
|
post: postMock,
|
|
patch: patchMock,
|
|
put: putMock,
|
|
}),
|
|
config: {
|
|
loginError: false,
|
|
buildInfo: {
|
|
version: 'v1.0',
|
|
commit: '1',
|
|
env: 'production',
|
|
edition: 'Open Source',
|
|
},
|
|
licenseInfo: {
|
|
stateInfo: '',
|
|
licenseUrl: '',
|
|
},
|
|
appSubUrl: '',
|
|
},
|
|
}));
|
|
|
|
jest.mock('app/core/core', () => ({
|
|
contextSrv: {
|
|
licensedAccessControlEnabled: () => false,
|
|
hasPermission: () => true,
|
|
hasPermissionInMetadata: () => true,
|
|
user: { orgId: 1 },
|
|
},
|
|
}));
|
|
|
|
const setup = (propOverrides: Partial<Props>) => {
|
|
const props: Props = {
|
|
navModel: {
|
|
main: {
|
|
text: 'Configuration',
|
|
},
|
|
node: {
|
|
text: 'Service accounts',
|
|
},
|
|
},
|
|
};
|
|
|
|
Object.assign(props, propOverrides);
|
|
|
|
render(<ServiceAccountCreatePageUnconnected {...props} />);
|
|
};
|
|
|
|
describe('ServiceAccountCreatePage tests', () => {
|
|
it('Should display service account create page', () => {
|
|
setup({});
|
|
expect(screen.getByRole('button', { name: 'Create' })).toBeInTheDocument();
|
|
});
|
|
|
|
it('Should fire form validation error if name is not set', async () => {
|
|
setup({});
|
|
fireEvent.click(screen.getByRole('button', { name: 'Create' }));
|
|
expect(await screen.findByText('Display name is required')).toBeInTheDocument();
|
|
});
|
|
|
|
it('Should call API with proper params when creating new service account', async () => {
|
|
setup({});
|
|
await userEvent.type(screen.getByLabelText('Display name *'), 'Data source scavenger');
|
|
fireEvent.click(screen.getByRole('button', { name: 'Create' }));
|
|
|
|
await waitFor(() =>
|
|
expect(postMock).toHaveBeenCalledWith('/api/serviceaccounts/', {
|
|
name: 'Data source scavenger',
|
|
role: 'Viewer',
|
|
})
|
|
);
|
|
});
|
|
});
|