Commit 10fbabfb by Leonard Gram Committed by GitHub

Sqlstore: guard against getting a dashboard without specifying identi… (#22246)

* Sqlstore: guard against getting a dashboard without specifying identifier

* Sqlstore: linting
parent 0c4dae32
...@@ -32,6 +32,7 @@ var ( ...@@ -32,6 +32,7 @@ var (
ErrDashboardUidToLong = errors.New("uid to long. max 40 characters") ErrDashboardUidToLong = errors.New("uid to long. max 40 characters")
ErrDashboardCannotSaveProvisionedDashboard = errors.New("Cannot save provisioned dashboard") ErrDashboardCannotSaveProvisionedDashboard = errors.New("Cannot save provisioned dashboard")
ErrDashboardCannotDeleteProvisionedDashboard = errors.New("provisioned dashboard cannot be deleted") ErrDashboardCannotDeleteProvisionedDashboard = errors.New("provisioned dashboard cannot be deleted")
ErrDashboardIdentifierNotSet = errors.New("Unique identfier needed to be able to get a dashboard")
RootFolderName = "General" RootFolderName = "General"
) )
......
...@@ -169,6 +169,10 @@ func generateNewDashboardUid(sess *DBSession, orgId int64) (string, error) { ...@@ -169,6 +169,10 @@ func generateNewDashboardUid(sess *DBSession, orgId int64) (string, error) {
} }
func GetDashboard(query *models.GetDashboardQuery) error { func GetDashboard(query *models.GetDashboardQuery) error {
if query.Id == 0 && len(query.Slug) == 0 && len(query.Uid) == 0 {
return models.ErrDashboardIdentifierNotSet
}
dashboard := models.Dashboard{Slug: query.Slug, OrgId: query.OrgId, Id: query.Id, Uid: query.Uid} dashboard := models.Dashboard{Slug: query.Slug, OrgId: query.OrgId, Id: query.Id, Uid: query.Uid}
has, err := x.Get(&dashboard) has, err := x.Get(&dashboard)
......
...@@ -88,6 +88,15 @@ func TestDashboardDataAccess(t *testing.T) { ...@@ -88,6 +88,15 @@ func TestDashboardDataAccess(t *testing.T) {
So(query.Result.IsFolder, ShouldBeFalse) So(query.Result.IsFolder, ShouldBeFalse)
}) })
Convey("Shouldn't be able to get a dashboard with just an OrgID", func() {
query := m.GetDashboardQuery{
OrgId: 1,
}
err := GetDashboard(&query)
So(err, ShouldEqual, m.ErrDashboardIdentifierNotSet)
})
Convey("Should be able to delete dashboard", func() { Convey("Should be able to delete dashboard", func() {
dash := insertTestDashboard("delete me", 1, 0, false, "delete this") dash := insertTestDashboard("delete me", 1, 0, false, "delete this")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment