From f027d610149d7dbb0d486e92a3a1a55f4b948cc3 Mon Sep 17 00:00:00 2001 From: Dhia Ayachi Date: Mon, 20 Nov 2023 09:47:44 -0500 Subject: [PATCH] fix a panic in the CLI when deleting an acl policy with an unknown name (#19679) * fix a panic in the CLI when deleting an acl policy with an unknown name * add changelog --- .changelog/19679.txt | 3 +++ command/acl/acl_helpers.go | 4 ++++ command/acl/acl_test.go | 30 ++++++++++++++++++++++++++++++ 3 files changed, 37 insertions(+) create mode 100644 .changelog/19679.txt diff --git a/.changelog/19679.txt b/.changelog/19679.txt new file mode 100644 index 0000000000..42f681be29 --- /dev/null +++ b/.changelog/19679.txt @@ -0,0 +1,3 @@ +```release-note:bug +CLI: fix a panic when deleting a non existing policy by name. +``` diff --git a/command/acl/acl_helpers.go b/command/acl/acl_helpers.go index 9dd40e9e0e..a847f979fb 100644 --- a/command/acl/acl_helpers.go +++ b/command/acl/acl_helpers.go @@ -105,6 +105,10 @@ func GetPolicyIDByName(client *api.Client, name string) (string, error) { return "", err } + if policy == nil { + return "", fmt.Errorf("No such policy with name: %s", name) + } + return policy.ID, nil } diff --git a/command/acl/acl_test.go b/command/acl/acl_test.go index c2a46f18b0..cc172b3631 100644 --- a/command/acl/acl_test.go +++ b/command/acl/acl_test.go @@ -48,6 +48,36 @@ func Test_GetPolicyIDByName_Builtins(t *testing.T) { } } +func Test_GetPolicyIDByName_NotFound(t *testing.T) { + t.Parallel() + + a := agent.StartTestAgent(t, + agent.TestAgent{ + LogOutput: io.Discard, + HCL: ` + primary_datacenter = "dc1" + acl { + enabled = true + tokens { + initial_management = "root" + } + } + `, + }, + ) + + defer a.Shutdown() + testrpc.WaitForTestAgent(t, a.RPC, "dc1", testrpc.WithToken("root")) + + client := a.Client() + client.AddHeader("X-Consul-Token", "root") + + id, err := GetPolicyIDByName(client, "not_found") + require.Error(t, err) + require.Equal(t, "", id) + +} + func Test_GetPolicyIDFromPartial_Builtins(t *testing.T) { t.Parallel()