@@ -109,6 +109,32 @@ func TestAdminCLI(t *testing.T) {
109109 require .Equal (t , "testkey" , resp .Keys [0 ].KeyInfo .Name )
110110 // Metadata is []byte, Go's JSON unmarshaler automatically decodes base64 strings
111111 require .Equal (t , "my-custom-metadata" , string (resp .Keys [0 ].KeyInfo .Metadata ))
112+ originalPublicKey := resp .Keys [0 ].KeyInfo .PublicKey
113+
114+ // Rename testkey to renamedkey.
115+ _ , err = runCommand (t , nil , "rename" , "-d" , `{"OldName": "testkey", "NewName": "renamedkey"}` )
116+ require .NoError (t , err )
117+
118+ // Verify the old name doesn't exist.
119+ out , err = runCommand (t , nil , "get" , "-d" , `{"KeyNames": ["testkey"]}` )
120+ require .Error (t , err )
121+
122+ // Verify the new name exists with the same key material.
123+ out , err = runCommand (t , nil , "get" , "-d" , `{"KeyNames": ["renamedkey"]}` )
124+ require .NoError (t , err )
125+ resp = ks.GetKeysResponse {}
126+ err = json .Unmarshal (out .Bytes (), & resp )
127+ require .NoError (t , err )
128+ require .Len (t , resp .Keys , 1 )
129+ require .Equal (t , "renamedkey" , resp .Keys [0 ].KeyInfo .Name )
130+ require .Equal (t , ks .X25519 , resp .Keys [0 ].KeyInfo .KeyType )
131+ require .Equal (t , originalPublicKey , resp .Keys [0 ].KeyInfo .PublicKey )
132+ // Metadata should be preserved
133+ require .Equal (t , "my-custom-metadata" , string (resp .Keys [0 ].KeyInfo .Metadata ))
134+
135+ // Rename it back to testkey for cleanup.
136+ _ , err = runCommand (t , nil , "rename" , "-d" , `{"OldName": "renamedkey", "NewName": "testkey"}` )
137+ require .NoError (t , err )
112138
113139 // Delete the keys with confirmation.
114140 out , err = runCommand (t , bytes .NewBufferString ("yes\n " ), "delete" , "-d" , `{"KeyNames": ["testkey", "testkey2"]}` )
0 commit comments