// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1
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 )
} )
}
}