Retrurn error if exist duplicate key in filter option (#575)

fix #569
This commit is contained in:
Lv Jiawei 2019-12-19 17:25:31 +08:00 committed by Knative Prow Robot
parent 4486b36782
commit 2b518d1e4e
2 changed files with 22 additions and 0 deletions

View File

@ -54,6 +54,9 @@ func (f *TriggerUpdateFlags) GetFilters() (map[string]string, error) {
if len(parts) < 2 || parts[0] == "" || parts[1] == "" { if len(parts) < 2 || parts[0] == "" || parts[1] == "" {
return nil, fmt.Errorf("invalid filter %s", f.Filters) return nil, fmt.Errorf("invalid filter %s", f.Filters)
} else { } 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] filters[parts[0]] = parts[1]
} }
} }
@ -72,6 +75,9 @@ func (f *TriggerUpdateFlags) GetUpdateFilters() (map[string]string, []string, er
if len(parts) < 2 || parts[0] == "" || parts[1] == "" { if len(parts) < 2 || parts[0] == "" || parts[1] == "" {
return nil, nil, fmt.Errorf("invalid filter %s", f.Filters) return nil, nil, fmt.Errorf("invalid filter %s", f.Filters)
} }
if _, ok := filters[parts[0]]; ok {
return nil, nil, fmt.Errorf("duplicate key '%s' in filters %s", parts[0], f.Filters)
}
filters[parts[0]] = parts[1] filters[parts[0]] = parts[1]
} }
} }

View File

@ -59,6 +59,14 @@ func TestGetFilters(t *testing.T) {
_, err = createFlag.GetFilters() _, err = createFlag.GetFilters()
assert.ErrorContains(t, err, "invalid filter") 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) { func TestGetUpdateFilters(t *testing.T) {
@ -101,4 +109,12 @@ func TestGetUpdateFilters(t *testing.T) {
assert.DeepEqual(t, wantedRemoved, removed) assert.DeepEqual(t, wantedRemoved, removed)
assert.DeepEqual(t, wantedUpdated, updated) assert.DeepEqual(t, wantedUpdated, updated)
}) })
t.Run("update duplicate filters", func(t *testing.T) {
createFlag := TriggerUpdateFlags{
Filters: filterArray{"type=foo", "type=bar"},
}
_, _, err := createFlag.GetUpdateFilters()
assert.ErrorContains(t, err, "duplicate key")
})
} }