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) }