5d98a5da22
- also address last nits of #119 Co-authored-by: Patrick Schratz <pat-s@noreply.codeberg.org> Reviewed-on: https://codeberg.org/woodpecker-plugins/docker-buildx/pulls/122 Reviewed-by: Patrick Schratz <pat-s@noreply.codeberg.org>
112 lines
3.5 KiB
Go
112 lines
3.5 KiB
Go
package plugin
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"testing"
|
|
|
|
"codeberg.org/6543/go-yaml2json"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/urfave/cli/v2"
|
|
)
|
|
|
|
var defaultTestSettings = Settings{
|
|
Daemon: Daemon{
|
|
StoragePath: "/var/lib/docker",
|
|
},
|
|
Build: Build{
|
|
Context: ".",
|
|
Tags: *cli.NewStringSlice("latest"),
|
|
TagsDefaultName: "latest",
|
|
LabelsAuto: true,
|
|
Pull: true,
|
|
},
|
|
DefaultLogin: Login{
|
|
Registry: "https://index.docker.io/v1/",
|
|
},
|
|
LoginsRaw: "[]",
|
|
Cleanup: true,
|
|
CustomCertStore: "/etc/docker/certs.d/",
|
|
}
|
|
|
|
func TestDefaultLogin(t *testing.T) {
|
|
s := defaultTestSettings
|
|
assert.NoError(t, newSettingsOnly(&s).Validate())
|
|
if assert.Len(t, s.Logins, 1) {
|
|
assert.EqualValues(t, defaultTestSettings.DefaultLogin.Registry, s.Logins[0].Registry)
|
|
}
|
|
|
|
// only use login to auth to registrys
|
|
loginsRaw, err := yaml2json.Convert([]byte(`
|
|
- registry: https://index.docker.io/v1/
|
|
username: docker_username
|
|
password: docker_password
|
|
- registry: https://codeberg.org
|
|
username: cb_username
|
|
password: cb_password`))
|
|
assert.NoError(t, err)
|
|
s.LoginsRaw = string(loginsRaw)
|
|
assert.NoError(t, newSettingsOnly(&s).Validate())
|
|
if assert.Len(t, s.Logins, 2) {
|
|
assert.EqualValues(t, defaultTestSettings.DefaultLogin.Registry, s.Logins[0].Registry)
|
|
}
|
|
|
|
// mixed login settings ('logins' and 'username', 'password' are used)
|
|
s = defaultTestSettings
|
|
loginsRaw, err = yaml2json.Convert([]byte(`
|
|
- registry: https://codeberg.org
|
|
username: cb_username
|
|
password: cb_password`))
|
|
assert.NoError(t, err)
|
|
s.LoginsRaw = string(loginsRaw)
|
|
s.DefaultLogin.Username = "docker_username"
|
|
s.DefaultLogin.Password = "docker_password"
|
|
assert.NoError(t, newSettingsOnly(&s).Validate())
|
|
if assert.Len(t, s.Logins, 2) {
|
|
assert.EqualValues(t, defaultTestSettings.DefaultLogin.Registry, s.Logins[0].Registry)
|
|
}
|
|
|
|
// ignore default registry
|
|
s = defaultTestSettings
|
|
loginsRaw, err = yaml2json.Convert([]byte(`
|
|
- registry: https://codeberg.org
|
|
username: cb_username
|
|
password: cb_password`))
|
|
assert.NoError(t, err)
|
|
s.LoginsRaw = string(loginsRaw)
|
|
assert.NoError(t, newSettingsOnly(&s).Validate())
|
|
if assert.Len(t, s.Logins, 1) {
|
|
assert.EqualValues(t, "https://codeberg.org", s.Logins[0].Registry)
|
|
}
|
|
}
|
|
|
|
func TestWriteBuildkitConfig(t *testing.T) {
|
|
settings := defaultTestSettings
|
|
assert.NoError(t, newSettingsOnly(&settings).Validate())
|
|
assert.EqualValues(t, "", settings.Daemon.BuildkitConfig)
|
|
|
|
settings = defaultTestSettings
|
|
settings.Daemon.BuildkitDebug = true
|
|
assert.NoError(t, newSettingsOnly(&settings).Validate())
|
|
assert.EqualValues(t, "debug = true\n", settings.Daemon.BuildkitConfig)
|
|
|
|
settings = defaultTestSettings
|
|
settings.Daemon.Mirror = "mirror.example.com"
|
|
assert.NoError(t, newSettingsOnly(&settings).Validate())
|
|
assert.EqualValues(t, "[registry]\n[registry.'docker.io']\nmirrors = ['mirror.example.com']\n", settings.Daemon.BuildkitConfig)
|
|
|
|
settings = defaultTestSettings
|
|
settings.DefaultLogin.Registry = "codeberg.org"
|
|
tmpDir, err := os.MkdirTemp("", "go-test-*")
|
|
assert.NoError(t, err)
|
|
settings.CustomCertStore = tmpDir
|
|
defer os.RemoveAll(tmpDir)
|
|
assert.NoError(t, os.Mkdir(tmpDir+"/codeberg.org", os.ModePerm))
|
|
caFile, err := os.Create(tmpDir + "/codeberg.org/" + "ca.crt")
|
|
assert.NoError(t, err)
|
|
assert.NoError(t, caFile.Close())
|
|
|
|
assert.NoError(t, newSettingsOnly(&settings).Validate())
|
|
assert.EqualValues(t, fmt.Sprintf("[registry]\n[registry.'codeberg.org']\nca = ['%s/codeberg.org/ca.crt']\n", tmpDir), settings.Daemon.BuildkitConfig)
|
|
}
|