Plugins: Support set body content in plugin routes (#32551)

Adds support for overriding the body and length in plugin routes.
This commit is contained in:
Marcus Efraimsson
2021-03-31 16:38:35 +02:00
committed by GitHub
parent 027e886997
commit aad43869c3
9 changed files with 105 additions and 0 deletions
+17
View File
@@ -69,6 +69,11 @@ func TestDataSourceProxy_routeRule(t *testing.T) {
Path: "api/restricted",
ReqRole: models.ROLE_ADMIN,
},
{
Path: "api/body",
URL: "http://www.test.com",
Body: []byte(`{ "url": "{{.JsonData.dynamicUrl}}", "secret": "{{.SecureJsonData.key}}" }`),
},
},
}
@@ -136,6 +141,18 @@ func TestDataSourceProxy_routeRule(t *testing.T) {
assert.Equal(t, "http://localhost/asd", req.URL.String())
})
t.Run("When matching route path and has dynamic body", func(t *testing.T) {
ctx, req := setUp()
proxy, err := NewDataSourceProxy(ds, plugin, ctx, "api/body", &setting.Cfg{})
require.NoError(t, err)
proxy.route = plugin.Routes[5]
ApplyRoute(proxy.ctx.Req.Context(), req, proxy.proxyPath, proxy.route, proxy.ds)
content, err := ioutil.ReadAll(req.Body)
require.NoError(t, err)
require.Equal(t, `{ "url": "https://dynamic.grafana.com", "secret": "123" }`, string(content))
})
t.Run("Validating request", func(t *testing.T) {
t.Run("plugin route with valid role", func(t *testing.T) {
ctx, _ := setUp()