test: remove redundant integration tests

Removed TestIntegrationProvisioning_ExportSpecificResourcesEmptyList and
TestIntegrationProvisioning_ExportSpecificResourcesRejectsInstanceTarget as
they duplicate unit test coverage. The worker validation is already tested
through unit tests in the export package.
This commit is contained in:
Roberto Jimenez Sanchez
2025-12-03 10:54:51 +01:00
parent 99a4f2362e
commit 2dfb4237f5
@@ -389,123 +389,4 @@ func TestIntegrationProvisioning_ExportSpecificResourcesWithFolderStructure(t *t
require.Equal(t, "test-v1", val)
}
func TestIntegrationProvisioning_ExportSpecificResourcesEmptyList(t *testing.T) {
testutil.SkipIntegrationTestInShortMode(t)
helper := runGrafana(t)
ctx := context.Background()
// Create repository with folder sync target (for empty resources test)
const repo = "export-empty-resources-test-repo"
testRepo := TestRepo{
Name: repo,
Target: "folder",
Copies: map[string]string{},
ExpectedDashboards: 0,
ExpectedFolders: 0,
}
helper.CreateRepo(t, testRepo)
// Try to export with empty resources list (should fail validation with folder target)
// Empty resources list means the old API path (using Folder), which doesn't apply here
spec := provisioning.JobSpec{
Action: provisioning.JobActionPush,
Push: &provisioning.ExportJobOptions{
Resources: []provisioning.ResourceRef{},
},
}
// This should fail validation (empty resources triggers specific resource validation)
body := asJSON(spec)
result := helper.AdminREST.Post().
Namespace("default").
Resource("repositories").
Name(repo).
SubResource("jobs").
Body(body).
SetHeader("Content-Type", "application/json").
Do(ctx)
// Wait for job to complete and check it failed
obj, err := result.Get()
require.NoError(t, err, "job should be created")
unstruct, ok := obj.(*unstructured.Unstructured)
require.True(t, ok, "should get unstructured object")
// Wait for job to complete
job := helper.AwaitJob(t, ctx, unstruct)
lastState := mustNestedString(job.Object, "status", "state")
lastErrors := mustNestedStringSlice(job.Object, "status", "errors")
// Job should fail with error about empty resources
require.Equal(t, string(provisioning.JobStateError), lastState, "job should fail")
require.NotEmpty(t, lastErrors, "job should have errors")
require.Contains(t, lastErrors[0], "no resources specified", "error should mention no resources specified")
}
func TestIntegrationProvisioning_ExportSpecificResourcesRejectsInstanceTarget(t *testing.T) {
testutil.SkipIntegrationTestInShortMode(t)
helper := runGrafana(t)
ctx := context.Background()
// Create an unmanaged dashboard
dashboard := helper.LoadYAMLOrJSONFile("exportunifiedtorepository/dashboard-test-v1.yaml")
dashboardObj, err := helper.DashboardsV1.Resource.Create(ctx, dashboard, metav1.CreateOptions{})
require.NoError(t, err, "should be able to create dashboard")
dashboardName := dashboardObj.GetName()
// Create repository with INSTANCE sync target (should reject specific resource export)
const repo = "export-instance-target-reject-test-repo"
testRepo := TestRepo{
Name: repo,
Target: "instance", // Instance target should reject specific resource export
Copies: map[string]string{},
ExpectedDashboards: 0,
ExpectedFolders: 0,
SkipResourceAssertions: true,
}
helper.CreateRepo(t, testRepo)
// Try to export specific resource with instance target (should fail)
spec := provisioning.JobSpec{
Action: provisioning.JobActionPush,
Push: &provisioning.ExportJobOptions{
Resources: []provisioning.ResourceRef{
{
Name: dashboardName,
Kind: "Dashboard",
Group: "dashboard.grafana.app",
},
},
},
}
// This should fail with validation error about instance target
body := asJSON(spec)
result := helper.AdminREST.Post().
Namespace("default").
Resource("repositories").
Name(repo).
SubResource("jobs").
Body(body).
SetHeader("Content-Type", "application/json").
Do(ctx)
// Wait for job to complete and check it failed
obj, err := result.Get()
require.NoError(t, err, "job should be created")
unstruct, ok := obj.(*unstructured.Unstructured)
require.True(t, ok, "should get unstructured object")
// Wait for job to complete
job := helper.AwaitJob(t, ctx, unstruct)
lastState := mustNestedString(job.Object, "status", "state")
lastErrors := mustNestedStringSlice(job.Object, "status", "errors")
// Job should fail with error about instance target not supporting specific resources
require.Equal(t, string(provisioning.JobStateError), lastState, "job should fail")
require.NotEmpty(t, lastErrors, "job should have errors")
require.Contains(t, lastErrors[0], "folder sync targets", "error should mention folder sync targets required")
require.Contains(t, lastErrors[0], "instance", "error should mention instance target")
}