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

This commit is contained in:
Ezequiel Victorero 2023-09-12 14:59:28 -03:00 committed by GitHub
parent d2154387d8
commit 733044ee4b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 7 deletions

View File

@ -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

View File

@ -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