provisioned dashboard validation should be made when importing a dashboard
Had to add the validate before save command before validating provisioned dashboard so that the import would get a proper dashboard id
This commit is contained in:
@@ -93,6 +93,16 @@ func (dr *dashboardServiceImpl) buildSaveDashboardCommand(dto *SaveDashboardDTO,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
validateBeforeSaveCmd := models.ValidateDashboardBeforeSaveCommand{
|
||||||
|
OrgId: dto.OrgId,
|
||||||
|
Dashboard: dash,
|
||||||
|
Overwrite: dto.Overwrite,
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := bus.Dispatch(&validateBeforeSaveCmd); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
if validateProvisionedDashboard {
|
if validateProvisionedDashboard {
|
||||||
isDashboardProvisioned := &models.IsDashboardProvisionedQuery{DashboardId: dash.Id}
|
isDashboardProvisioned := &models.IsDashboardProvisionedQuery{DashboardId: dash.Id}
|
||||||
err := bus.Dispatch(isDashboardProvisioned)
|
err := bus.Dispatch(isDashboardProvisioned)
|
||||||
@@ -106,16 +116,6 @@ func (dr *dashboardServiceImpl) buildSaveDashboardCommand(dto *SaveDashboardDTO,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
validateBeforeSaveCmd := models.ValidateDashboardBeforeSaveCommand{
|
|
||||||
OrgId: dto.OrgId,
|
|
||||||
Dashboard: dash,
|
|
||||||
Overwrite: dto.Overwrite,
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := bus.Dispatch(&validateBeforeSaveCmd); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
guard := guardian.New(dash.GetDashboardIdForSavePermissionCheck(), dto.OrgId, dto.User)
|
guard := guardian.New(dash.GetDashboardIdForSavePermissionCheck(), dto.OrgId, dto.User)
|
||||||
if canSave, err := guard.CanSave(); err != nil || !canSave {
|
if canSave, err := guard.CanSave(); err != nil || !canSave {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -160,6 +160,42 @@ func TestDashboardService(t *testing.T) {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Convey("Import dashboard validation", func() {
|
||||||
|
dto := &SaveDashboardDTO{}
|
||||||
|
|
||||||
|
Convey("Should return validation error if dashboard is provisioned", func() {
|
||||||
|
provisioningValidated := false
|
||||||
|
bus.AddHandler("test", func(cmd *models.IsDashboardProvisionedQuery) error {
|
||||||
|
provisioningValidated = true
|
||||||
|
cmd.Result = true
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
|
||||||
|
bus.AddHandler("test", func(cmd *models.ValidateDashboardAlertsCommand) error {
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
|
||||||
|
bus.AddHandler("test", func(cmd *models.ValidateDashboardBeforeSaveCommand) error {
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
|
||||||
|
bus.AddHandler("test", func(cmd *models.SaveProvisionedDashboardCommand) error {
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
|
||||||
|
bus.AddHandler("test", func(cmd *models.UpdateDashboardAlertsCommand) error {
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
|
||||||
|
dto.Dashboard = models.NewDashboard("Dash")
|
||||||
|
dto.Dashboard.SetId(3)
|
||||||
|
dto.User = &models.SignedInUser{UserId: 1}
|
||||||
|
_, err := service.ImportDashboard(dto)
|
||||||
|
So(provisioningValidated, ShouldBeTrue)
|
||||||
|
So(err, ShouldEqual, models.ErrDashboardCannotSaveProvisionedDashboard)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
Reset(func() {
|
Reset(func() {
|
||||||
guardian.New = origNewDashboardGuardian
|
guardian.New = origNewDashboardGuardian
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user