@ -14,6 +14,13 @@ jest.mock('@grafana/runtime', () => ({
getTemplateSrv : ( ) = > templateSrv ,
} ) ) ;
const makeResourceURI = (
resourceName : string ,
resourceGroup = 'test-resource-group' ,
subscriptionID = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee'
) = >
` /subscriptions/ ${ subscriptionID } /resourceGroups/ ${ resourceGroup } /providers/Microsoft.OperationalInsights/workspaces/ ${ resourceName } ` ;
describe ( 'AzureLogAnalyticsDatasource' , ( ) = > {
const datasourceRequestMock = jest . spyOn ( backendSrv , 'datasourceRequest' ) ;
@ -53,6 +60,7 @@ describe('AzureLogAnalyticsDatasource', () => {
value : [
{
name : 'aworkspace' ,
id : makeResourceURI ( 'a-workspace' ) ,
properties : {
source : 'Azure' ,
customerId : 'abc1b44e-3e57-4410-b027-6cc0ae6dee67' ,
@ -72,7 +80,7 @@ describe('AzureLogAnalyticsDatasource', () => {
ctx . ds = new AzureMonitorDatasource ( ctx . instanceSettings ) ;
datasourceRequestMock . mockImplementation ( ( options : { url : string } ) = > {
if ( options . url . indexOf ( 'Microsoft.OperationalInsights/workspaces' ) > - 1 ) {
if ( options . url . indexOf ( 'Microsoft.OperationalInsights/workspaces?api-version ' ) > - 1 ) {
workspacesUrl = options . url ;
return Promise . resolve ( { data : workspaceResponse , status : 200 } ) ;
} else {
@ -80,11 +88,11 @@ describe('AzureLogAnalyticsDatasource', () => {
return Promise . resolve ( { data : tableResponseWithOneColumn , status : 200 } ) ;
}
} ) ;
} ) ;
it ( 'should use the loganalyticsazure plugin route' , async ( ) = > {
await ctx . ds . metricFindQuery ( 'workspace("aworkspace").AzureActivity | distinct Category' ) ;
} ) ;
it ( 'should use the loganalyticsazure plugin route' , ( ) = > {
expect ( workspacesUrl ) . toContain ( 'workspacesloganalytics' ) ;
expect ( azureLogAnalyticsUrl ) . toContain ( 'loganalyticsazure' ) ;
} ) ;
@ -168,12 +176,14 @@ describe('AzureLogAnalyticsDatasource', () => {
value : [
{
name : 'workspace1' ,
id : makeResourceURI ( 'workspace-1' ) ,
properties : {
customerId : 'eeee4fde-1aaa-4d60-9974-eeee562ffaa1' ,
} ,
} ,
{
name : 'workspace2' ,
id : makeResourceURI ( 'workspace-2' ) ,
properties : {
customerId : 'eeee4fde-1aaa-4d60-9974-eeee562ffaa2' ,
} ,
@ -192,11 +202,10 @@ describe('AzureLogAnalyticsDatasource', () => {
} ) ;
it ( 'should return a list of workspaces' , ( ) = > {
expect ( queryResults . length ) . toBe ( 2 ) ;
expect ( queryResults [ 0 ] . text ) . toBe ( 'workspace1' ) ;
expect ( queryResults [ 0 ] . value ) . toBe ( 'eeee4fde-1aaa-4d60-9974-eeee562ffaa1' ) ;
expect ( queryResults [ 1 ] . text ) . toBe ( 'workspace2' ) ;
expect ( queryResults [ 1 ] . value ) . toBe ( 'eeee4fde-1aaa-4d60-9974-eeee562ffaa2' ) ;
expect ( queryResults ) . toEqual ( [
{ text : 'workspace1' , value : makeResourceURI ( 'workspace-1' ) } ,
{ text : 'workspace2' , value : makeResourceURI ( 'workspace-2' ) } ,
] ) ;
} ) ;
} ) ;
@ -211,11 +220,10 @@ describe('AzureLogAnalyticsDatasource', () => {
} ) ;
it ( 'should return a list of workspaces' , ( ) = > {
expect ( queryResults . length ) . toBe ( 2 ) ;
expect ( queryResults [ 0 ] . text ) . toBe ( 'workspace1' ) ;
expect ( queryResults [ 0 ] . value ) . toBe ( 'eeee4fde-1aaa-4d60-9974-eeee562ffaa1' ) ;
expect ( queryResults [ 1 ] . text ) . toBe ( 'workspace2' ) ;
expect ( queryResults [ 1 ] . value ) . toBe ( 'eeee4fde-1aaa-4d60-9974-eeee562ffaa2' ) ;
expect ( queryResults ) . toEqual ( [
{ text : 'workspace1' , value : makeResourceURI ( 'workspace-1' ) } ,
{ text : 'workspace2' , value : makeResourceURI ( 'workspace-2' ) } ,
] ) ;
} ) ;
} ) ;
@ -230,11 +238,10 @@ describe('AzureLogAnalyticsDatasource', () => {
} ) ;
it ( 'should return a list of workspaces' , ( ) = > {
expect ( queryResults . length ) . toBe ( 2 ) ;
expect ( queryResults [ 0 ] . text ) . toBe ( 'workspace1' ) ;
expect ( queryResults [ 0 ] . value ) . toBe ( 'eeee4fde-1aaa-4d60-9974-eeee562ffaa1' ) ;
expect ( queryResults [ 1 ] . text ) . toBe ( 'workspace2' ) ;
expect ( queryResults [ 1 ] . value ) . toBe ( 'eeee4fde-1aaa-4d60-9974-eeee562ffaa2' ) ;
expect ( queryResults ) . toEqual ( [
{ text : 'workspace1' , value : makeResourceURI ( 'workspace-1' ) } ,
{ text : 'workspace2' , value : makeResourceURI ( 'workspace-2' ) } ,
] ) ;
} ) ;
} ) ;
@ -258,6 +265,7 @@ describe('AzureLogAnalyticsDatasource', () => {
value : [
{
name : 'aworkspace' ,
id : makeResourceURI ( 'a-workspace' ) ,
properties : {
source : 'Azure' ,
customerId : 'abc1b44e-3e57-4410-b027-6cc0ae6dee67' ,
@ -268,22 +276,22 @@ describe('AzureLogAnalyticsDatasource', () => {
beforeEach ( async ( ) = > {
datasourceRequestMock . mockImplementation ( ( options : { url : string } ) = > {
if ( options . url . indexOf ( 'Microsoft. OperationalInsights/workspaces' ) > - 1 ) {
if ( options . url . indexOf ( 'OperationalInsights/workspaces?api-version= ' ) > - 1 ) {
return Promise . resolve ( { data : workspaceResponse , status : 200 } ) ;
} else {
return Promise . resolve ( { data : tableResponseWithOneColumn , status : 200 } ) ;
}
} ) ;
queryResults = await ctx . ds . metricFindQuery ( 'workspace("aworkspace").AzureActivity | distinct Category' ) ;
} ) ;
it ( 'should return a list of categories in the correct format' , ( ) = > {
expect ( queryResults . length ) . toBe ( 2 ) ;
expect ( queryResults [ 0 ] . text ) . toBe ( 'Administrative' ) ;
expect ( queryResults [ 0 ] . value ) . toBe ( 'Administrative' ) ;
expect ( queryResults [ 1 ] . text ) . toBe ( 'Policy' ) ;
expect ( queryResults [ 1 ] . value ) . toBe ( 'Policy' ) ;
it ( 'should return a list of categories in the correct format' , async ( ) = > {
const results = await ctx . ds . metricFindQuery ( 'workspace("aworkspace").AzureActivity | distinct Category' ) ;
expect ( results . length ) . toBe ( 2 ) ;
expect ( results [ 0 ] . text ) . toBe ( 'Administrative' ) ;
expect ( results [ 0 ] . value ) . toBe ( 'Administrative' ) ;
expect ( results [ 1 ] . text ) . toBe ( 'Policy' ) ;
expect ( results [ 1 ] . value ) . toBe ( 'Policy' ) ;
} ) ;
} ) ;
} ) ;
@ -319,6 +327,7 @@ describe('AzureLogAnalyticsDatasource', () => {
value : [
{
name : 'aworkspace' ,
id : makeResourceURI ( 'a-workspace' ) ,
properties : {
source : 'Azure' ,
customerId : 'abc1b44e-3e57-4410-b027-6cc0ae6dee67' ,