grafana/pkg/services/queryhistory/queryhistory_create_test.go
Haris Rozajac e81fa0e4c5
Explore: Check for RBAC permissions when hitting query history endpoints (#91156)
* Check for RBAC permissions when hitting query history endpoints; extract checking logic into a middleware

* Fix lint errors

* Fix test

* Use permissions for patch path; rename callback handler
2024-07-31 12:10:52 -06:00

46 lines
1.4 KiB
Go

package queryhistory
import (
"testing"
"github.com/stretchr/testify/require"
"github.com/grafana/grafana/pkg/components/simplejson"
)
func TestIntegrationCreateQueryInQueryHistory(t *testing.T) {
if testing.Short() {
t.Skip("skipping integration test")
}
testScenario(t, "When users tries to create query in query history it should succeed", true, true,
func(t *testing.T, sc scenarioContext) {
command := CreateQueryInQueryHistoryCommand{
DatasourceUID: "NCzh67i",
Queries: simplejson.NewFromAny(map[string]any{
"expr": "test",
}),
}
sc.reqContext.Req.Body = mockRequestBody(command)
permissionsMiddlewareCallback := sc.service.permissionsMiddleware(sc.service.createHandler, "Failed to create query history")
resp := permissionsMiddlewareCallback(sc.reqContext)
require.Equal(t, 200, resp.Status())
})
testScenario(t, "When users tries to create query in query history without permissions it should fail", true, false,
func(t *testing.T, sc scenarioContext) {
command := CreateQueryInQueryHistoryCommand{
DatasourceUID: "NCzh67i",
Queries: simplejson.NewFromAny(map[string]any{
"expr": "test",
}),
}
sc.reqContext.Req.Body = mockRequestBody(command)
permissionsMiddlewareCallback := sc.service.permissionsMiddleware(sc.service.createHandler, "Failed to create query history")
resp := permissionsMiddlewareCallback(sc.reqContext)
require.Equal(t, 401, resp.Status())
})
}