mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
AzureMonitor: Add error indicating potential configuration issue on Resource Picker (#60041)
* Add error indicating potential configuration issue - Update test * Update error - Lint update
This commit is contained in:
parent
07d6b632b5
commit
4730be8842
@ -1,5 +1,6 @@
|
||||
import { act, render, screen } from '@testing-library/react';
|
||||
import userEvent from '@testing-library/user-event';
|
||||
import { omit } from 'lodash';
|
||||
import React from 'react';
|
||||
|
||||
import createMockDatasource from '../../__mocks__/datasource';
|
||||
@ -23,23 +24,26 @@ const singleResourceSelectionURI =
|
||||
'/subscriptions/def-456/resourceGroups/dev-3/providers/Microsoft.Compute/virtualMachines/db-server';
|
||||
|
||||
const noop: any = () => {};
|
||||
function createMockResourcePickerData() {
|
||||
function createMockResourcePickerData(preserveImplementation?: string[]) {
|
||||
const mockDatasource = createMockDatasource();
|
||||
const mockResourcePicker = new ResourcePickerData(
|
||||
createMockInstanceSetttings(),
|
||||
mockDatasource.azureMonitorDatasource
|
||||
);
|
||||
|
||||
mockResourcePicker.getSubscriptions = jest.fn().mockResolvedValue(createMockSubscriptions());
|
||||
mockResourcePicker.getResourceGroupsBySubscriptionId = jest
|
||||
.fn()
|
||||
.mockResolvedValue(createMockResourceGroupsBySubscription());
|
||||
mockResourcePicker.getResourcesForResourceGroup = jest.fn().mockResolvedValue(mockResourcesByResourceGroup());
|
||||
mockResourcePicker.getResourceURIFromWorkspace = jest.fn().mockReturnValue('');
|
||||
mockResourcePicker.getResourceURIDisplayProperties = jest.fn().mockResolvedValue({});
|
||||
mockResourcePicker.search = jest.fn().mockResolvedValue(mockSearchResults());
|
||||
const mockFunctions = omit(
|
||||
{
|
||||
getSubscriptions: jest.fn().mockResolvedValue(createMockSubscriptions()),
|
||||
getResourceGroupsBySubscriptionId: jest.fn().mockResolvedValue(createMockResourceGroupsBySubscription()),
|
||||
getResourcesForResourceGroup: jest.fn().mockResolvedValue(mockResourcesByResourceGroup()),
|
||||
getResourceURIFromWorkspace: jest.fn().mockReturnValue(''),
|
||||
getResourceURIDisplayProperties: jest.fn().mockResolvedValue({}),
|
||||
search: jest.fn().mockResolvedValue(mockSearchResults()),
|
||||
},
|
||||
preserveImplementation || []
|
||||
);
|
||||
|
||||
return mockResourcePicker;
|
||||
return Object.assign(mockResourcePicker, mockFunctions);
|
||||
}
|
||||
|
||||
const queryType: ResourcePickerQueryType = 'logs';
|
||||
@ -284,6 +288,25 @@ describe('AzureMonitor ResourcePicker', () => {
|
||||
expect(subscriptionCheckboxAfterClear).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('should throw an error if no namespaces are found', async () => {
|
||||
const resourcePickerData = createMockResourcePickerData(['getResourceGroupsBySubscriptionId']);
|
||||
render(
|
||||
<ResourcePicker
|
||||
{...defaultProps}
|
||||
queryType={'metrics'}
|
||||
resourcePickerData={resourcePickerData}
|
||||
resource={noResourceURI}
|
||||
/>
|
||||
);
|
||||
const subscriptionExpand = await screen.findByLabelText('Expand Primary Subscription');
|
||||
await subscriptionExpand.click();
|
||||
const error = await screen.findByRole('alert');
|
||||
expect(error).toHaveTextContent('An error occurred while requesting resources from Azure Monitor');
|
||||
expect(error).toHaveTextContent(
|
||||
'Unable to resolve a list of valid metric namespaces. Validate the datasource configuration is correct and required permissions have been granted for all subscriptions. Grafana requires at least the Reader role to be assigned.'
|
||||
);
|
||||
});
|
||||
|
||||
describe('when rendering resource picker without any selectable entry types', () => {
|
||||
it('renders no checkboxes', async () => {
|
||||
await act(async () => {
|
||||
|
@ -364,6 +364,12 @@ export default class ResourcePickerData extends DataSourceWithBackend<AzureMonit
|
||||
supportedMetricNamespaces = supportedMetricNamespaces.concat(namespaceVals);
|
||||
}
|
||||
}
|
||||
|
||||
if (supportedMetricNamespaces.length === 0) {
|
||||
throw new Error(
|
||||
'Unable to resolve a list of valid metric namespaces. Validate the datasource configuration is correct and required permissions have been granted for all subscriptions. Grafana requires at least the Reader role to be assigned.'
|
||||
);
|
||||
}
|
||||
this.supportedMetricNamespaces = uniq(supportedMetricNamespaces).join(',');
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user