From 9df8c4fe86a7fb3b10abba9b282913df6d269b90 Mon Sep 17 00:00:00 2001 From: David Kaltschmidt Date: Tue, 24 Apr 2018 16:26:46 +0200 Subject: [PATCH] force GET for metadataRequests, w/ test (cherry picked from commit 707700ac7dd1d938f281c110113d274907417692) --- .../datasource/prometheus/datasource.ts | 2 +- .../prometheus/specs/datasource.jest.ts | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/public/app/plugins/datasource/prometheus/datasource.ts b/public/app/plugins/datasource/prometheus/datasource.ts index 3a2c78dce2d..cbf701a0abe 100644 --- a/public/app/plugins/datasource/prometheus/datasource.ts +++ b/public/app/plugins/datasource/prometheus/datasource.ts @@ -84,7 +84,7 @@ export class PrometheusDatasource { // Use this for tab completion features, wont publish response to other components metadataRequest(url) { - return this._request(url, null, { silent: true }); + return this._request(url, null, { method: 'GET', silent: true }); } interpolateQueryExpr(value, variable, defaultFormatFn) { diff --git a/public/app/plugins/datasource/prometheus/specs/datasource.jest.ts b/public/app/plugins/datasource/prometheus/specs/datasource.jest.ts index d2620b93bbc..a997a2d8233 100644 --- a/public/app/plugins/datasource/prometheus/specs/datasource.jest.ts +++ b/public/app/plugins/datasource/prometheus/specs/datasource.jest.ts @@ -14,6 +14,7 @@ describe('PrometheusDatasource', () => { }; ctx.backendSrvMock = {}; + ctx.templateSrvMock = { replace: a => a, }; @@ -23,6 +24,25 @@ describe('PrometheusDatasource', () => { ctx.ds = new PrometheusDatasource(instanceSettings, q, ctx.backendSrvMock, ctx.templateSrvMock, ctx.timeSrvMock); }); + describe('Datasource metadata requests', () => { + it('should perform a GET request with the default config', () => { + ctx.backendSrvMock.datasourceRequest = jest.fn(); + ctx.ds.metadataRequest('/foo'); + expect(ctx.backendSrvMock.datasourceRequest.mock.calls.length).toBe(1); + expect(ctx.backendSrvMock.datasourceRequest.mock.calls[0][0].method).toBe('GET'); + }); + + it('should still perform a GET request with the DS HTTP method set to POST', () => { + ctx.backendSrvMock.datasourceRequest = jest.fn(); + const postSettings = _.cloneDeep(instanceSettings); + postSettings.jsonData.httpMethod = 'POST'; + const ds = new PrometheusDatasource(postSettings, q, ctx.backendSrvMock, ctx.templateSrvMock, ctx.timeSrvMock); + ds.metadataRequest('/foo'); + expect(ctx.backendSrvMock.datasourceRequest.mock.calls.length).toBe(1); + expect(ctx.backendSrvMock.datasourceRequest.mock.calls[0][0].method).toBe('GET'); + }); + }); + describe('When converting prometheus histogram to heatmap format', () => { beforeEach(() => { ctx.query = {