Files
2022-08-01 17:48:49 +02:00

169 lines
5.9 KiB
TypeScript

import createMockQuery from '../../__mocks__/query';
import { ResourceRowGroup, ResourceRowType } from './types';
import { findRow, parseResourceURI, setResource } from './utils';
describe('AzureMonitor ResourcePicker utils', () => {
describe('parseResourceURI', () => {
it('should parse subscription URIs', () => {
expect(parseResourceURI('/subscriptions/44693801-6ee6-49de-9b2d-9106972f9572')).toEqual({
subscription: '44693801-6ee6-49de-9b2d-9106972f9572',
});
});
it('should parse resource group URIs', () => {
expect(
parseResourceURI('/subscriptions/44693801-6ee6-49de-9b2d-9106972f9572/resourceGroups/cloud-datasources')
).toEqual({
subscription: '44693801-6ee6-49de-9b2d-9106972f9572',
resourceGroup: 'cloud-datasources',
});
});
it('should parse resource URIs', () => {
expect(
parseResourceURI(
'/subscriptions/44693801-6ee6-49de-9b2d-9106972f9572/resourceGroups/cloud-datasources/providers/Microsoft.Compute/virtualMachines/GithubTestDataVM'
)
).toEqual({
subscription: '44693801-6ee6-49de-9b2d-9106972f9572',
resourceGroup: 'cloud-datasources',
metricNamespace: 'Microsoft.Compute/virtualMachines',
resourceName: 'GithubTestDataVM',
});
});
it('should parse resource URIs with a subresource', () => {
expect(
parseResourceURI(
'/subscriptions/44693801-6ee6-49de-9b2d-9106972f9572/resourceGroups/cloud-datasources/providers/Microsoft.Storage/storageAccounts/csb100320016c43d2d0/fileServices/default'
)
).toEqual({
subscription: '44693801-6ee6-49de-9b2d-9106972f9572',
resourceGroup: 'cloud-datasources',
metricNamespace: 'Microsoft.Storage/storageAccounts/fileServices',
resourceName: 'csb100320016c43d2d0/default',
});
});
it('returns undefined for invalid input', () => {
expect(parseResourceURI('44693801-6ee6-49de-9b2d-9106972f9572')).toEqual({});
});
it('returns a valid response with a missing element in the metric namespace and name', () => {
expect(
parseResourceURI(
'/subscriptions/44693801-6ee6-49de-9b2d-9106972f9572/resourceGroups/cloud-datasources/providers/foo'
)
).toEqual({
metricNamespace: 'foo',
resourceGroup: 'cloud-datasources',
resourceName: '',
subscription: '44693801-6ee6-49de-9b2d-9106972f9572',
});
expect(
parseResourceURI(
'/subscriptions/44693801-6ee6-49de-9b2d-9106972f9572/resourceGroups/cloud-datasources/providers/foo/bar'
)
).toEqual({
metricNamespace: 'foo/bar',
resourceGroup: 'cloud-datasources',
resourceName: '',
subscription: '44693801-6ee6-49de-9b2d-9106972f9572',
});
});
});
describe('findRow', () => {
it('should find a row', () => {
const rows: ResourceRowGroup = [
{ id: '', uri: '/subscription/sub', name: '', type: ResourceRowType.Subscription, typeLabel: '' },
];
expect(findRow(rows, '/subscription/sub')).toEqual(rows[0]);
});
it('should find a row ignoring a subresource', () => {
const rows: ResourceRowGroup = [
{
id: '',
uri: '/subscriptions/44693801-6ee6-49de-9b2d-9106972f9572/resourceGroups/cloud-datasources/providers/Microsoft.Storage/storageAccounts/csb100320016c43d2d0',
name: '',
type: ResourceRowType.Resource,
typeLabel: '',
},
];
expect(
findRow(
rows,
'/subscriptions/44693801-6ee6-49de-9b2d-9106972f9572/resourceGroups/cloud-datasources/providers/Microsoft.Storage/storageAccounts/csb100320016c43d2d0/fileServices/default'
)
).toEqual(rows[0]);
});
it('should find a row ignoring a metric namespace case', () => {
const rows: ResourceRowGroup = [
{
id: '',
uri: '/subscriptions/44693801-6ee6-49de-9b2d-9106972f9572/resourceGroups/cloud-datasources/providers/microsoft.storage/storageaccounts/csb100320016c43d2d0',
name: '',
type: ResourceRowType.Resource,
typeLabel: '',
},
];
expect(
findRow(
rows,
'/subscriptions/44693801-6ee6-49de-9b2d-9106972f9572/resourceGroups/cloud-datasources/providers/Microsoft.Storage/storageAccounts/csb100320016c43d2d0'
)
).toEqual(rows[0]);
});
it('should find a row ignoring a resource group case', () => {
const rows: ResourceRowGroup = [
{
id: '',
uri: '/subscriptions/44693801-6ee6-49de-9b2d-9106972f9572/resourceGroups/CLOUD-DATASOURCES/providers/microsoft.storage/storageaccounts/csb100320016c43d2d0',
name: '',
type: ResourceRowType.Resource,
typeLabel: '',
},
];
expect(
findRow(
rows,
'/subscriptions/44693801-6ee6-49de-9b2d-9106972f9572/resourceGroups/cloud-datasources/providers/Microsoft.Storage/storageAccounts/csb100320016c43d2d0'
)
).toEqual(rows[0]);
});
});
describe('setResource', () => {
it('updates a resource with a resource URI for Log Analytics', () => {
expect(setResource(createMockQuery(), '/subscription/sub')).toMatchObject({
azureLogAnalytics: { resource: '/subscription/sub' },
});
});
it('updates a resource with a resource parameters for Metrics', () => {
expect(
setResource(createMockQuery(), {
subscription: 'sub',
resourceGroup: 'rg',
metricNamespace: 'Microsoft.Storage/storageAccounts',
resourceName: 'testacct',
})
).toMatchObject({
subscription: 'sub',
azureMonitor: {
aggregation: undefined,
metricName: undefined,
metricNamespace: 'microsoft.storage/storageaccounts',
resourceGroup: 'rg',
resourceName: 'testacct',
},
});
});
});
});