diff --git a/pkg/kn/commands/trigger/update_flags.go b/pkg/kn/commands/trigger/update_flags.go index e324654076..c8a5364822 100644 --- a/pkg/kn/commands/trigger/update_flags.go +++ b/pkg/kn/commands/trigger/update_flags.go @@ -54,6 +54,9 @@ func (f *TriggerUpdateFlags) GetFilters() (map[string]string, error) { if len(parts) < 2 || parts[0] == "" || parts[1] == "" { return nil, fmt.Errorf("invalid filter %s", f.Filters) } else { + if _, ok := filters[parts[0]]; ok { + return nil, fmt.Errorf("duplicate key '%s' in filters %s", parts[0], f.Filters) + } filters[parts[0]] = parts[1] } } diff --git a/pkg/kn/commands/trigger/update_flags_test.go b/pkg/kn/commands/trigger/update_flags_test.go index d383d815e6..7fe2a9ee21 100644 --- a/pkg/kn/commands/trigger/update_flags_test.go +++ b/pkg/kn/commands/trigger/update_flags_test.go @@ -59,6 +59,14 @@ func TestGetFilters(t *testing.T) { _, err = createFlag.GetFilters() assert.ErrorContains(t, err, "invalid filter") }) + + t.Run("get duplicate filters", func(t *testing.T) { + createFlag := TriggerUpdateFlags{ + Filters: filterArray{"type=foo", "type=bar"}, + } + _, err := createFlag.GetFilters() + assert.ErrorContains(t, err, "duplicate key") + }) } func TestGetUpdateFilters(t *testing.T) {