diff --git a/public/app/features/connections/components/ConnectionsRedirectNotice/ConnectionsRedirectNotice.test.tsx b/public/app/features/connections/components/ConnectionsRedirectNotice/ConnectionsRedirectNotice.test.tsx new file mode 100644 index 00000000000..a6c435be744 --- /dev/null +++ b/public/app/features/connections/components/ConnectionsRedirectNotice/ConnectionsRedirectNotice.test.tsx @@ -0,0 +1,23 @@ +import { render, screen } from '@testing-library/react'; + +import { contextSrv } from '../../../../core/services/context_srv'; + +import { ConnectionsRedirectNotice } from './ConnectionsRedirectNotice'; + +const setup = (hasAccessToDS: boolean) => { + jest.spyOn(contextSrv, 'hasPermission').mockReturnValue(hasAccessToDS); + + render(); +}; + +describe('ConnectionsRedirectNotice', () => { + it('should render component when has access to data sources', () => { + setup(true); + expect(screen.getByRole('link')).toBeInTheDocument(); + }); + + it('should not render component when has no access to data sources', () => { + setup(false); + expect(screen.queryByRole('link')).not.toBeInTheDocument(); + }); +}); diff --git a/public/app/features/connections/components/ConnectionsRedirectNotice/ConnectionsRedirectNotice.tsx b/public/app/features/connections/components/ConnectionsRedirectNotice/ConnectionsRedirectNotice.tsx index c5aabc6a2f3..a27534f5baf 100644 --- a/public/app/features/connections/components/ConnectionsRedirectNotice/ConnectionsRedirectNotice.tsx +++ b/public/app/features/connections/components/ConnectionsRedirectNotice/ConnectionsRedirectNotice.tsx @@ -4,6 +4,8 @@ import { useState } from 'react'; import { GrafanaTheme2 } from '@grafana/data'; import { Alert, LinkButton, useStyles2 } from '@grafana/ui'; +import { contextSrv } from '../../../../core/core'; +import { AccessControlAction } from '../../../../types'; import { ROUTES } from '../../constants'; const getStyles = (theme: GrafanaTheme2) => ({ @@ -22,7 +24,10 @@ const getStyles = (theme: GrafanaTheme2) => ({ export function ConnectionsRedirectNotice() { const styles = useStyles2(getStyles); - const [showNotice, setShowNotice] = useState(true); + const canAccessDataSources = + contextSrv.hasPermission(AccessControlAction.DataSourcesCreate) || + contextSrv.hasPermission(AccessControlAction.DataSourcesWrite); + const [showNotice, setShowNotice] = useState(canAccessDataSources); return showNotice ? ( setShowNotice(false)}>