mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
f695e98cb7
This reverts commit 98fc09128b
in order to
keep registry v2 schema1 handling and libtrust-key-based engine ID.
Because registry v2 schema1 was not officially deprecated and
registries are still relying on it, this patch puts its logic back.
However, registry v1 relics are not added back since v1 logic has been
removed a while ago.
This also fixes an engine upgrade issue in a swarm cluster. It was relying
on the Engine ID to be the same upon upgrade, but the mentioned commit
modified the logic to use UUID and from a different file.
Since the libtrust key is always needed to support v2 schema1 pushes,
that the old engine ID is based on the libtrust key, and that the engine ID
needs to be conserved across upgrades, adding a UUID-based engine ID logic
seems to add more complexity than it solves the problems.
Hence reverting the engine ID changes as well.
Signed-off-by: Tibor Vass <tibor@docker.com>
71 lines
2 KiB
Go
71 lines
2 KiB
Go
package daemon // import "github.com/docker/docker/daemon"
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"gotest.tools/assert"
|
|
is "gotest.tools/assert/cmp"
|
|
"gotest.tools/fs"
|
|
)
|
|
|
|
// LoadOrCreateTrustKey
|
|
func TestLoadOrCreateTrustKeyInvalidKeyFile(t *testing.T) {
|
|
tmpKeyFolderPath, err := ioutil.TempDir("", "api-trustkey-test")
|
|
assert.NilError(t, err)
|
|
defer os.RemoveAll(tmpKeyFolderPath)
|
|
|
|
tmpKeyFile, err := ioutil.TempFile(tmpKeyFolderPath, "keyfile")
|
|
assert.NilError(t, err)
|
|
|
|
_, err = loadOrCreateTrustKey(tmpKeyFile.Name())
|
|
assert.Check(t, is.ErrorContains(err, "Error loading key file"))
|
|
}
|
|
|
|
func TestLoadOrCreateTrustKeyCreateKeyWhenFileDoesNotExist(t *testing.T) {
|
|
tmpKeyFolderPath := fs.NewDir(t, "api-trustkey-test")
|
|
defer tmpKeyFolderPath.Remove()
|
|
|
|
// Without the need to create the folder hierarchy
|
|
tmpKeyFile := tmpKeyFolderPath.Join("keyfile")
|
|
|
|
key, err := loadOrCreateTrustKey(tmpKeyFile)
|
|
assert.NilError(t, err)
|
|
assert.Check(t, key != nil)
|
|
|
|
_, err = os.Stat(tmpKeyFile)
|
|
assert.NilError(t, err, "key file doesn't exist")
|
|
}
|
|
|
|
func TestLoadOrCreateTrustKeyCreateKeyWhenDirectoryDoesNotExist(t *testing.T) {
|
|
tmpKeyFolderPath := fs.NewDir(t, "api-trustkey-test")
|
|
defer tmpKeyFolderPath.Remove()
|
|
tmpKeyFile := tmpKeyFolderPath.Join("folder/hierarchy/keyfile")
|
|
|
|
key, err := loadOrCreateTrustKey(tmpKeyFile)
|
|
assert.NilError(t, err)
|
|
assert.Check(t, key != nil)
|
|
|
|
_, err = os.Stat(tmpKeyFile)
|
|
assert.NilError(t, err, "key file doesn't exist")
|
|
}
|
|
|
|
func TestLoadOrCreateTrustKeyCreateKeyNoPath(t *testing.T) {
|
|
defer os.Remove("keyfile")
|
|
key, err := loadOrCreateTrustKey("keyfile")
|
|
assert.NilError(t, err)
|
|
assert.Check(t, key != nil)
|
|
|
|
_, err = os.Stat("keyfile")
|
|
assert.NilError(t, err, "key file doesn't exist")
|
|
}
|
|
|
|
func TestLoadOrCreateTrustKeyLoadValidKey(t *testing.T) {
|
|
tmpKeyFile := filepath.Join("testdata", "keyfile")
|
|
key, err := loadOrCreateTrustKey(tmpKeyFile)
|
|
assert.NilError(t, err)
|
|
expected := "AWX2:I27X:WQFX:IOMK:CNAK:O7PW:VYNB:ZLKC:CVAE:YJP2:SI4A:XXAY"
|
|
assert.Check(t, is.Contains(key.String(), expected))
|
|
}
|