@ -4,16 +4,26 @@ import (
"context"
"encoding/json"
"testing"
"time"
"github.com/stretchr/testify/require"
common "github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1"
dashboardsnapshot "github.com/grafana/grafana/pkg/apis/dashboardsnapshot/v0alpha1"
"github.com/grafana/grafana/pkg/infra/db"
acmock "github.com/grafana/grafana/pkg/services/accesscontrol/mock"
"github.com/grafana/grafana/pkg/services/dashboards"
dashdb "github.com/grafana/grafana/pkg/services/dashboards/database"
dashsvc "github.com/grafana/grafana/pkg/services/dashboards/service"
"github.com/grafana/grafana/pkg/services/dashboardsnapshots"
dashsnapdb "github.com/grafana/grafana/pkg/services/dashboardsnapshots/database"
"github.com/grafana/grafana/pkg/services/featuremgmt"
"github.com/grafana/grafana/pkg/services/folder/folderimpl"
"github.com/grafana/grafana/pkg/services/folder/foldertest"
"github.com/grafana/grafana/pkg/services/quota/quotatest"
"github.com/grafana/grafana/pkg/services/secrets/database"
secretsManager "github.com/grafana/grafana/pkg/services/secrets/manager"
"github.com/grafana/grafana/pkg/services/tag/tagimpl"
"github.com/grafana/grafana/pkg/setting"
"github.com/grafana/grafana/pkg/tests/testsuite"
)
@ -26,8 +36,9 @@ func TestDashboardSnapshotsService(t *testing.T) {
sqlStore := db . InitTestDB ( t )
cfg := setting . NewCfg ( )
dsStore := dashsnapdb . ProvideStore ( sqlStore , cfg )
fakeDashboardService := & dashboards . FakeDashboardService { }
secretsService := secretsManager . SetupTestService ( t , database . ProvideSecretsStore ( sqlStore ) )
s := ProvideService ( dsStore , secretsService )
s := ProvideService ( dsStore , secretsService , fakeDashboardService )
origSecret := cfg . SecretKey
cfg . SecretKey = "dashboard_snapshot_service_test"
@ -79,3 +90,45 @@ func TestDashboardSnapshotsService(t *testing.T) {
require . Equal ( t , rawDashboard , decrypted )
} )
}
func TestValidateDashboardExists ( t * testing . T ) {
sqlStore := db . InitTestDB ( t )
cfg := setting . NewCfg ( )
dsStore := dashsnapdb . ProvideStore ( sqlStore , cfg )
secretsService := secretsManager . SetupTestService ( t , database . ProvideSecretsStore ( sqlStore ) )
dashboardStore , err := dashdb . ProvideDashboardStore ( sqlStore , cfg , featuremgmt . WithFeatures ( ) , tagimpl . ProvideService ( sqlStore ) , quotatest . New ( false , nil ) )
require . NoError ( t , err )
dashSvc , err := dashsvc . ProvideDashboardServiceImpl ( cfg , dashboardStore , folderimpl . ProvideDashboardFolderStore ( sqlStore ) , nil , nil , nil , acmock . New ( ) , foldertest . NewFakeService ( ) , nil )
require . NoError ( t , err )
s := ProvideService ( dsStore , secretsService , dashSvc )
ctx := context . Background ( )
t . Run ( "returns false when dashboard does not exist" , func ( t * testing . T ) {
err := s . ValidateDashboardExists ( ctx , 1 , "test" )
require . Error ( t , err )
require . Equal ( t , dashboards . ErrDashboardNotFound , err )
} )
t . Run ( "returns true when dashboard exists" , func ( t * testing . T ) {
err := createDashboard ( sqlStore )
require . NoError ( t , err )
err = s . ValidateDashboardExists ( ctx , 1 , "test" )
require . NoError ( t , err )
} )
}
func createDashboard ( store db . DB ) error {
return store . WithDbSession ( context . Background ( ) , func ( sess * db . Session ) error {
dashboard := & dashboards . Dashboard {
ID : 1 ,
UID : "test" ,
OrgID : 1 ,
Created : time . Now ( ) ,
Updated : time . Now ( ) ,
}
_ , err := sess . Insert ( dashboard )
return err
} )
}