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() {
|
for keyPath, role := range store.ListKeys() {
|
||||||
gun := ""
|
gun := ""
|
||||||
if role != data.CanonicalRootRole {
|
if role != data.CanonicalRootRole {
|
||||||
gun = filepath.Dir(keyPath)
|
dirPath := filepath.Dir(keyPath)
|
||||||
|
if dirPath != "." { // no gun
|
||||||
|
gun = dirPath
|
||||||
|
}
|
||||||
}
|
}
|
||||||
info = append(info, keyInfo{
|
info = append(info, keyInfo{
|
||||||
role: role,
|
role: role,
|
||||||
|
@ -108,6 +111,7 @@ func prettyPrintKeys(keyStores []trustmanager.KeyStore, writer io.Writer) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(info) == 0 {
|
if len(info) == 0 {
|
||||||
writer.Write([]byte("No signing keys found.\n"))
|
writer.Write([]byte("No signing keys found.\n"))
|
||||||
return
|
return
|
||||||
|
|
|
@ -93,30 +93,33 @@ func TestPrettyPrintRootAndSigningKeys(t *testing.T) {
|
||||||
|
|
||||||
longNameShortened := "..." + strings.Repeat("z", 37)
|
longNameShortened := "..." + strings.Repeat("z", 37)
|
||||||
|
|
||||||
// just use the same key for testing
|
keys := make([]data.PrivateKey, 3)
|
||||||
|
for i := 0; i < 3; i++ {
|
||||||
key, err := trustmanager.GenerateED25519Key(rand.Reader)
|
key, err := trustmanager.GenerateED25519Key(rand.Reader)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
keys[i] = key
|
||||||
|
}
|
||||||
|
|
||||||
root := data.CanonicalRootRole
|
root := data.CanonicalRootRole
|
||||||
|
|
||||||
// add keys to the key stores
|
// add keys to the key stores
|
||||||
err = keyStores[0].AddKey(key.ID(), root, key)
|
assert.NoError(t, keyStores[0].AddKey(keys[0].ID(), root, keys[0]))
|
||||||
assert.NoError(t, err)
|
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]))
|
||||||
err = keyStores[1].AddKey(key.ID(), root, key)
|
assert.NoError(t, keyStores[1].AddKey("short/gun/"+keys[0].ID(), "snapshot", keys[0]))
|
||||||
assert.NoError(t, err)
|
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]))
|
||||||
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)
|
|
||||||
|
|
||||||
expected := [][]string{
|
expected := [][]string{
|
||||||
{root, key.ID(), keyStores[0].Name()},
|
// root always comes first
|
||||||
{root, key.ID(), longNameShortened},
|
{root, keys[0].ID(), keyStores[0].Name()},
|
||||||
{"targets", "..." + strings.Repeat("/a", 11), key.ID(), keyStores[0].Name()},
|
{root, keys[0].ID(), longNameShortened},
|
||||||
{"snapshot", "short/gun", key.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
|
var b bytes.Buffer
|
||||||
|
|
Loading…
Reference in New Issue