diff --git a/pkg/services/publicdashboards/database/database.go b/pkg/services/publicdashboards/database/database.go index e1cda805fbe..b3be76c23ae 100644 --- a/pkg/services/publicdashboards/database/database.go +++ b/pkg/services/publicdashboards/database/database.go @@ -33,7 +33,7 @@ func ProvideStore(sqlStore db.DB) *PublicDashboardStoreImpl { } } -// Gets list of public dashboards by orgId +// FindAll Returns a list of public dashboards by orgId func (d *PublicDashboardStoreImpl) FindAll(ctx context.Context, orgId int64) ([]PublicDashboardListResponse, error) { resp := make([]PublicDashboardListResponse, 0) @@ -55,8 +55,8 @@ func (d *PublicDashboardStoreImpl) FindAll(ctx context.Context, orgId int64) ([] return resp, nil } -func (d *PublicDashboardStoreImpl) FindDashboard(ctx context.Context, dashboardUid string) (*models.Dashboard, error) { - dashboard := &models.Dashboard{Uid: dashboardUid} +func (d *PublicDashboardStoreImpl) FindDashboard(ctx context.Context, dashboardUid string, orgId int64) (*models.Dashboard, error) { + dashboard := &models.Dashboard{Uid: dashboardUid, OrgId: orgId} err := d.sqlStore.WithTransactionalDbSession(ctx, func(sess *db.Session) error { has, err := sess.Get(dashboard) if err != nil { diff --git a/pkg/services/publicdashboards/database/database_test.go b/pkg/services/publicdashboards/database/database_test.go index 3d3f801d654..4ce0748d171 100644 --- a/pkg/services/publicdashboards/database/database_test.go +++ b/pkg/services/publicdashboards/database/database_test.go @@ -81,7 +81,7 @@ func TestIntegrationFindDashboard(t *testing.T) { t.Run("FindDashboard can get original dashboard by uid", func(t *testing.T) { setup() - dashboard, err := publicdashboardStore.FindDashboard(context.Background(), savedDashboard.Uid) + dashboard, err := publicdashboardStore.FindDashboard(context.Background(), savedDashboard.Uid, savedDashboard.OrgId) require.NoError(t, err) require.Equal(t, savedDashboard.Uid, dashboard.Uid) diff --git a/pkg/services/publicdashboards/public_dashboard_service_mock.go b/pkg/services/publicdashboards/public_dashboard_service_mock.go index f96989216bc..867509f506f 100644 --- a/pkg/services/publicdashboards/public_dashboard_service_mock.go +++ b/pkg/services/publicdashboards/public_dashboard_service_mock.go @@ -23,20 +23,20 @@ type FakePublicDashboardService struct { mock.Mock } -// NewPublicDashboardAccessToken provides a mock function with given fields: ctx -func (_m *FakePublicDashboardService) NewPublicDashboardAccessToken(ctx context.Context) (string, error) { - ret := _m.Called(ctx) +// ExistsEnabledByAccessToken provides a mock function with given fields: ctx, accessToken +func (_m *FakePublicDashboardService) ExistsEnabledByAccessToken(ctx context.Context, accessToken string) (bool, error) { + ret := _m.Called(ctx, accessToken) - var r0 string - if rf, ok := ret.Get(0).(func(context.Context) string); ok { - r0 = rf(ctx) + var r0 bool + if rf, ok := ret.Get(0).(func(context.Context, string) bool); ok { + r0 = rf(ctx, accessToken) } else { - r0 = ret.Get(0).(string) + r0 = ret.Get(0).(bool) } var r1 error - if rf, ok := ret.Get(1).(func(context.Context) error); ok { - r1 = rf(ctx) + if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { + r1 = rf(ctx, accessToken) } else { r1 = ret.Error(1) } @@ -44,20 +44,20 @@ func (_m *FakePublicDashboardService) NewPublicDashboardAccessToken(ctx context. return r0, r1 } -// GenerateNewPublicDashboardUid provides a mock function with given fields: ctx -func (_m *FakePublicDashboardService) NewPublicDashboardUid(ctx context.Context) (string, error) { - ret := _m.Called(ctx) +// ExistsEnabledByDashboardUid provides a mock function with given fields: ctx, dashboardUid +func (_m *FakePublicDashboardService) ExistsEnabledByDashboardUid(ctx context.Context, dashboardUid string) (bool, error) { + ret := _m.Called(ctx, dashboardUid) - var r0 string - if rf, ok := ret.Get(0).(func(context.Context) string); ok { - r0 = rf(ctx) + var r0 bool + if rf, ok := ret.Get(0).(func(context.Context, string) bool); ok { + r0 = rf(ctx, dashboardUid) } else { - r0 = ret.Get(0).(string) + r0 = ret.Get(0).(bool) } var r1 error - if rf, ok := ret.Get(1).(func(context.Context) error); ok { - r1 = rf(ctx) + if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { + r1 = rf(ctx, dashboardUid) } else { r1 = ret.Error(1) } @@ -65,7 +65,30 @@ func (_m *FakePublicDashboardService) NewPublicDashboardUid(ctx context.Context) return r0, r1 } -// GetAnnotations provides a mock function with given fields: ctx, reqDTO, accessToken +// FindAll provides a mock function with given fields: ctx, u, orgId +func (_m *FakePublicDashboardService) FindAll(ctx context.Context, u *user.SignedInUser, orgId int64) ([]models.PublicDashboardListResponse, error) { + ret := _m.Called(ctx, u, orgId) + + var r0 []models.PublicDashboardListResponse + if rf, ok := ret.Get(0).(func(context.Context, *user.SignedInUser, int64) []models.PublicDashboardListResponse); ok { + r0 = rf(ctx, u, orgId) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).([]models.PublicDashboardListResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *user.SignedInUser, int64) error); ok { + r1 = rf(ctx, u, orgId) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// FindAnnotations provides a mock function with given fields: ctx, reqDTO, accessToken func (_m *FakePublicDashboardService) FindAnnotations(ctx context.Context, reqDTO models.AnnotationsQueryDTO, accessToken string) ([]models.AnnotationEvent, error) { ret := _m.Called(ctx, reqDTO, accessToken) @@ -88,50 +111,6 @@ func (_m *FakePublicDashboardService) FindAnnotations(ctx context.Context, reqDT return r0, r1 } -// FindDashboard provides a mock function with given fields: ctx, dashboardUid -func (_m *FakePublicDashboardService) FindDashboard(ctx context.Context, dashboardUid string) (*pkgmodels.Dashboard, error) { - ret := _m.Called(ctx, dashboardUid) - - var r0 *pkgmodels.Dashboard - if rf, ok := ret.Get(0).(func(context.Context, string) *pkgmodels.Dashboard); ok { - r0 = rf(ctx, dashboardUid) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*pkgmodels.Dashboard) - } - } - - var r1 error - if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { - r1 = rf(ctx, dashboardUid) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// GetMetricRequest provides a mock function with given fields: ctx, dashboard, publicDashboard, panelId, reqDTO -func (_m *FakePublicDashboardService) GetMetricRequest(ctx context.Context, dashboard *pkgmodels.Dashboard, publicDashboard *models.PublicDashboard, panelId int64, reqDTO models.PublicDashboardQueryDTO) (dtos.MetricRequest, error) { - ret := _m.Called(ctx, dashboard, publicDashboard, panelId, reqDTO) - - var r0 dtos.MetricRequest - if rf, ok := ret.Get(0).(func(context.Context, *pkgmodels.Dashboard, *models.PublicDashboard, int64, models.PublicDashboardQueryDTO) dtos.MetricRequest); ok { - r0 = rf(ctx, dashboard, publicDashboard, panelId, reqDTO) - } else { - r0 = ret.Get(0).(dtos.MetricRequest) - } - - var r1 error - if rf, ok := ret.Get(1).(func(context.Context, *pkgmodels.Dashboard, *models.PublicDashboard, int64, models.PublicDashboardQueryDTO) error); ok { - r1 = rf(ctx, dashboard, publicDashboard, panelId, reqDTO) - } 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) @@ -155,6 +134,29 @@ func (_m *FakePublicDashboardService) FindByDashboardUid(ctx context.Context, or return r0, r1 } +// FindDashboard provides a mock function with given fields: ctx, dashboardUid, orgId +func (_m *FakePublicDashboardService) FindDashboard(ctx context.Context, dashboardUid string, orgId int64) (*pkgmodels.Dashboard, error) { + ret := _m.Called(ctx, dashboardUid, orgId) + + var r0 *pkgmodels.Dashboard + if rf, ok := ret.Get(0).(func(context.Context, string, int64) *pkgmodels.Dashboard); ok { + r0 = rf(ctx, dashboardUid, orgId) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pkgmodels.Dashboard) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, string, int64) error); ok { + r1 = rf(ctx, dashboardUid, orgId) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + // FindPublicDashboardAndDashboardByAccessToken provides a mock function with given fields: ctx, accessToken func (_m *FakePublicDashboardService) FindPublicDashboardAndDashboardByAccessToken(ctx context.Context, accessToken string) (*models.PublicDashboard, *pkgmodels.Dashboard, error) { ret := _m.Called(ctx, accessToken) @@ -187,6 +189,27 @@ func (_m *FakePublicDashboardService) FindPublicDashboardAndDashboardByAccessTok return r0, r1, r2 } +// GetMetricRequest provides a mock function with given fields: ctx, dashboard, publicDashboard, panelId, reqDTO +func (_m *FakePublicDashboardService) GetMetricRequest(ctx context.Context, dashboard *pkgmodels.Dashboard, publicDashboard *models.PublicDashboard, panelId int64, reqDTO models.PublicDashboardQueryDTO) (dtos.MetricRequest, error) { + ret := _m.Called(ctx, dashboard, publicDashboard, panelId, reqDTO) + + var r0 dtos.MetricRequest + if rf, ok := ret.Get(0).(func(context.Context, *pkgmodels.Dashboard, *models.PublicDashboard, int64, models.PublicDashboardQueryDTO) dtos.MetricRequest); ok { + r0 = rf(ctx, dashboard, publicDashboard, panelId, reqDTO) + } else { + r0 = ret.Get(0).(dtos.MetricRequest) + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *pkgmodels.Dashboard, *models.PublicDashboard, int64, models.PublicDashboardQueryDTO) error); ok { + r1 = rf(ctx, dashboard, publicDashboard, panelId, reqDTO) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + // GetOrgIdByAccessToken provides a mock function with given fields: ctx, accessToken func (_m *FakePublicDashboardService) GetOrgIdByAccessToken(ctx context.Context, accessToken string) (int64, error) { ret := _m.Called(ctx, accessToken) @@ -231,22 +254,20 @@ func (_m *FakePublicDashboardService) GetQueryDataResponse(ctx context.Context, return r0, r1 } -// FindAll provides a mock function with given fields: ctx, u, orgId -func (_m *FakePublicDashboardService) FindAll(ctx context.Context, u *user.SignedInUser, orgId int64) ([]models.PublicDashboardListResponse, error) { - ret := _m.Called(ctx, u, orgId) +// NewPublicDashboardAccessToken provides a mock function with given fields: ctx +func (_m *FakePublicDashboardService) NewPublicDashboardAccessToken(ctx context.Context) (string, error) { + ret := _m.Called(ctx) - var r0 []models.PublicDashboardListResponse - if rf, ok := ret.Get(0).(func(context.Context, *user.SignedInUser, int64) []models.PublicDashboardListResponse); ok { - r0 = rf(ctx, u, orgId) + var r0 string + if rf, ok := ret.Get(0).(func(context.Context) string); ok { + r0 = rf(ctx) } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).([]models.PublicDashboardListResponse) - } + r0 = ret.Get(0).(string) } var r1 error - if rf, ok := ret.Get(1).(func(context.Context, *user.SignedInUser, int64) error); ok { - r1 = rf(ctx, u, orgId) + if rf, ok := ret.Get(1).(func(context.Context) error); ok { + r1 = rf(ctx) } else { r1 = ret.Error(1) } @@ -254,41 +275,20 @@ func (_m *FakePublicDashboardService) FindAll(ctx context.Context, u *user.Signe return r0, r1 } -// ExistsEnabledByAccessToken provides a mock function with given fields: ctx, accessToken -func (_m *FakePublicDashboardService) ExistsEnabledByAccessToken(ctx context.Context, accessToken string) (bool, error) { - ret := _m.Called(ctx, accessToken) +// NewPublicDashboardUid provides a mock function with given fields: ctx +func (_m *FakePublicDashboardService) NewPublicDashboardUid(ctx context.Context) (string, error) { + ret := _m.Called(ctx) - var r0 bool - if rf, ok := ret.Get(0).(func(context.Context, string) bool); ok { - r0 = rf(ctx, accessToken) + var r0 string + if rf, ok := ret.Get(0).(func(context.Context) string); ok { + r0 = rf(ctx) } else { - r0 = ret.Get(0).(bool) + r0 = ret.Get(0).(string) } 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 -} - -// PublicDashboardIsEnabled provides a mock function with given fields: ctx, dashboardUid -func (_m *FakePublicDashboardService) ExistsEnabledByDashboardUid(ctx context.Context, dashboardUid string) (bool, error) { - ret := _m.Called(ctx, dashboardUid) - - var r0 bool - if rf, ok := ret.Get(0).(func(context.Context, string) bool); ok { - r0 = rf(ctx, dashboardUid) - } else { - r0 = ret.Get(0).(bool) - } - - var r1 error - if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { - r1 = rf(ctx, dashboardUid) + if rf, ok := ret.Get(1).(func(context.Context) error); ok { + r1 = rf(ctx) } else { r1 = ret.Error(1) } diff --git a/pkg/services/publicdashboards/public_dashboard_store_mock.go b/pkg/services/publicdashboards/public_dashboard_store_mock.go index 470cc4006d7..ab3edddd384 100644 --- a/pkg/services/publicdashboards/public_dashboard_store_mock.go +++ b/pkg/services/publicdashboards/public_dashboard_store_mock.go @@ -5,10 +5,10 @@ package publicdashboards import ( context "context" - models "github.com/grafana/grafana/pkg/models" + models "github.com/grafana/grafana/pkg/services/publicdashboards/models" mock "github.com/stretchr/testify/mock" - publicdashboardsmodels "github.com/grafana/grafana/pkg/services/publicdashboards/models" + pkgmodels "github.com/grafana/grafana/pkg/models" ) // FakePublicDashboardStore is an autogenerated mock type for the Store type @@ -16,175 +16,7 @@ type FakePublicDashboardStore struct { mock.Mock } -// GetDashboard provides a mock function with given fields: ctx, dashboardUid -func (_m *FakePublicDashboardStore) FindDashboard(ctx context.Context, dashboardUid string) (*models.Dashboard, error) { - ret := _m.Called(ctx, dashboardUid) - - var r0 *models.Dashboard - if rf, ok := ret.Get(0).(func(context.Context, string) *models.Dashboard); ok { - r0 = rf(ctx, dashboardUid) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*models.Dashboard) - } - } - - var r1 error - if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { - r1 = rf(ctx, dashboardUid) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// GetPublicDashboard provides a mock function with given fields: ctx, orgId, dashboardUid -func (_m *FakePublicDashboardStore) FindByDashboardUid(ctx context.Context, orgId int64, dashboardUid string) (*publicdashboardsmodels.PublicDashboard, error) { - ret := _m.Called(ctx, orgId, dashboardUid) - - var r0 *publicdashboardsmodels.PublicDashboard - if rf, ok := ret.Get(0).(func(context.Context, int64, string) *publicdashboardsmodels.PublicDashboard); ok { - r0 = rf(ctx, orgId, dashboardUid) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*publicdashboardsmodels.PublicDashboard) - } - } - - var r1 error - if rf, ok := ret.Get(1).(func(context.Context, int64, string) error); ok { - r1 = rf(ctx, orgId, dashboardUid) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// GetPublicDashboardAndDashboard provides a mock function with given fields: ctx, accessToken -func (_m *FakePublicDashboardStore) FindPublicDashboardAndDashboardByAccessToken(ctx context.Context, accessToken string) (*publicdashboardsmodels.PublicDashboard, *models.Dashboard, error) { - ret := _m.Called(ctx, accessToken) - - var r0 *publicdashboardsmodels.PublicDashboard - if rf, ok := ret.Get(0).(func(context.Context, string) *publicdashboardsmodels.PublicDashboard); ok { - r0 = rf(ctx, accessToken) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*publicdashboardsmodels.PublicDashboard) - } - } - - var r1 *models.Dashboard - if rf, ok := ret.Get(1).(func(context.Context, string) *models.Dashboard); ok { - r1 = rf(ctx, accessToken) - } else { - if ret.Get(1) != nil { - r1 = ret.Get(1).(*models.Dashboard) - } - } - - var r2 error - if rf, ok := ret.Get(2).(func(context.Context, string) error); ok { - r2 = rf(ctx, accessToken) - } else { - r2 = ret.Error(2) - } - - return r0, r1, r2 -} - -// GetPublicDashboardByAccessToken provides a mock function with given fields: ctx, accessToken -func (_m *FakePublicDashboardStore) FindByAccessToken(ctx context.Context, accessToken string) (*publicdashboardsmodels.PublicDashboard, error) { - ret := _m.Called(ctx, accessToken) - - var r0 *publicdashboardsmodels.PublicDashboard - if rf, ok := ret.Get(0).(func(context.Context, string) *publicdashboardsmodels.PublicDashboard); ok { - r0 = rf(ctx, accessToken) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*publicdashboardsmodels.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 -} - -// GetPublicDashboardByUid provides a mock function with given fields: ctx, uid -func (_m *FakePublicDashboardStore) Find(ctx context.Context, uid string) (*publicdashboardsmodels.PublicDashboard, error) { - ret := _m.Called(ctx, uid) - - var r0 *publicdashboardsmodels.PublicDashboard - if rf, ok := ret.Get(0).(func(context.Context, string) *publicdashboardsmodels.PublicDashboard); ok { - r0 = rf(ctx, uid) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*publicdashboardsmodels.PublicDashboard) - } - } - - var r1 error - if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { - r1 = rf(ctx, uid) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// GetPublicDashboardOrgId provides a mock function with given fields: ctx, accessToken -func (_m *FakePublicDashboardStore) GetOrgIdByAccessToken(ctx context.Context, accessToken string) (int64, error) { - ret := _m.Called(ctx, accessToken) - - var r0 int64 - if rf, ok := ret.Get(0).(func(context.Context, string) int64); ok { - r0 = rf(ctx, accessToken) - } else { - r0 = ret.Get(0).(int64) - } - - 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 -} - -// ListPublicDashboards provides a mock function with given fields: ctx, orgId -func (_m *FakePublicDashboardStore) FindAll(ctx context.Context, orgId int64) ([]publicdashboardsmodels.PublicDashboardListResponse, error) { - ret := _m.Called(ctx, orgId) - - var r0 []publicdashboardsmodels.PublicDashboardListResponse - if rf, ok := ret.Get(0).(func(context.Context, int64) []publicdashboardsmodels.PublicDashboardListResponse); ok { - r0 = rf(ctx, orgId) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).([]publicdashboardsmodels.PublicDashboardListResponse) - } - } - - var r1 error - if rf, ok := ret.Get(1).(func(context.Context, int64) error); ok { - r1 = rf(ctx, orgId) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// PublicDashboardEnabledExistsByAccessToken provides a mock function with given fields: ctx, accessToken +// ExistsEnabledByAccessToken provides a mock function with given fields: ctx, accessToken func (_m *FakePublicDashboardStore) ExistsEnabledByAccessToken(ctx context.Context, accessToken string) (bool, error) { ret := _m.Called(ctx, accessToken) @@ -205,7 +37,7 @@ func (_m *FakePublicDashboardStore) ExistsEnabledByAccessToken(ctx context.Conte return r0, r1 } -// PublicDashboardEnabledExistsByDashboardUid provides a mock function with given fields: ctx, dashboardUid +// ExistsEnabledByDashboardUid provides a mock function with given fields: ctx, dashboardUid func (_m *FakePublicDashboardStore) ExistsEnabledByDashboardUid(ctx context.Context, dashboardUid string) (bool, error) { ret := _m.Called(ctx, dashboardUid) @@ -226,12 +58,148 @@ func (_m *FakePublicDashboardStore) ExistsEnabledByDashboardUid(ctx context.Cont return r0, r1 } -// SavePublicDashboard provides a mock function with given fields: ctx, cmd -func (_m *FakePublicDashboardStore) Save(ctx context.Context, cmd publicdashboardsmodels.SavePublicDashboardConfigCommand) error { +// Find provides a mock function with given fields: ctx, uid +func (_m *FakePublicDashboardStore) Find(ctx context.Context, uid string) (*models.PublicDashboard, error) { + ret := _m.Called(ctx, uid) + + var r0 *models.PublicDashboard + if rf, ok := ret.Get(0).(func(context.Context, string) *models.PublicDashboard); ok { + r0 = rf(ctx, uid) + } 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, uid) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// FindAll provides a mock function with given fields: ctx, orgId +func (_m *FakePublicDashboardStore) FindAll(ctx context.Context, orgId int64) ([]models.PublicDashboardListResponse, error) { + ret := _m.Called(ctx, orgId) + + var r0 []models.PublicDashboardListResponse + if rf, ok := ret.Get(0).(func(context.Context, int64) []models.PublicDashboardListResponse); ok { + r0 = rf(ctx, orgId) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).([]models.PublicDashboardListResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, int64) error); ok { + r1 = rf(ctx, orgId) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// FindByAccessToken provides a mock function with given fields: ctx, accessToken +func (_m *FakePublicDashboardStore) 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 *FakePublicDashboardStore) FindByDashboardUid(ctx context.Context, orgId int64, dashboardUid string) (*models.PublicDashboard, error) { + ret := _m.Called(ctx, orgId, dashboardUid) + + var r0 *models.PublicDashboard + if rf, ok := ret.Get(0).(func(context.Context, int64, string) *models.PublicDashboard); ok { + r0 = rf(ctx, orgId, dashboardUid) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*models.PublicDashboard) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, int64, string) error); ok { + r1 = rf(ctx, orgId, dashboardUid) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// FindDashboard provides a mock function with given fields: ctx, dashboardUid, orgId +func (_m *FakePublicDashboardStore) FindDashboard(ctx context.Context, dashboardUid string, orgId int64) (*pkgmodels.Dashboard, error) { + ret := _m.Called(ctx, dashboardUid, orgId) + + var r0 *pkgmodels.Dashboard + if rf, ok := ret.Get(0).(func(context.Context, string, int64) *pkgmodels.Dashboard); ok { + r0 = rf(ctx, dashboardUid, orgId) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*pkgmodels.Dashboard) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, string, int64) error); ok { + r1 = rf(ctx, dashboardUid, orgId) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetOrgIdByAccessToken provides a mock function with given fields: ctx, accessToken +func (_m *FakePublicDashboardStore) GetOrgIdByAccessToken(ctx context.Context, accessToken string) (int64, error) { + ret := _m.Called(ctx, accessToken) + + var r0 int64 + if rf, ok := ret.Get(0).(func(context.Context, string) int64); ok { + r0 = rf(ctx, accessToken) + } else { + r0 = ret.Get(0).(int64) + } + + 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 +} + +// Save provides a mock function with given fields: ctx, cmd +func (_m *FakePublicDashboardStore) Save(ctx context.Context, cmd models.SavePublicDashboardConfigCommand) error { ret := _m.Called(ctx, cmd) var r0 error - if rf, ok := ret.Get(0).(func(context.Context, publicdashboardsmodels.SavePublicDashboardConfigCommand) error); ok { + if rf, ok := ret.Get(0).(func(context.Context, models.SavePublicDashboardConfigCommand) error); ok { r0 = rf(ctx, cmd) } else { r0 = ret.Error(0) @@ -240,12 +208,12 @@ func (_m *FakePublicDashboardStore) Save(ctx context.Context, cmd publicdashboar return r0 } -// UpdatePublicDashboard provides a mock function with given fields: ctx, cmd -func (_m *FakePublicDashboardStore) Update(ctx context.Context, cmd publicdashboardsmodels.SavePublicDashboardConfigCommand) error { +// Update provides a mock function with given fields: ctx, cmd +func (_m *FakePublicDashboardStore) Update(ctx context.Context, cmd models.SavePublicDashboardConfigCommand) error { ret := _m.Called(ctx, cmd) var r0 error - if rf, ok := ret.Get(0).(func(context.Context, publicdashboardsmodels.SavePublicDashboardConfigCommand) error); ok { + if rf, ok := ret.Get(0).(func(context.Context, models.SavePublicDashboardConfigCommand) error); ok { r0 = rf(ctx, cmd) } else { r0 = ret.Error(0) diff --git a/pkg/services/publicdashboards/publicdashboard.go b/pkg/services/publicdashboards/publicdashboard.go index d4f8be58b62..9b4d780326d 100644 --- a/pkg/services/publicdashboards/publicdashboard.go +++ b/pkg/services/publicdashboards/publicdashboard.go @@ -17,7 +17,7 @@ type Service interface { FindPublicDashboardAndDashboardByAccessToken(ctx context.Context, accessToken string) (*PublicDashboard, *models.Dashboard, 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, dashboardUid string) (*models.Dashboard, error) + FindDashboard(ctx context.Context, dashboardUid string, orgId int64) (*models.Dashboard, error) FindAll(ctx context.Context, u *user.SignedInUser, orgId int64) ([]PublicDashboardListResponse, error) Save(ctx context.Context, u *user.SignedInUser, dto *SavePublicDashboardConfigDTO) (*PublicDashboard, error) @@ -36,7 +36,7 @@ type Store interface { Find(ctx context.Context, uid string) (*PublicDashboard, error) FindByAccessToken(ctx context.Context, accessToken string) (*PublicDashboard, error) FindByDashboardUid(ctx context.Context, orgId int64, dashboardUid string) (*PublicDashboard, error) - FindDashboard(ctx context.Context, dashboardUid string) (*models.Dashboard, error) + FindDashboard(ctx context.Context, dashboardUid string, orgId int64) (*models.Dashboard, error) FindAll(ctx context.Context, orgId int64) ([]PublicDashboardListResponse, error) Save(ctx context.Context, cmd SavePublicDashboardConfigCommand) error Update(ctx context.Context, cmd SavePublicDashboardConfigCommand) error diff --git a/pkg/services/publicdashboards/service/query_test.go b/pkg/services/publicdashboards/service/query_test.go index 58147921e38..2a6ef56f2f8 100644 --- a/pkg/services/publicdashboards/service/query_test.go +++ b/pkg/services/publicdashboards/service/query_test.go @@ -423,7 +423,7 @@ func TestGetAnnotations(t *testing.T) { } fakeStore.On("FindByAccessToken", mock.Anything, mock.AnythingOfType("string")). Return(&PublicDashboard{Uid: "uid1", IsEnabled: true}, nil) - fakeStore.On("FindDashboard", mock.Anything, mock.AnythingOfType("string")). + fakeStore.On("FindDashboard", mock.Anything, mock.AnythingOfType("string"), mock.Anything). Return(grafanamodels.NewDashboard("dash1"), nil) reqDTO := AnnotationsQueryDTO{ @@ -479,7 +479,7 @@ func TestGetAnnotations(t *testing.T) { pubdash := &PublicDashboard{Uid: "uid1", IsEnabled: true, OrgId: 1, DashboardUid: dashboard.Uid, AnnotationsEnabled: true} fakeStore.On("FindByAccessToken", mock.Anything, mock.AnythingOfType("string")).Return(pubdash, nil) - fakeStore.On("FindDashboard", mock.Anything, mock.AnythingOfType("string")).Return(dashboard, nil) + fakeStore.On("FindDashboard", mock.Anything, mock.AnythingOfType("string"), mock.Anything).Return(dashboard, nil) annotationsRepo.On("Find", mock.Anything, mock.Anything).Return([]*annotations.ItemDTO{ { @@ -539,7 +539,7 @@ func TestGetAnnotations(t *testing.T) { pubdash := &PublicDashboard{Uid: "uid1", IsEnabled: true, OrgId: 1, DashboardUid: dashboard.Uid, AnnotationsEnabled: true} fakeStore.On("FindByAccessToken", mock.Anything, mock.AnythingOfType("string")).Return(pubdash, nil) - fakeStore.On("FindDashboard", mock.Anything, mock.AnythingOfType("string")).Return(dashboard, nil) + fakeStore.On("FindDashboard", mock.Anything, mock.AnythingOfType("string"), mock.Anything).Return(dashboard, nil) annotationsRepo.On("Find", mock.Anything, mock.Anything).Return([]*annotations.ItemDTO{ { @@ -611,7 +611,7 @@ func TestGetAnnotations(t *testing.T) { pubdash := &PublicDashboard{Uid: "uid1", IsEnabled: true, OrgId: 1, DashboardUid: dashboard.Uid, AnnotationsEnabled: true} fakeStore.On("FindByAccessToken", mock.Anything, mock.AnythingOfType("string")).Return(pubdash, nil) - fakeStore.On("FindDashboard", mock.Anything, mock.AnythingOfType("string")).Return(dashboard, nil) + fakeStore.On("FindDashboard", mock.Anything, mock.AnythingOfType("string"), mock.Anything).Return(dashboard, nil) annotationsRepo.On("Find", mock.Anything, mock.Anything).Return([]*annotations.ItemDTO{ { @@ -656,7 +656,7 @@ func TestGetAnnotations(t *testing.T) { pubdash := &PublicDashboard{Uid: "uid1", IsEnabled: true, OrgId: 1, DashboardUid: dashboard.Uid, AnnotationsEnabled: true} fakeStore.On("FindByAccessToken", mock.Anything, mock.AnythingOfType("string")).Return(pubdash, nil) - fakeStore.On("FindDashboard", mock.Anything, mock.AnythingOfType("string")).Return(dashboard, nil) + fakeStore.On("FindDashboard", mock.Anything, mock.AnythingOfType("string"), mock.Anything).Return(dashboard, nil) items, err := service.FindAnnotations(context.Background(), AnnotationsQueryDTO{}, "abc123") @@ -691,7 +691,7 @@ func TestGetAnnotations(t *testing.T) { pubdash := &PublicDashboard{Uid: "uid1", IsEnabled: true, OrgId: 1, DashboardUid: dashboard.Uid, AnnotationsEnabled: false} fakeStore.On("FindByAccessToken", mock.Anything, mock.AnythingOfType("string")).Return(pubdash, nil) - fakeStore.On("FindDashboard", mock.Anything, mock.AnythingOfType("string")).Return(dashboard, nil) + fakeStore.On("FindDashboard", mock.Anything, mock.AnythingOfType("string"), mock.Anything).Return(dashboard, nil) items, err := service.FindAnnotations(context.Background(), AnnotationsQueryDTO{}, "abc123") @@ -725,7 +725,7 @@ func TestGetAnnotations(t *testing.T) { pubdash := &PublicDashboard{Uid: "uid1", IsEnabled: true, OrgId: 1, DashboardUid: dash.Uid, AnnotationsEnabled: true} fakeStore.On("FindByAccessToken", mock.Anything, mock.AnythingOfType("string")).Return(pubdash, nil) - fakeStore.On("FindDashboard", mock.Anything, mock.AnythingOfType("string")).Return(dash, nil) + fakeStore.On("FindDashboard", mock.Anything, mock.AnythingOfType("string"), mock.Anything).Return(dash, nil) annotationsRepo.On("Find", mock.Anything, mock.Anything).Return(nil, errors.New("failed")).Maybe() diff --git a/pkg/services/publicdashboards/service/service.go b/pkg/services/publicdashboards/service/service.go index 32a386cf11e..3a74f2526ce 100644 --- a/pkg/services/publicdashboards/service/service.go +++ b/pkg/services/publicdashboards/service/service.go @@ -62,14 +62,13 @@ func ProvideService( } // FindDashboard Gets a dashboard by Uid -func (pd *PublicDashboardServiceImpl) FindDashboard(ctx context.Context, dashboardUid string) (*models.Dashboard, error) { - dashboard, err := pd.store.FindDashboard(ctx, dashboardUid) - +func (pd *PublicDashboardServiceImpl) FindDashboard(ctx context.Context, dashboardUid string, orgId int64) (*models.Dashboard, error) { + dashboard, err := pd.store.FindDashboard(ctx, dashboardUid, orgId) if err != nil { return nil, err } - return dashboard, err + return dashboard, nil } // FindPublicDashboardAndDashboardByAccessToken Gets public dashboard via access token @@ -91,7 +90,7 @@ func (pd *PublicDashboardServiceImpl) FindPublicDashboardAndDashboardByAccessTok return nil, nil, ErrPublicDashboardNotFound } - dash, err := pd.store.FindDashboard(ctx, pubdash.DashboardUid) + dash, err := pd.store.FindDashboard(ctx, pubdash.DashboardUid, pubdash.OrgId) if err != nil { return nil, nil, err } @@ -118,7 +117,7 @@ func (pd *PublicDashboardServiceImpl) FindByDashboardUid(ctx context.Context, or // to the database. It handles validations for sharing config and persistence func (pd *PublicDashboardServiceImpl) Save(ctx context.Context, u *user.SignedInUser, dto *SavePublicDashboardConfigDTO) (*PublicDashboard, error) { // validate if the dashboard exists - dashboard, err := pd.FindDashboard(ctx, dto.DashboardUid) + dashboard, err := pd.FindDashboard(ctx, dto.DashboardUid, u.OrgID) if err != nil { return nil, err } @@ -244,7 +243,7 @@ func (pd *PublicDashboardServiceImpl) updatePublicDashboard(ctx context.Context, return dto.PublicDashboard.Uid, pd.store.Update(ctx, cmd) } -// Gets a list of public dashboards by orgId +// FindAll Returns a list of public dashboards by orgId func (pd *PublicDashboardServiceImpl) FindAll(ctx context.Context, u *user.SignedInUser, orgId int64) ([]PublicDashboardListResponse, error) { publicDashboards, err := pd.store.FindAll(ctx, orgId) if err != nil { diff --git a/pkg/services/publicdashboards/service/service_test.go b/pkg/services/publicdashboards/service/service_test.go index 0239f9ad12a..c443bfcade9 100644 --- a/pkg/services/publicdashboards/service/service_test.go +++ b/pkg/services/publicdashboards/service/service_test.go @@ -102,7 +102,7 @@ func TestGetPublicDashboard(t *testing.T) { } fakeStore.On("FindByAccessToken", mock.Anything, mock.Anything).Return(test.StoreResp.pd, test.StoreResp.err) - fakeStore.On("FindDashboard", mock.Anything, mock.Anything).Return(test.StoreResp.d, test.StoreResp.err) + fakeStore.On("FindDashboard", mock.Anything, mock.Anything, mock.Anything).Return(test.StoreResp.d, test.StoreResp.err) pdc, dash, err := service.FindPublicDashboardAndDashboardByAccessToken(context.Background(), test.AccessToken) if test.ErrResp != nil { @@ -236,7 +236,7 @@ func TestSavePublicDashboard(t *testing.T) { } publicDashboardStore := &FakePublicDashboardStore{} - publicDashboardStore.On("FindDashboard", mock.Anything, mock.Anything).Return(dashboard, nil) + publicDashboardStore.On("FindDashboard", mock.Anything, mock.Anything, mock.Anything).Return(dashboard, nil) publicDashboardStore.On("Find", mock.Anything, mock.Anything).Return(nil, nil) publicDashboardStore.On("FindByAccessToken", mock.Anything, mock.Anything).Return(pubdash, nil) publicDashboardStore.On("NewPublicDashboardUid", mock.Anything).Return("an-uid", nil)