Public Dashboards: Usage Insights (#52768)

This commit is contained in:
owensmallwood
2022-08-10 14:14:48 -03:00
committed by GitHub
parent 5e4d5eb14b
commit dc23643bee
15 changed files with 217 additions and 0 deletions
@@ -197,3 +197,21 @@ func (d *PublicDashboardStoreImpl) PublicDashboardEnabled(ctx context.Context, d
return hasPublicDashboard, err
}
func (d *PublicDashboardStoreImpl) AccessTokenExists(ctx context.Context, accessToken string) (bool, error) {
hasPublicDashboard := false
err := d.sqlStore.WithDbSession(ctx, func(dbSession *sqlstore.DBSession) error {
sql := "SELECT COUNT(*) FROM dashboard_public WHERE access_token=? AND is_enabled=true"
result, err := dbSession.SQL(sql, accessToken).Count()
if err != nil {
return err
}
hasPublicDashboard = result > 0
return err
})
return hasPublicDashboard, err
}
@@ -64,6 +64,38 @@ func TestIntegrationGetPublicDashboard(t *testing.T) {
publicdashboardStore = ProvideStore(sqlStore)
savedDashboard = insertTestDashboard(t, dashboardStore, "testDashie", 1, 0, true)
}
t.Run("AccessTokenExists will return true when at least one public dashboard has a matching access token", func(t *testing.T) {
setup()
_, err := publicdashboardStore.SavePublicDashboardConfig(context.Background(), SavePublicDashboardConfigCommand{
DashboardUid: savedDashboard.Uid,
OrgId: savedDashboard.OrgId,
PublicDashboard: PublicDashboard{
IsEnabled: true,
Uid: "abc123",
DashboardUid: savedDashboard.Uid,
OrgId: savedDashboard.OrgId,
CreatedAt: time.Now(),
CreatedBy: 7,
AccessToken: "accessToken",
},
})
require.NoError(t, err)
res, err := publicdashboardStore.AccessTokenExists(context.Background(), "accessToken")
require.NoError(t, err)
require.True(t, res)
})
t.Run("AccessTokenExists will return false when no public dashboard has matching access token", func(t *testing.T) {
setup()
res, err := publicdashboardStore.AccessTokenExists(context.Background(), "accessToken")
require.NoError(t, err)
require.False(t, res)
})
t.Run("PublicDashboardEnabled Will return true when dashboard has at least one enabled public dashboard", func(t *testing.T) {
setup()