PublicDashboards: remove publicDashboardUID from insights event request (#60649)

This commit is contained in:
Ezequiel Victorero 2023-01-11 18:25:18 -03:00 committed by GitHub
parent b3272fe62c
commit 34a865ebf0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 50 additions and 17 deletions

View File

@ -42,7 +42,6 @@ func (api *Api) ViewPublicDashboard(c *models.ReqContext) response.Response {
IsFolder: false,
FolderId: dash.FolderId,
PublicDashboardAccessToken: pubdash.AccessToken,
PublicDashboardUID: pubdash.Uid,
}
dash.Data.Get("timepicker").Set("hidden", !pubdash.TimeSelectionEnabled)

View File

@ -84,7 +84,7 @@ func TestAPIViewPublicDashboard(t *testing.T) {
t.Run(test.Name, func(t *testing.T) {
service := publicdashboards.NewFakePublicDashboardService(t)
service.On("FindPublicDashboardAndDashboardByAccessToken", mock.Anything, mock.AnythingOfType("string")).
Return(&PublicDashboard{}, test.DashboardResult, test.Err).Maybe()
Return(&PublicDashboard{Uid: "pubdashuid"}, test.DashboardResult, test.Err).Maybe()
cfg := setting.NewCfg()
cfg.RBACEnabled = false
@ -115,6 +115,9 @@ func TestAPIViewPublicDashboard(t *testing.T) {
assert.Equal(t, false, dashResp.Meta.CanEdit)
assert.Equal(t, false, dashResp.Meta.CanDelete)
assert.Equal(t, false, dashResp.Meta.CanSave)
// publicDashboardUID should be always empty
assert.Equal(t, "", dashResp.Meta.PublicDashboardUID)
} else if test.FixedErrorResponse != "" {
require.Equal(t, test.ExpectedHttpResponse, response.Code)
require.JSONEq(t, "{\"message\":\"Invalid access token\", \"messageId\":\"publicdashboards.invalidAccessToken\", \"statusCode\":400, \"traceID\":\"\"}", response.Body.String())

View File

@ -1,4 +1,4 @@
// Code generated by mockery v2.12.1. DO NOT EDIT.
// Code generated by mockery v2.14.0. DO NOT EDIT.
package publicdashboards
@ -15,8 +15,6 @@ import (
pkgmodels "github.com/grafana/grafana/pkg/models"
testing "testing"
user "github.com/grafana/grafana/pkg/services/user"
)
@ -150,6 +148,29 @@ func (_m *FakePublicDashboardService) FindAnnotations(ctx context.Context, reqDT
return r0, r1
}
// FindByAccessToken provides a mock function with given fields: ctx, accessToken
func (_m *FakePublicDashboardService) FindByAccessToken(ctx context.Context, accessToken string) (*models.PublicDashboard, error) {
ret := _m.Called(ctx, accessToken)
var r0 *models.PublicDashboard
if rf, ok := ret.Get(0).(func(context.Context, string) *models.PublicDashboard); ok {
r0 = rf(ctx, accessToken)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*models.PublicDashboard)
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, string) error); ok {
r1 = rf(ctx, accessToken)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// FindByDashboardUid provides a mock function with given fields: ctx, orgId, dashboardUid
func (_m *FakePublicDashboardService) FindByDashboardUid(ctx context.Context, orgId int64, dashboardUid string) (*models.PublicDashboard, error) {
ret := _m.Called(ctx, orgId, dashboardUid)
@ -358,8 +379,13 @@ func (_m *FakePublicDashboardService) Update(ctx context.Context, u *user.Signed
return r0, r1
}
// NewFakePublicDashboardService creates a new instance of FakePublicDashboardService. It also registers the testing.TB interface on the mock and a cleanup function to assert the mocks expectations.
func NewFakePublicDashboardService(t testing.TB) *FakePublicDashboardService {
type mockConstructorTestingTNewFakePublicDashboardService interface {
mock.TestingT
Cleanup(func())
}
// NewFakePublicDashboardService creates a new instance of FakePublicDashboardService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
func NewFakePublicDashboardService(t mockConstructorTestingTNewFakePublicDashboardService) *FakePublicDashboardService {
mock := &FakePublicDashboardService{}
mock.Mock.Test(t)

View File

@ -16,6 +16,7 @@ import (
//go:generate mockery --name Service --structname FakePublicDashboardService --inpackage --filename public_dashboard_service_mock.go
type Service interface {
FindPublicDashboardAndDashboardByAccessToken(ctx context.Context, accessToken string) (*PublicDashboard, *models.Dashboard, error)
FindByAccessToken(ctx context.Context, accessToken string) (*PublicDashboard, error)
FindByDashboardUid(ctx context.Context, orgId int64, dashboardUid string) (*PublicDashboard, error)
FindAnnotations(ctx context.Context, reqDTO AnnotationsQueryDTO, accessToken string) ([]AnnotationEvent, error)
FindDashboard(ctx context.Context, orgId int64, dashboardUid string) (*models.Dashboard, error)

View File

@ -75,15 +75,25 @@ func (pd *PublicDashboardServiceImpl) FindDashboard(ctx context.Context, orgId i
return dash, nil
}
// FindPublicDashboardAndDashboardByAccessToken Gets public dashboard and a dashboard by access token
func (pd *PublicDashboardServiceImpl) FindPublicDashboardAndDashboardByAccessToken(ctx context.Context, accessToken string) (*PublicDashboard, *models.Dashboard, error) {
// FindByAccessToken Gets public dashboard by access token
func (pd *PublicDashboardServiceImpl) FindByAccessToken(ctx context.Context, accessToken string) (*PublicDashboard, error) {
pubdash, err := pd.store.FindByAccessToken(ctx, accessToken)
if err != nil {
return nil, nil, ErrInternalServerError.Errorf("FindPublicDashboardAndDashboardByAccessToken: failed to find a public dashboard: %w", err)
return nil, ErrInternalServerError.Errorf("FindByAccessToken: failed to find a public dashboard: %w", err)
}
if pubdash == nil {
return nil, nil, ErrPublicDashboardNotFound.Errorf("FindPublicDashboardAndDashboardByAccessToken: Public dashboard not found accessToken: %s", accessToken)
return nil, ErrPublicDashboardNotFound.Errorf("FindByAccessToken: Public dashboard not found accessToken: %s", accessToken)
}
return pubdash, nil
}
// FindPublicDashboardAndDashboardByAccessToken Gets public dashboard and a dashboard by access token
func (pd *PublicDashboardServiceImpl) FindPublicDashboardAndDashboardByAccessToken(ctx context.Context, accessToken string) (*PublicDashboard, *models.Dashboard, error) {
pubdash, err := pd.FindByAccessToken(ctx, accessToken)
if err != nil {
return nil, nil, err
}
if !pubdash.IsEnabled {

View File

@ -9,7 +9,6 @@ export function emitDashboardViewEvent(dashboard: DashboardModel) {
dashboardUid: dashboard.uid,
folderName: dashboard.meta.folderTitle,
eventName: MetaAnalyticsEventName.DashboardView,
publicDashboardUid: dashboard.meta.publicDashboardUid,
};
reportMetaAnalytics(eventData);

View File

@ -1,6 +1,5 @@
import { PanelData, LoadingState, DataSourceApi, CoreApp, urlUtil } from '@grafana/data';
import { reportMetaAnalytics, MetaAnalyticsEventName, DataRequestEventPayload } from '@grafana/runtime';
import { getConfig } from 'app/core/config';
import { getDashboardSrv } from '../../dashboard/services/DashboardSrv';
@ -77,10 +76,6 @@ export function emitDataRequestEvent(datasource: DataSourceApi) {
eventData.dashboardName = dashboard.title;
eventData.dashboardUid = dashboard.uid;
eventData.folderName = dashboard.meta.folderTitle;
if (getConfig().isPublicDashboardView) {
eventData.publicDashboardUid = dashboard.meta.publicDashboardUid;
}
}
if (data.error) {