43 lines
1.1 KiB
Go
43 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestRegistryCredentialsDir(t *testing.T) {
|
|
t.Run("missing file", func(t *testing.T) {
|
|
dir := t.TempDir()
|
|
t.Setenv("DOCKER_CONFIG", dir)
|
|
got, found, readErr := registryCredentialsDir()
|
|
assert.Equal(t, dir, got)
|
|
assert.False(t, found)
|
|
assert.NoError(t, readErr)
|
|
})
|
|
|
|
t.Run("readable file", func(t *testing.T) {
|
|
dir := t.TempDir()
|
|
require.NoError(t, os.WriteFile(filepath.Join(dir, "config.json"), []byte("{}"), 0o600))
|
|
t.Setenv("DOCKER_CONFIG", dir)
|
|
_, found, readErr := registryCredentialsDir()
|
|
assert.True(t, found)
|
|
assert.NoError(t, readErr)
|
|
})
|
|
|
|
t.Run("unreadable file", func(t *testing.T) {
|
|
if os.Geteuid() == 0 {
|
|
t.Skip("root can read any file")
|
|
}
|
|
dir := t.TempDir()
|
|
require.NoError(t, os.WriteFile(filepath.Join(dir, "config.json"), []byte("{}"), 0o000))
|
|
t.Setenv("DOCKER_CONFIG", dir)
|
|
_, found, readErr := registryCredentialsDir()
|
|
assert.True(t, found)
|
|
assert.Error(t, readErr)
|
|
})
|
|
}
|