ignore leading slash in kv get command (#16443)

* ignore leading slash in kv get command

* add changelog entry
This commit is contained in:
Chris Capurso 2022-07-28 14:11:58 -04:00 committed by GitHub
parent b3f138679c
commit d814ab3825
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 20 additions and 7 deletions

3
changelog/16443.txt Normal file
View File

@ -0,0 +1,3 @@
```release-note:bug
secrets/kv: Fix `kv get` issue preventing the ability to read a secret when providing a leading slash
```

View File

@ -116,16 +116,16 @@ func (c *KVGetCommand) Run(args []string) int {
mountFlagSyntax := (c.flagMount != "")
var (
mountPath string
partialPath string
v2 bool
mountPath string
v2 bool
)
// Ignore leading slash
partialPath := strings.TrimPrefix(args[0], "/")
// Parse the paths and grab the KV version
if mountFlagSyntax {
// In this case, this arg is the secret path (e.g. "foo").
partialPath = args[0]
mountPath = sanitizePath(c.flagMount)
_, v2, err = isKVv2(mountPath, client)
if err != nil {
@ -135,8 +135,6 @@ func (c *KVGetCommand) Run(args []string) int {
} else {
// In this case, this arg is a path-like combination of mountPath/secretPath.
// (e.g. "secret/foo")
partialPath = args[0]
mountPath, v2, err = isKVv2(partialPath, client)
if err != nil {
c.UI.Error(err.Error())

View File

@ -458,6 +458,12 @@ func TestKVGetCommand(t *testing.T) {
append(baseV2ExpectedFields, "foo"),
0,
},
{
"v2_mount_flag_syntax_leading_slash",
[]string{"-mount", "kv", "/read/foo"},
append(baseV2ExpectedFields, "foo"),
0,
},
{
"v2_not_found",
[]string{"kv/nope/not/once/never"},
@ -470,6 +476,12 @@ func TestKVGetCommand(t *testing.T) {
append(baseV2ExpectedFields, "foo"),
0,
},
{
"v2_read_leading_slash",
[]string{"/kv/read/foo"},
append(baseV2ExpectedFields, "foo"),
0,
},
{
"v2_read_version",
[]string{"--version", "1", "kv/read/foo"},