PublicDashboards: Return no data found instead of internal server error (#74417)

This commit is contained in:
Ezequiel Victorero
2023-09-12 20:59:28 +03:00
committed by GitHub
parent d2154387d8
commit 733044ee4b
2 changed files with 21 additions and 7 deletions
@@ -226,14 +226,10 @@ func (pd *PublicDashboardServiceImpl) Update(ctx context.Context, u *user.Signed
return nil, err
}
// validate if the dashboard exists
dashboard, err := pd.FindDashboard(ctx, u.OrgID, dto.DashboardUid)
// validate dashboard exists
_, err = pd.FindDashboard(ctx, u.OrgID, dto.DashboardUid)
if err != nil {
return nil, ErrInternalServerError.Errorf("Update: failed to find dashboard by orgId: %d and dashboardUid: %s: %w", u.OrgID, dto.DashboardUid, err)
}
if dashboard == nil {
return nil, ErrDashboardNotFound.Errorf("Update: dashboard not found by orgId: %d and dashboardUid: %s", u.OrgID, dto.DashboardUid)
return nil, err
}
// get existing public dashboard if exists
@@ -32,6 +32,7 @@ import (
"github.com/grafana/grafana/pkg/setting"
"github.com/grafana/grafana/pkg/tsdb/intervalv2"
"github.com/grafana/grafana/pkg/util"
"github.com/grafana/grafana/pkg/util/errutil"
)
var timeSettings = &TimeSettings{From: "now-12h", To: "now"}
@@ -1161,6 +1162,23 @@ func TestUpdatePublicDashboard(t *testing.T) {
assert.Error(t, err)
})
t.Run("Updating not existent dashboard", func(t *testing.T) {
dto := &SavePublicDashboardDTO{
DashboardUid: "NOTEXISTENTDASHBOARD",
UserId: 7,
PublicDashboard: &PublicDashboardDTO{},
}
updatedPubdash, err := service.Update(context.Background(), SignedInUser, dto)
assert.Error(t, err)
var grafanaErr errutil.Error
ok := errors.As(err, &grafanaErr)
assert.True(t, ok)
assert.Equal(t, "publicdashboards.dashboardNotFound", grafanaErr.MessageID)
assert.Empty(t, updatedPubdash)
})
trueBooleanField := true
timeSettings := &TimeSettings{From: "now-8", To: "now"}
shareType := EmailShareType