forked from baron/baron-sso
75 lines
2.0 KiB
Go
75 lines
2.0 KiB
Go
package bootstrap
|
|
|
|
import (
|
|
"baron-sso-backend/internal/domain"
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
func TestDefaultTenantsSeedOrderAndHierarchy(t *testing.T) {
|
|
expected := []struct {
|
|
name string
|
|
slug string
|
|
tenantType string
|
|
parentSlug string
|
|
domains []string
|
|
}{
|
|
{
|
|
name: "한맥가족",
|
|
slug: "hanmac-family",
|
|
tenantType: domain.TenantTypeCompanyGroup,
|
|
},
|
|
{
|
|
name: "한맥기술",
|
|
slug: "hanmac",
|
|
tenantType: domain.TenantTypeCompany,
|
|
parentSlug: "hanmac-family",
|
|
domains: []string{"hanmaceng.co.kr", "hmac.kr"},
|
|
},
|
|
{
|
|
name: "삼안",
|
|
slug: "saman",
|
|
tenantType: domain.TenantTypeCompany,
|
|
parentSlug: "hanmac-family",
|
|
domains: []string{"samaneng.com"},
|
|
},
|
|
}
|
|
|
|
if len(defaultTenants) != len(expected) {
|
|
t.Fatalf("expected %d default tenants, got %d", len(expected), len(defaultTenants))
|
|
}
|
|
|
|
for i, want := range expected {
|
|
got := defaultTenants[i]
|
|
if got.Name != want.name {
|
|
t.Fatalf("tenant[%d] name = %q, want %q", i, got.Name, want.name)
|
|
}
|
|
if got.Slug != want.slug {
|
|
t.Fatalf("tenant[%d] slug = %q, want %q", i, got.Slug, want.slug)
|
|
}
|
|
if tenantType := stringField(t, got, "Type"); tenantType != want.tenantType {
|
|
t.Fatalf("tenant[%d] type = %q, want %q", i, tenantType, want.tenantType)
|
|
}
|
|
if parentSlug := stringField(t, got, "ParentSlug"); parentSlug != want.parentSlug {
|
|
t.Fatalf("tenant[%d] parent slug = %q, want %q", i, parentSlug, want.parentSlug)
|
|
}
|
|
if !reflect.DeepEqual(got.Domains, want.domains) {
|
|
t.Fatalf("tenant[%d] domains = %#v, want %#v", i, got.Domains, want.domains)
|
|
}
|
|
}
|
|
}
|
|
|
|
func stringField(t *testing.T, target InitialTenantConfig, name string) string {
|
|
t.Helper()
|
|
|
|
value := reflect.ValueOf(target)
|
|
field := value.FieldByName(name)
|
|
if !field.IsValid() {
|
|
t.Fatalf("InitialTenantConfig.%s is required", name)
|
|
}
|
|
if field.Kind() != reflect.String {
|
|
t.Fatalf("InitialTenantConfig.%s must be a string", name)
|
|
}
|
|
return field.String()
|
|
}
|