From 34a865ebf0d5d6009cd268113716e3fecf572efb Mon Sep 17 00:00:00 2001 From: Ezequiel Victorero Date: Wed, 11 Jan 2023 18:25:18 -0300 Subject: [PATCH] PublicDashboards: remove publicDashboardUID from insights event request (#60649) --- pkg/services/publicdashboards/api/query.go | 1 - .../publicdashboards/api/query_test.go | 5 ++- .../public_dashboard_service_mock.go | 36 ++++++++++++++++--- .../publicdashboards/publicdashboard.go | 1 + .../publicdashboards/service/service.go | 18 +++++++--- .../dashboard/state/analyticsProcessor.ts | 1 - .../features/query/state/queryAnalytics.ts | 5 --- 7 files changed, 50 insertions(+), 17 deletions(-) diff --git a/pkg/services/publicdashboards/api/query.go b/pkg/services/publicdashboards/api/query.go index 87bbb1355de..a1bf190112f 100644 --- a/pkg/services/publicdashboards/api/query.go +++ b/pkg/services/publicdashboards/api/query.go @@ -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) diff --git a/pkg/services/publicdashboards/api/query_test.go b/pkg/services/publicdashboards/api/query_test.go index 4a1eb4ff142..44b9466920b 100644 --- a/pkg/services/publicdashboards/api/query_test.go +++ b/pkg/services/publicdashboards/api/query_test.go @@ -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()) diff --git a/pkg/services/publicdashboards/public_dashboard_service_mock.go b/pkg/services/publicdashboards/public_dashboard_service_mock.go index afee7d78e5b..a8544cc2b0e 100644 --- a/pkg/services/publicdashboards/public_dashboard_service_mock.go +++ b/pkg/services/publicdashboards/public_dashboard_service_mock.go @@ -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) diff --git a/pkg/services/publicdashboards/publicdashboard.go b/pkg/services/publicdashboards/publicdashboard.go index cf019141255..e78ef487d4e 100644 --- a/pkg/services/publicdashboards/publicdashboard.go +++ b/pkg/services/publicdashboards/publicdashboard.go @@ -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) diff --git a/pkg/services/publicdashboards/service/service.go b/pkg/services/publicdashboards/service/service.go index 31ebdb12d18..adbf48006c2 100644 --- a/pkg/services/publicdashboards/service/service.go +++ b/pkg/services/publicdashboards/service/service.go @@ -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 { diff --git a/public/app/features/dashboard/state/analyticsProcessor.ts b/public/app/features/dashboard/state/analyticsProcessor.ts index eea9ed0a214..258cf71ee45 100644 --- a/public/app/features/dashboard/state/analyticsProcessor.ts +++ b/public/app/features/dashboard/state/analyticsProcessor.ts @@ -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); diff --git a/public/app/features/query/state/queryAnalytics.ts b/public/app/features/query/state/queryAnalytics.ts index 8d977555b78..23d5ded86a3 100644 --- a/public/app/features/query/state/queryAnalytics.ts +++ b/public/app/features/query/state/queryAnalytics.ts @@ -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) {