mirror of
https://github.com/coder/coder.git
synced 2025-07-12 00:14:10 +00:00
refactor: increase group name limit to 255 (#15377)
Close https://github.com/coder/coder/issues/15184
This commit is contained in:
@ -1,6 +1,7 @@
|
|||||||
package codersdk
|
package codersdk
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
@ -98,9 +99,12 @@ func UserRealNameValid(str string) error {
|
|||||||
|
|
||||||
// GroupNameValid returns whether the input string is a valid group name.
|
// GroupNameValid returns whether the input string is a valid group name.
|
||||||
func GroupNameValid(str string) error {
|
func GroupNameValid(str string) error {
|
||||||
// 36 is to support using UUIDs as the group name.
|
// We want to support longer names for groups to allow users to sync their
|
||||||
if len(str) > 36 {
|
// group names with their identity providers without manual mapping. Related
|
||||||
return xerrors.New("must be <= 36 characters")
|
// 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.
|
// Avoid conflicts with routes like /groups/new and /groups/create.
|
||||||
if str == "new" || str == "create" {
|
if str == "new" || str == "create" {
|
||||||
|
@ -8,6 +8,7 @@ import (
|
|||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
"github.com/coder/coder/v2/codersdk"
|
"github.com/coder/coder/v2/codersdk"
|
||||||
|
"github.com/coder/coder/v2/cryptorand"
|
||||||
"github.com/coder/coder/v2/testutil"
|
"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,
|
||||||
|
)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user