mirror of
https://github.com/grafana/grafana.git
synced 2025-02-20 11:48:34 -06:00
This PR refactors how we add the orgId to the context on a public dashboard paths. We also split out accessToken handling into its own package and rework status code for "RequiresValidAccessToken". We will be modeling all endpoints to use these status codes going forward. Additionally, it includes a scaffold for better middleware testing and refactors existing tests to table drive tests.
45 lines
1.3 KiB
Go
45 lines
1.3 KiB
Go
package validation
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/grafana/grafana/pkg/components/simplejson"
|
|
"github.com/grafana/grafana/pkg/models"
|
|
. "github.com/grafana/grafana/pkg/services/publicdashboards/models"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestValidateSavePublicDashboard(t *testing.T) {
|
|
t.Run("Returns validation error when dashboard has template variables", func(t *testing.T) {
|
|
templateVars := []byte(`{
|
|
"templating": {
|
|
"list": [
|
|
{
|
|
"name": "templateVariableName"
|
|
}
|
|
]
|
|
}
|
|
}`)
|
|
dashboardData, _ := simplejson.NewJson(templateVars)
|
|
dashboard := models.NewDashboardFromJson(dashboardData)
|
|
dto := &SavePublicDashboardConfigDTO{DashboardUid: "abc123", OrgId: 1, UserId: 1, PublicDashboard: nil}
|
|
|
|
err := ValidateSavePublicDashboard(dto, dashboard)
|
|
require.ErrorContains(t, err, ErrPublicDashboardHasTemplateVariables.Reason)
|
|
})
|
|
|
|
t.Run("Returns no validation error when dashboard has no template variables", func(t *testing.T) {
|
|
templateVars := []byte(`{
|
|
"templating": {
|
|
"list": []
|
|
}
|
|
}`)
|
|
dashboardData, _ := simplejson.NewJson(templateVars)
|
|
dashboard := models.NewDashboardFromJson(dashboardData)
|
|
dto := &SavePublicDashboardConfigDTO{DashboardUid: "abc123", OrgId: 1, UserId: 1, PublicDashboard: nil}
|
|
|
|
err := ValidateSavePublicDashboard(dto, dashboard)
|
|
require.NoError(t, err)
|
|
})
|
|
}
|