Browse Source

force GET for metadataRequests, w/ test

David Kaltschmidt 7 years ago
parent
commit
707700ac7d

+ 1 - 1
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) {

+ 20 - 0
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 = {