Skip to content

Commit 0d9f113

Browse files
committed
correctly remove duplicated secrets
Signed-off-by: CrazyMax <[email protected]>
1 parent 4ed1e07 commit 0d9f113

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

util/buildflags/secrets.go

+15-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func (s Secrets) Normalize() Secrets {
2727
if len(s) == 0 {
2828
return nil
2929
}
30-
return removeDupes(s)
30+
return removeSecretDupes(s)
3131
}
3232

3333
func (s Secrets) ToPB() []*controllerapi.Secret {
@@ -155,3 +155,17 @@ func parseSecret(value string) (*controllerapi.Secret, error) {
155155
}
156156
return s.ToPB(), nil
157157
}
158+
159+
func removeSecretDupes(s []*Secret) []*Secret {
160+
var res []*Secret
161+
m := map[string]int{}
162+
for _, sec := range s {
163+
if i, ok := m[sec.ID]; ok {
164+
res[i] = sec
165+
} else {
166+
m[sec.ID] = len(res)
167+
res = append(res, sec)
168+
}
169+
}
170+
return res
171+
}

util/buildflags/secrets_test.go

+13
Original file line numberDiff line numberDiff line change
@@ -81,4 +81,17 @@ func TestSecrets(t *testing.T) {
8181
result := actual.Equals(expected)
8282
require.True(t, result.True())
8383
})
84+
85+
t.Run("RemoveDupes", func(t *testing.T) {
86+
secrets := Secrets{
87+
{ID: "mysecret", Env: "FOO"},
88+
{ID: "mysecret", Env: "BAR"},
89+
{ID: "mysecret2", Env: "BAZ"},
90+
}.Normalize()
91+
92+
expected := `[{"id":"mysecret","env":"BAR"},{"id":"mysecret2","env":"BAZ"}]`
93+
actual, err := json.Marshal(secrets)
94+
require.NoError(t, err)
95+
require.JSONEq(t, expected, string(actual))
96+
})
8497
}

0 commit comments

Comments
 (0)