|
|
|
@ -88,7 +88,7 @@ func TestDashboardService(t *testing.T) { |
|
|
|
|
dto.User = &user.SignedInUser{} |
|
|
|
|
|
|
|
|
|
if tc.Error == nil { |
|
|
|
|
fakeStore.On("ValidateDashboardBeforeSave", mock.Anything, mock.Anything, mock.AnythingOfType("bool")).Return(true, nil).Once() |
|
|
|
|
fakeStore.On("GetDashboard", mock.Anything, mock.Anything).Return(&dashboards.Dashboard{}, nil).Once() |
|
|
|
|
} |
|
|
|
|
_, err := service.BuildSaveDashboardCommand(context.Background(), dto, false) |
|
|
|
|
require.Equal(t, err, tc.Error) |
|
|
|
@ -106,7 +106,7 @@ func TestDashboardService(t *testing.T) { |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
t.Run("Should return validation error if dashboard is provisioned", func(t *testing.T) { |
|
|
|
|
fakeStore.On("ValidateDashboardBeforeSave", mock.Anything, mock.Anything, mock.AnythingOfType("bool")).Return(true, nil).Once() |
|
|
|
|
fakeStore.On("GetDashboard", mock.Anything, mock.Anything).Return(&dashboards.Dashboard{}, nil).Once() |
|
|
|
|
fakeStore.On("GetProvisionedDataByDashboardID", mock.Anything, mock.AnythingOfType("int64")).Return(&dashboards.DashboardProvisioning{}, nil).Once() |
|
|
|
|
|
|
|
|
|
dto.Dashboard = dashboards.NewDashboard("Dash") |
|
|
|
@ -117,7 +117,7 @@ func TestDashboardService(t *testing.T) { |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
t.Run("Should not return validation error if dashboard is provisioned but UI updates allowed", func(t *testing.T) { |
|
|
|
|
fakeStore.On("ValidateDashboardBeforeSave", mock.Anything, mock.Anything, mock.AnythingOfType("bool")).Return(true, nil).Once() |
|
|
|
|
fakeStore.On("GetDashboard", mock.Anything, mock.Anything).Return(&dashboards.Dashboard{}, nil).Once() |
|
|
|
|
fakeStore.On("SaveDashboard", mock.Anything, mock.AnythingOfType("dashboards.SaveDashboardCommand")).Return(&dashboards.Dashboard{Data: simplejson.New()}, nil).Once() |
|
|
|
|
|
|
|
|
|
dto.Dashboard = dashboards.NewDashboard("Dash") |
|
|
|
@ -132,7 +132,6 @@ func TestDashboardService(t *testing.T) { |
|
|
|
|
dto := &dashboards.SaveDashboardDTO{} |
|
|
|
|
|
|
|
|
|
t.Run("Should not return validation error if dashboard is provisioned", func(t *testing.T) { |
|
|
|
|
fakeStore.On("ValidateDashboardBeforeSave", mock.Anything, mock.Anything, mock.AnythingOfType("bool")).Return(true, nil).Once() |
|
|
|
|
fakeStore.On("SaveProvisionedDashboard", mock.Anything, mock.AnythingOfType("dashboards.SaveDashboardCommand"), mock.AnythingOfType("*dashboards.DashboardProvisioning")).Return(&dashboards.Dashboard{Data: simplejson.New()}, nil).Once() |
|
|
|
|
|
|
|
|
|
dto.Dashboard = dashboards.NewDashboard("Dash") |
|
|
|
@ -143,7 +142,6 @@ func TestDashboardService(t *testing.T) { |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
t.Run("Should override invalid refresh interval if dashboard is provisioned", func(t *testing.T) { |
|
|
|
|
fakeStore.On("ValidateDashboardBeforeSave", mock.Anything, mock.Anything, mock.AnythingOfType("bool")).Return(true, nil).Once() |
|
|
|
|
fakeStore.On("SaveProvisionedDashboard", mock.Anything, mock.AnythingOfType("dashboards.SaveDashboardCommand"), mock.AnythingOfType("*dashboards.DashboardProvisioning")).Return(&dashboards.Dashboard{Data: simplejson.New()}, nil).Once() |
|
|
|
|
|
|
|
|
|
oldRefreshInterval := service.cfg.MinRefreshInterval |
|
|
|
@ -164,7 +162,6 @@ func TestDashboardService(t *testing.T) { |
|
|
|
|
dto := &dashboards.SaveDashboardDTO{} |
|
|
|
|
|
|
|
|
|
t.Run("Should return validation error if dashboard is provisioned", func(t *testing.T) { |
|
|
|
|
fakeStore.On("ValidateDashboardBeforeSave", mock.Anything, mock.Anything, mock.AnythingOfType("bool")).Return(true, nil).Once() |
|
|
|
|
fakeStore.On("GetProvisionedDataByDashboardID", mock.Anything, mock.AnythingOfType("int64")).Return(&dashboards.DashboardProvisioning{}, nil).Once() |
|
|
|
|
|
|
|
|
|
dto.Dashboard = dashboards.NewDashboard("Dash") |
|
|
|
@ -594,7 +591,7 @@ func TestSaveDashboard(t *testing.T) { |
|
|
|
|
t.Run("Should fallback to dashboard store if Kubernetes feature flags are not enabled", func(t *testing.T) { |
|
|
|
|
service.features = featuremgmt.WithFeatures() |
|
|
|
|
fakeStore.On("GetProvisionedDataByDashboardID", mock.Anything, mock.Anything).Return(nil, nil) |
|
|
|
|
fakeStore.On("ValidateDashboardBeforeSave", mock.Anything, mock.Anything, mock.AnythingOfType("bool")).Return(true, nil) |
|
|
|
|
fakeStore.On("GetDashboard", mock.Anything, mock.Anything).Return(&dashboards.Dashboard{}, nil) |
|
|
|
|
fakeStore.On("SaveDashboard", mock.Anything, mock.Anything, mock.Anything).Return(&dashboards.Dashboard{}, nil) |
|
|
|
|
dashboard, err := service.SaveDashboard(context.Background(), query, false) |
|
|
|
|
require.NoError(t, err) |
|
|
|
@ -616,7 +613,7 @@ func TestSaveDashboard(t *testing.T) { |
|
|
|
|
t.Run("Should use Kubernetes create if feature flags are enabled and dashboard doesn't exist", func(t *testing.T) { |
|
|
|
|
ctx, k8sClientMock, k8sResourceMock := setupK8sDashboardTests(service) |
|
|
|
|
k8sClientMock.On("getClient", mock.Anything, int64(1)).Return(k8sResourceMock, true) |
|
|
|
|
k8sResourceMock.On("Get", mock.Anything, query.Dashboard.UID, mock.Anything, mock.Anything).Return(nil, nil) |
|
|
|
|
k8sResourceMock.On("Get", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, nil) |
|
|
|
|
k8sResourceMock.On("Create", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&dashboardUnstructured, nil) |
|
|
|
|
|
|
|
|
|
dashboard, err := service.SaveDashboard(ctx, query, false) |
|
|
|
@ -627,13 +624,24 @@ func TestSaveDashboard(t *testing.T) { |
|
|
|
|
t.Run("Should use Kubernetes update if feature flags are enabled and dashboard exists", func(t *testing.T) { |
|
|
|
|
ctx, k8sClientMock, k8sResourceMock := setupK8sDashboardTests(service) |
|
|
|
|
k8sClientMock.On("getClient", mock.Anything, int64(1)).Return(k8sResourceMock, true) |
|
|
|
|
k8sResourceMock.On("Get", mock.Anything, query.Dashboard.UID, mock.Anything, mock.Anything).Return(&dashboardUnstructured, nil) |
|
|
|
|
k8sResourceMock.On("Get", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&dashboardUnstructured, nil) |
|
|
|
|
k8sResourceMock.On("Update", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&dashboardUnstructured, nil) |
|
|
|
|
|
|
|
|
|
dashboard, err := service.SaveDashboard(ctx, query, false) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
require.NotNil(t, dashboard) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
t.Run("Should return an error if uid is invalid", func(t *testing.T) { |
|
|
|
|
ctx, k8sClientMock, k8sResourceMock := setupK8sDashboardTests(service) |
|
|
|
|
k8sClientMock.On("getClient", mock.Anything, int64(1)).Return(k8sResourceMock, true) |
|
|
|
|
k8sResourceMock.On("Get", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, nil) |
|
|
|
|
k8sResourceMock.On("Create", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&dashboardUnstructured, nil) |
|
|
|
|
|
|
|
|
|
query.Dashboard.UID = "invalid/uid" |
|
|
|
|
_, err := service.SaveDashboard(ctx, query, false) |
|
|
|
|
require.Error(t, err) |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func TestDeleteDashboard(t *testing.T) { |
|
|
|
|