forked from chrismellard/secretfacade
/
fakesecretstore.go
50 lines (41 loc) · 1.13 KB
/
fakesecretstore.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package fake
import (
"fmt"
"github.com/jenkins-x-plugins/secretfacade/pkg/secretstore"
)
func NewFakeSecretStore() *SecretStore {
return &SecretStore{secretStores: map[string]map[string]secretType{}}
}
type SecretStore struct {
secretStores map[string]map[string]secretType
}
type secretType struct {
secretName string
values secretstore.SecretValue
}
func (f SecretStore) GetSecret(location, secretName, secretKey string) (string, error) {
store := f.secretStores[location]
secret := store[secretName]
if secretKey == "" {
return secret.values.Value, nil
}
for k, v := range secret.values.PropertyValues {
if k == secretKey {
return v, nil
}
}
return "", fmt.Errorf("unable to find key %s in secret %s", secretKey, secretName)
}
func (f SecretStore) SetSecret(location, secretName string, secretValue *secretstore.SecretValue) error {
var secrets map[string]secretType
var ok bool
if secrets, ok = f.secretStores[location]; !ok {
secrets = map[string]secretType{}
f.secretStores[location] = secrets
}
secrets[secretName] = secretType{
secretName: secretName,
values: *secretValue,
}
return nil
}