diff --git a/pkg/secrets/secrets.go b/pkg/secrets/secrets.go index 8ffcc738b..cd1aece48 100644 --- a/pkg/secrets/secrets.go +++ b/pkg/secrets/secrets.go @@ -218,11 +218,13 @@ func (s *SecretsManager) Store(name string, data []byte, driverType string, opti } if options.Replace { - if err := driver.Delete(secr.ID); err != nil && !errors.Is(err, define.ErrNoSuchSecret) { - return "", fmt.Errorf("deleting secret %s: %w", secr.ID, err) - } + err := driver.Delete(secr.ID) + if err != nil { - if err == nil { + if !errors.Is(err, define.ErrNoSuchSecret) { + return "", fmt.Errorf("deleting driver secret %s: %w", secr.ID, err) + } + } else { if err := s.delete(secr.ID); err != nil && !errors.Is(err, define.ErrNoSuchSecret) { return "", fmt.Errorf("deleting secret %s: %w", secr.ID, err) } diff --git a/pkg/secrets/secrets_test.go b/pkg/secrets/secrets_test.go index f68763ff8..7677d7191 100644 --- a/pkg/secrets/secrets_test.go +++ b/pkg/secrets/secrets_test.go @@ -166,6 +166,20 @@ func TestAddReplaceSecretName(t *testing.T) { _, err = manager.Store("mysecret", []byte("mydata.diff"), drivertype, storeOpts) require.NoError(t, err) + + _, data, err := manager.LookupSecretData("mysecret") + require.NoError(t, err) + require.Equal(t, string(data), "mydata.diff") + + _, err = manager.Store("nonexistingsecret", []byte("mydata"), drivertype, storeOpts) + require.NoError(t, err) + + storeOpts.Replace = false + _, err = manager.Store("nonexistingsecret", []byte("newdata"), drivertype, storeOpts) + require.Error(t, err) + + _, err = manager.Delete("nonexistingsecret") + require.NoError(t, err) } func TestAddSecretPrefix(t *testing.T) {