mirror of https://github.com/hashicorp/consul
Backport of [CC-5719] Add support for builtin global-read-only policy into release/1.15.x (#18344)
[CC-5719] Add support for builtin global-read-only policy (#18319) * [CC-5719] Add support for builtin global-read-only policy * Add changelog * Add read-only to docs * Fix some minor issues. * Change from ReplaceAll to Sprintf * Change IsValidPolicy name to return an error instead of bool * Fix PolicyList test * Fix other tests * Apply suggestions from code review * Fix state store test for policy list. * Fix naming issues * Update acl/validation.go * Update agent/consul/acl_endpoint.go --------- Co-authored-by: Jeremy Jacobson <jjacobson93@users.noreply.github.com> Co-authored-by: Paul Glass <pglass@hashicorp.com> Co-authored-by: Chris Thain <32781396+cthain@users.noreply.github.com>pull/18360/head
parent
39ed6a77c5
commit
30a16232e9
@ -0,0 +1,6 @@
|
||||
```release-note:improvement
|
||||
acl: added builtin ACL policy that provides global read-only access (builtin/global-read-only)
|
||||
```
|
||||
```release-note:improvement
|
||||
acl: allow for a single slash character in policy names
|
||||
```
|
@ -0,0 +1,78 @@
|
||||
// Copyright (c) HashiCorp, Inc.
|
||||
// SPDX-License-Identifier: MPL-2.0
|
||||
|
||||
package acl
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func Test_ValidatePolicyName(t *testing.T) {
|
||||
for _, tc := range []struct {
|
||||
description string
|
||||
name string
|
||||
valid bool
|
||||
}{
|
||||
{
|
||||
description: "valid policy",
|
||||
name: "this-is-valid",
|
||||
valid: true,
|
||||
},
|
||||
{
|
||||
description: "empty policy",
|
||||
name: "",
|
||||
valid: false,
|
||||
},
|
||||
{
|
||||
description: "with slash",
|
||||
name: "policy/with-slash",
|
||||
valid: true,
|
||||
},
|
||||
{
|
||||
description: "leading slash",
|
||||
name: "/no-leading-slash",
|
||||
valid: false,
|
||||
},
|
||||
{
|
||||
description: "too many slashes",
|
||||
name: "too/many/slashes",
|
||||
valid: false,
|
||||
},
|
||||
{
|
||||
description: "no double-slash",
|
||||
name: "no//double-slash",
|
||||
valid: false,
|
||||
},
|
||||
{
|
||||
description: "builtin prefix",
|
||||
name: "builtin/prefix-cannot-be-used",
|
||||
valid: false,
|
||||
},
|
||||
{
|
||||
description: "long",
|
||||
name: "this-policy-name-is-very-very-long-but-it-is-okay-because-it-is-the-max-length-that-we-allow-here-in-a-policy-name-which-is-good",
|
||||
valid: true,
|
||||
},
|
||||
{
|
||||
description: "too long",
|
||||
name: "this-is-a-policy-that-has-one-character-too-many-it-is-way-too-long-for-a-policy-we-do-not-want-a-policy-of-this-length-because-1",
|
||||
valid: false,
|
||||
},
|
||||
{
|
||||
description: "invalid start character",
|
||||
name: "!foo",
|
||||
valid: false,
|
||||
},
|
||||
{
|
||||
description: "invalid character",
|
||||
name: "this%is%bad",
|
||||
valid: false,
|
||||
},
|
||||
} {
|
||||
t.Run(tc.description, func(t *testing.T) {
|
||||
require.Equal(t, tc.valid, ValidatePolicyName(tc.name) == nil)
|
||||
})
|
||||
}
|
||||
}
|
Loading…
Reference in new issue