forked from Ivasoft/drone-docker
Add support for multiple Buildkit secrets with env vars or files as source (#359)
This commit is contained in:
committed by
GitHub
parent
d0b9da388f
commit
94f2f970db
129
docker_test.go
129
docker_test.go
@@ -1 +1,130 @@
|
||||
package docker
|
||||
|
||||
import (
|
||||
"os/exec"
|
||||
"reflect"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestCommandBuild(t *testing.T) {
|
||||
tcs := []struct {
|
||||
name string
|
||||
build Build
|
||||
want *exec.Cmd
|
||||
}{
|
||||
{
|
||||
name: "secret from env var",
|
||||
build: Build{
|
||||
Name: "plugins/drone-docker:latest",
|
||||
Dockerfile: "Dockerfile",
|
||||
Context: ".",
|
||||
SecretEnvs: []string{
|
||||
"foo_secret=FOO_SECRET_ENV_VAR",
|
||||
},
|
||||
},
|
||||
want: exec.Command(
|
||||
dockerExe,
|
||||
"build",
|
||||
"--rm=true",
|
||||
"-f",
|
||||
"Dockerfile",
|
||||
"-t",
|
||||
"plugins/drone-docker:latest",
|
||||
".",
|
||||
"--secret id=foo_secret,env=FOO_SECRET_ENV_VAR",
|
||||
),
|
||||
},
|
||||
{
|
||||
name: "secret from file",
|
||||
build: Build{
|
||||
Name: "plugins/drone-docker:latest",
|
||||
Dockerfile: "Dockerfile",
|
||||
Context: ".",
|
||||
SecretFiles: []string{
|
||||
"foo_secret=/path/to/foo_secret",
|
||||
},
|
||||
},
|
||||
want: exec.Command(
|
||||
dockerExe,
|
||||
"build",
|
||||
"--rm=true",
|
||||
"-f",
|
||||
"Dockerfile",
|
||||
"-t",
|
||||
"plugins/drone-docker:latest",
|
||||
".",
|
||||
"--secret id=foo_secret,src=/path/to/foo_secret",
|
||||
),
|
||||
},
|
||||
{
|
||||
name: "multiple mixed secrets",
|
||||
build: Build{
|
||||
Name: "plugins/drone-docker:latest",
|
||||
Dockerfile: "Dockerfile",
|
||||
Context: ".",
|
||||
SecretEnvs: []string{
|
||||
"foo_secret=FOO_SECRET_ENV_VAR",
|
||||
"bar_secret=BAR_SECRET_ENV_VAR",
|
||||
},
|
||||
SecretFiles: []string{
|
||||
"foo_secret=/path/to/foo_secret",
|
||||
"bar_secret=/path/to/bar_secret",
|
||||
},
|
||||
},
|
||||
want: exec.Command(
|
||||
dockerExe,
|
||||
"build",
|
||||
"--rm=true",
|
||||
"-f",
|
||||
"Dockerfile",
|
||||
"-t",
|
||||
"plugins/drone-docker:latest",
|
||||
".",
|
||||
"--secret id=foo_secret,env=FOO_SECRET_ENV_VAR",
|
||||
"--secret id=bar_secret,env=BAR_SECRET_ENV_VAR",
|
||||
"--secret id=foo_secret,src=/path/to/foo_secret",
|
||||
"--secret id=bar_secret,src=/path/to/bar_secret",
|
||||
),
|
||||
},
|
||||
{
|
||||
name: "invalid mixed secrets",
|
||||
build: Build{
|
||||
Name: "plugins/drone-docker:latest",
|
||||
Dockerfile: "Dockerfile",
|
||||
Context: ".",
|
||||
SecretEnvs: []string{
|
||||
"foo_secret=",
|
||||
"=FOO_SECRET_ENV_VAR",
|
||||
"",
|
||||
},
|
||||
SecretFiles: []string{
|
||||
"foo_secret=",
|
||||
"=/path/to/bar_secret",
|
||||
"",
|
||||
},
|
||||
},
|
||||
want: exec.Command(
|
||||
dockerExe,
|
||||
"build",
|
||||
"--rm=true",
|
||||
"-f",
|
||||
"Dockerfile",
|
||||
"-t",
|
||||
"plugins/drone-docker:latest",
|
||||
".",
|
||||
),
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range tcs {
|
||||
tc := tc
|
||||
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
cmd := commandBuild(tc.build)
|
||||
|
||||
if !reflect.DeepEqual(cmd.String(), tc.want.String()) {
|
||||
t.Errorf("Got cmd %v, want %v", cmd, tc.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user