diff --git a/cmd/headscale/cli/users.go b/cmd/headscale/cli/users.go index bcc8c913..56c82340 100644 --- a/cmd/headscale/cli/users.go +++ b/cmd/headscale/cli/users.go @@ -231,7 +231,7 @@ var renameUserCmd = &cobra.Command{ newName, _ := cmd.Flags().GetString("new-name") renameReq := &v1.RenameUserRequest{ - OldId: id, + OldId: users.GetUsers()[0].GetId(), NewName: newName, } diff --git a/integration/cli_test.go b/integration/cli_test.go index d04bd02d..f1ebf949 100644 --- a/integration/cli_test.go +++ b/integration/cli_test.go @@ -237,13 +237,52 @@ func TestUserCommand(t *testing.T) { } }, integrationutil.ScaledTimeout(20*time.Second), 1*time.Second) + _, err = headscale.Execute( + []string{ + "headscale", + "users", + "rename", + "--output=json", + "--name=newname", + "--new-name=renamedbyname", + }, + ) + require.NoError(t, err) + + var listAfterRenameByName []*v1.User + + assert.EventuallyWithT(t, func(ct *assert.CollectT) { + err := executeAndUnmarshal(headscale, + []string{ + "headscale", + "users", + "list", + "--output", + "json", + }, + &listAfterRenameByName, + ) + assert.NoError(ct, err) + + if !assert.Len(ct, listAfterRenameByName, 1) { + return + } + + assert.Equal( + ct, + "renamedbyname", + listAfterRenameByName[0].GetName(), + "Should have renamedbyname after rename resolved by name", + ) + }, integrationutil.ScaledTimeout(20*time.Second), 1*time.Second) + deleteResult, err = headscale.Execute( []string{ "headscale", "users", "destroy", "--force", - "--name=newname", + "--name=renamedbyname", }, ) require.NoError(t, err)