diff --git a/secret/static.go b/secret/static.go index ffacd9d..56fc610 100644 --- a/secret/static.go +++ b/secret/static.go @@ -20,6 +20,20 @@ func Static(secrets []*drone.Secret) Provider { return &static{secrets} } +// StaticVars returns a new static secret provider. The static +// secret provider finds and returns a named secret from the +// static key value pairs. +func StaticVars(vars map[string]string) Provider { + var secrets []*drone.Secret + for k, v := range vars { + secrets = append(secrets, &drone.Secret{ + Name: k, + Data: v, + }) + } + return Static(secrets) +} + type static struct { secrets []*drone.Secret } diff --git a/secret/static_test.go b/secret/static_test.go index 20a36da..7a73603 100644 --- a/secret/static_test.go +++ b/secret/static_test.go @@ -33,6 +33,26 @@ func TestStatic(t *testing.T) { } } +func TestStaticVars(t *testing.T) { + secrets := map[string]string{ + "docker_username": "octocat", + "docker_password": "correct-horse-battery-staple", + } + args := &Request{ + Name: "docker_password", + Build: &drone.Build{Event: drone.EventPush}, + } + service := StaticVars(secrets) + secret, err := service.Find(noContext, args) + if err != nil { + t.Error(err) + return + } + if secret.Data != secrets["docker_password"] { + t.Errorf("expect docker_password") + } +} + func TestStaticNotFound(t *testing.T) { secrets := []*drone.Secret{ {Name: "docker_username"},