mirror of https://github.com/docker/docs.git
Fix pretty-print keys to not print "." if there is no GUN.
Signed-off-by: Ying Li <ying.li@docker.com>
This commit is contained in:
parent
877d47bb5c
commit
dd0223f7cf
|
@ -98,7 +98,10 @@ func prettyPrintKeys(keyStores []trustmanager.KeyStore, writer io.Writer) {
|
|||
for keyPath, role := range store.ListKeys() {
|
||||
gun := ""
|
||||
if role != data.CanonicalRootRole {
|
||||
gun = filepath.Dir(keyPath)
|
||||
dirPath := filepath.Dir(keyPath)
|
||||
if dirPath != "." { // no gun
|
||||
gun = dirPath
|
||||
}
|
||||
}
|
||||
info = append(info, keyInfo{
|
||||
role: role,
|
||||
|
@ -108,6 +111,7 @@ func prettyPrintKeys(keyStores []trustmanager.KeyStore, writer io.Writer) {
|
|||
})
|
||||
}
|
||||
}
|
||||
|
||||
if len(info) == 0 {
|
||||
writer.Write([]byte("No signing keys found.\n"))
|
||||
return
|
||||
|
|
|
@ -93,30 +93,33 @@ func TestPrettyPrintRootAndSigningKeys(t *testing.T) {
|
|||
|
||||
longNameShortened := "..." + strings.Repeat("z", 37)
|
||||
|
||||
// just use the same key for testing
|
||||
key, err := trustmanager.GenerateED25519Key(rand.Reader)
|
||||
assert.NoError(t, err)
|
||||
keys := make([]data.PrivateKey, 3)
|
||||
for i := 0; i < 3; i++ {
|
||||
key, err := trustmanager.GenerateED25519Key(rand.Reader)
|
||||
assert.NoError(t, err)
|
||||
keys[i] = key
|
||||
}
|
||||
|
||||
root := data.CanonicalRootRole
|
||||
|
||||
// add keys to the key stores
|
||||
err = keyStores[0].AddKey(key.ID(), root, key)
|
||||
assert.NoError(t, err)
|
||||
|
||||
err = keyStores[1].AddKey(key.ID(), root, key)
|
||||
assert.NoError(t, err)
|
||||
|
||||
err = keyStores[0].AddKey(strings.Repeat("a/", 30)+key.ID(), "targets", key)
|
||||
assert.NoError(t, err)
|
||||
|
||||
err = keyStores[1].AddKey("short/gun/"+key.ID(), "snapshot", key)
|
||||
assert.NoError(t, err)
|
||||
assert.NoError(t, keyStores[0].AddKey(keys[0].ID(), root, keys[0]))
|
||||
assert.NoError(t, keyStores[1].AddKey(keys[0].ID(), root, keys[0]))
|
||||
assert.NoError(t, keyStores[0].AddKey(strings.Repeat("a/", 30)+keys[0].ID(), "targets", keys[0]))
|
||||
assert.NoError(t, keyStores[1].AddKey("short/gun/"+keys[0].ID(), "snapshot", keys[0]))
|
||||
assert.NoError(t, keyStores[0].AddKey(keys[1].ID(), "targets/a", keys[1]))
|
||||
assert.NoError(t, keyStores[0].AddKey(keys[2].ID(), "invalidRole", keys[2]))
|
||||
|
||||
expected := [][]string{
|
||||
{root, key.ID(), keyStores[0].Name()},
|
||||
{root, key.ID(), longNameShortened},
|
||||
{"targets", "..." + strings.Repeat("/a", 11), key.ID(), keyStores[0].Name()},
|
||||
{"snapshot", "short/gun", key.ID(), longNameShortened},
|
||||
// root always comes first
|
||||
{root, keys[0].ID(), keyStores[0].Name()},
|
||||
{root, keys[0].ID(), longNameShortened},
|
||||
// these have no gun, so they come first
|
||||
{"invalidRole", keys[2].ID(), keyStores[0].Name()},
|
||||
{"targets/a", keys[1].ID(), keyStores[0].Name()},
|
||||
// these have guns, and are sorted then by guns
|
||||
{"targets", "..." + strings.Repeat("/a", 11), keys[0].ID(), keyStores[0].Name()},
|
||||
{"snapshot", "short/gun", keys[0].ID(), longNameShortened},
|
||||
}
|
||||
|
||||
var b bytes.Buffer
|
||||
|
|
Loading…
Reference in New Issue