Files
buildx/bake/gitauth_test.go
T

84 lines
2.3 KiB
Go

package bake
import (
"testing"
"github.com/docker/buildx/util/buildflags"
"github.com/moby/buildkit/client/llb"
"github.com/stretchr/testify/require"
)
func TestGitAuthSecretsFromEnviron(t *testing.T) {
t.Run("empty without remote url", func(t *testing.T) {
secrets := gitAuthSecretsFromEnviron([]string{
bakeGitAuthTokenEnv + "=token",
bakeGitAuthHeaderEnv + "=basic",
}, "")
require.Empty(t, secrets)
})
t.Run("derives host from remote url", func(t *testing.T) {
secrets := gitAuthSecretsFromEnviron([]string{
bakeGitAuthTokenEnv + "=token",
bakeGitAuthHeaderEnv + "=basic",
}, "https://example.com/org/repo.git")
require.Equal(t, []string{
llb.GitAuthTokenKey + ".example.com|" + bakeGitAuthTokenEnv,
llb.GitAuthHeaderKey + ".example.com|" + bakeGitAuthHeaderEnv,
}, secretPairs(secrets))
})
t.Run("ignores host suffixed keys", func(t *testing.T) {
secrets := gitAuthSecretsFromEnviron([]string{
bakeGitAuthTokenEnv + ".example.com=token",
bakeGitAuthHeaderEnv + ".example.com=basic",
}, "https://example.com/org/repo.git")
require.Empty(t, secrets)
})
}
func TestShouldAttachGitAuthSecrets(t *testing.T) {
tests := []struct {
name string
inputURL string
contextPath string
want bool
}{
{
name: "same host http urls",
inputURL: "https://example.com/org/repo.git",
contextPath: "https://example.com/another/repo.git",
want: true,
},
{
name: "same host mixed git url styles",
inputURL: "https://example.com/org/repo.git",
contextPath: "git@example.com:another/repo.git",
want: true,
},
{
name: "different hosts",
inputURL: "https://example.com/org/repo.git",
contextPath: "https://other.example.com/org/repo.git",
want: false,
},
{
name: "non remote context",
inputURL: "https://example.com/org/repo.git",
contextPath: "cwd://src",
want: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
require.Equal(t, tt.want, shouldAttachGitAuthSecrets(tt.inputURL, tt.contextPath))
})
}
}
func secretPairs(secrets buildflags.Secrets) []string {
out := make([]string, 0, len(secrets))
for _, s := range secrets {
out = append(out, s.ID+"|"+s.Env)
}
return out
}