forked from baron/baron-sso
49 lines
1.3 KiB
Go
49 lines
1.3 KiB
Go
package handler
|
|
|
|
import (
|
|
"baron-sso-backend/internal/domain"
|
|
"baron-sso-backend/internal/utils"
|
|
"context"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/mock"
|
|
)
|
|
|
|
func TestCreatePersonalTenantForUser_SlugLength(t *testing.T) {
|
|
mockTenantService := &MockTenantService{}
|
|
ctx := context.Background()
|
|
|
|
var capturedSlug string
|
|
mockTenantService.On(
|
|
"RegisterTenant",
|
|
ctx,
|
|
"Personal - user@example.com",
|
|
mock.AnythingOfType("string"),
|
|
domain.TenantTypePersonal,
|
|
"Automatically provisioned personal tenant",
|
|
[]string(nil),
|
|
(*string)(nil),
|
|
"",
|
|
).Run(func(args mock.Arguments) {
|
|
capturedSlug = args.String(2)
|
|
}).Return(&domain.Tenant{
|
|
ID: "personal-tenant-id",
|
|
Slug: "personal-slug",
|
|
Name: "Personal - user@example.com",
|
|
}, nil)
|
|
|
|
tenant, err := createPersonalTenantForUser(ctx, mockTenantService, "user@example.com")
|
|
assert.NoError(t, err)
|
|
assert.NotNil(t, tenant)
|
|
|
|
// Ensure the generated slug is strictly 32 characters or less
|
|
assert.LessOrEqual(t, len(capturedSlug), 32)
|
|
assert.True(t, strings.HasPrefix(capturedSlug, "personal-"))
|
|
|
|
// Ensure that the captured slug actually passes ValidateSlug!
|
|
valid, msg := utils.ValidateSlug(capturedSlug)
|
|
assert.True(t, valid, "Slug must be valid: "+msg)
|
|
}
|