Dashboard Tags: Validate max length (#116047)

This commit is contained in:
Stephanie Hingtgen
2026-01-09 03:57:39 -07:00
committed by GitHub
parent 5f8668b3aa
commit b0785e506f
8 changed files with 121 additions and 4 deletions
@@ -393,6 +393,66 @@ func runDashboardValidationTests(t *testing.T, ctx TestContext) {
})
})
t.Run("Dashboard tag validations", func(t *testing.T) {
t.Run("reject dashboard with tag over 50 characters on creation", func(t *testing.T) {
dashObj := createDashboardObject(t, "Dashboard with Long Tag", "", 0)
meta, _ := utils.MetaAccessor(dashObj)
spec, _ := meta.GetSpec()
specMap := spec.(map[string]interface{})
specMap["tags"] = []string{"this-is-a-very-long-tag-that-exceeds-fifty-characters-limit"}
_ = meta.SetSpec(specMap)
_, err := adminClient.Resource.Create(context.Background(), dashObj, v1.CreateOptions{})
require.Error(t, err)
require.Contains(t, err.Error(), "tag too long")
})
t.Run("reject dashboard update with tag over 50 characters", func(t *testing.T) {
dash, err := createDashboard(t, adminClient, "Valid Dashboard", nil, nil, ctx.Helper)
require.NoError(t, err)
require.NotNil(t, dash)
meta, _ := utils.MetaAccessor(dash)
spec, _ := meta.GetSpec()
specMap := spec.(map[string]interface{})
specMap["tags"] = []string{"this-is-a-very-long-tag-that-exceeds-fifty-characters-limit"}
_ = meta.SetSpec(specMap)
_, err = adminClient.Resource.Update(context.Background(), dash, v1.UpdateOptions{})
require.Error(t, err)
require.Contains(t, err.Error(), "tag too long")
err = adminClient.Resource.Delete(context.Background(), dash.GetName(), v1.DeleteOptions{})
require.NoError(t, err)
})
t.Run("accept dashboard with tag at 50 characters", func(t *testing.T) {
dashObj := createDashboardObject(t, "Dashboard with Valid Tag", "", 0)
meta, _ := utils.MetaAccessor(dashObj)
spec, _ := meta.GetSpec()
specMap := spec.(map[string]interface{})
specMap["tags"] = []string{"this-tag-is-exactly-fifty-characters-long-12345"}
_ = meta.SetSpec(specMap)
createdDash, err := adminClient.Resource.Create(context.Background(), dashObj, v1.CreateOptions{})
require.NoError(t, err)
require.NotNil(t, createdDash)
err = adminClient.Resource.Delete(context.Background(), createdDash.GetName(), v1.DeleteOptions{})
require.NoError(t, err)
})
t.Run("reject dashboard with multiple tags where one exceeds limit", func(t *testing.T) {
dashObj := createDashboardObject(t, "Dashboard with Mixed Tags", "", 0)
meta, _ := utils.MetaAccessor(dashObj)
spec, _ := meta.GetSpec()
specMap := spec.(map[string]interface{})
specMap["tags"] = []string{
"valid-tag",
"another-valid-tag",
"this-is-a-very-long-tag-that-exceeds-fifty-characters-limit",
}
_ = meta.SetSpec(specMap)
_, err := adminClient.Resource.Create(context.Background(), dashObj, v1.CreateOptions{})
require.Error(t, err)
require.Contains(t, err.Error(), "tag too long")
})
})
t.Run("Dashboard folder validations", func(t *testing.T) {
// Test non-existent folder UID
t.Run("reject dashboard with non-existent folder UID", func(t *testing.T) {