1
0
forked from baron/baron-sso

테스트 보강 및 dev 충돌/CI 정책 정리

This commit is contained in:
Lectom C Han
2026-02-19 16:26:15 +09:00
parent 3025be52d5
commit 85998bd82e
4 changed files with 418 additions and 19 deletions

View File

@@ -0,0 +1,94 @@
package utils
import (
"strings"
"testing"
)
func TestValidateSlug_Valid(t *testing.T) {
ok, msg := ValidateSlug("tenant-2026")
if !ok {
t.Fatalf("expected valid slug, got error: %s", msg)
}
}
func TestValidateSlug_ReservedKeywords(t *testing.T) {
cases := []string{
"stage",
"prod",
"metrics",
"prometheus",
"webmaster",
" Stage ",
}
for _, slug := range cases {
t.Run(slug, func(t *testing.T) {
ok, msg := ValidateSlug(slug)
if ok {
t.Fatalf("expected reserved slug to be rejected: %q", slug)
}
if msg != "slug is a reserved keyword" {
t.Fatalf("unexpected error message: %s", msg)
}
})
}
}
func TestValidateSlug_LengthRules(t *testing.T) {
tests := []struct {
name string
slug string
}{
{name: "too short", slug: "ab"},
{name: "too long", slug: strings.Repeat("a", 33)},
}
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
ok, msg := ValidateSlug(tc.slug)
if ok {
t.Fatalf("expected invalid length slug: %q", tc.slug)
}
if msg != "slug must be between 3 and 32 characters" {
t.Fatalf("unexpected error message: %s", msg)
}
})
}
}
func TestValidateSlug_FormatRules(t *testing.T) {
tests := []struct {
name string
slug string
wantMsg string
}{
{
name: "invalid character",
slug: "tenant_name",
wantMsg: "slug can only contain lowercase letters, numbers, and hyphens",
},
{
name: "leading hyphen",
slug: "-tenant",
wantMsg: "slug cannot start or end with a hyphen",
},
{
name: "trailing hyphen",
slug: "tenant-",
wantMsg: "slug cannot start or end with a hyphen",
},
}
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
ok, msg := ValidateSlug(tc.slug)
if ok {
t.Fatalf("expected invalid slug: %q", tc.slug)
}
if msg != tc.wantMsg {
t.Fatalf("unexpected error message: %s", msg)
}
})
}
}