From 084691694119e18ac762dc5a2ba0b6ec268ed52d Mon Sep 17 00:00:00 2001 From: hc-github-team-consul-core Date: Mon, 20 Nov 2023 09:01:28 -0600 Subject: [PATCH] Backport of fix a panic in the CLI when deleting an acl policy with an unknown name into release/1.16.x (#19691) * backport of commit e07f4da212b2957e90550b7de11f6a783e0c374b * backport of commit eecf61b67f4bfe14007d3057ed174fe7c185fac9 --------- Co-authored-by: Dhia Ayachi --- .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 000000000..42f681be2 --- /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 b0e65d224..7954cd3e5 100644 --- a/command/acl/acl_helpers.go +++ b/command/acl/acl_helpers.go @@ -102,6 +102,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 2095795ff..f5b693de0 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()