refactor: increase group name limit to 255 (#15377)

Close https://github.com/coder/coder/issues/15184
This commit is contained in:
Bruno Quaresma
2024-11-06 14:39:50 -03:00
committed by GitHub
parent 17363098e2
commit 7f510051fb
2 changed files with 46 additions and 3 deletions

View File

@ -1,6 +1,7 @@
package codersdk
import (
"fmt"
"regexp"
"strings"
@ -98,9 +99,12 @@ func UserRealNameValid(str string) error {
// GroupNameValid returns whether the input string is a valid group name.
func GroupNameValid(str string) error {
// 36 is to support using UUIDs as the group name.
if len(str) > 36 {
return xerrors.New("must be <= 36 characters")
// We want to support longer names for groups to allow users to sync their
// group names with their identity providers without manual mapping. Related
// to: https://github.com/coder/coder/issues/15184
limit := 255
if len(str) > limit {
return xerrors.New(fmt.Sprintf("must be <= %d characters", limit))
}
// Avoid conflicts with routes like /groups/new and /groups/create.
if str == "new" || str == "create" {

View File

@ -8,6 +8,7 @@ import (
"github.com/stretchr/testify/require"
"github.com/coder/coder/v2/codersdk"
"github.com/coder/coder/v2/cryptorand"
"github.com/coder/coder/v2/testutil"
)
@ -254,3 +255,41 @@ func TestUserRealNameValid(t *testing.T) {
})
}
}
func TestGroupNameValid(t *testing.T) {
t.Parallel()
random255String, err := cryptorand.String(255)
require.NoError(t, err, "failed to generate 255 random string")
random256String, err := cryptorand.String(256)
require.NoError(t, err, "failed to generate 256 random string")
testCases := []struct {
Name string
Valid bool
}{
{"", false},
{"my-group", true},
{"create", false},
{"new", false},
{"Lord Voldemort Team", false},
{random255String, true},
{random256String, false},
}
for _, testCase := range testCases {
testCase := testCase
t.Run(testCase.Name, func(t *testing.T) {
t.Parallel()
err := codersdk.GroupNameValid(testCase.Name)
assert.Equal(
t,
testCase.Valid,
err == nil,
"Test case %s failed: expected valid=%t but got error: %v",
testCase.Name,
testCase.Valid,
err,
)
})
}
}