zitadel/internal/domain/org_domain_test.go

99 lines
2.8 KiB
Go
Raw Normal View History

package domain
import (
"testing"
)
func TestNewIAMDomainName(t *testing.T) {
type args struct {
orgName string
iamDomain string
}
tests := []struct {
name string
args args
result string
}{
{
name: "Single word domain is already valid",
args: args{
orgName: "single-word-domain",
iamDomain: "localhost",
},
result: "single-word-domain.localhost",
},
{
name: "resulting domain should be in lowercase",
args: args{
orgName: "Uppercase org Name",
iamDomain: "localhost",
},
result: "uppercase-org-name.localhost",
},
{
name: "replace spaces with hyphens",
args: args{
orgName: "my org name",
iamDomain: "localhost",
},
result: "my-org-name.localhost",
},
{
name: "replace invalid characters [^a-zA-Z0-9-] with empty spaces",
args: args{
orgName: "mí >**name?",
iamDomain: "localhost",
},
result: "mí-name.localhost",
},
{
name: "label created from org name size is not greater than 63 chars",
args: args{
orgName: "my organization name must not exceed sixty-three characters 1234",
iamDomain: "localhost",
},
result: "my-organization-name-must-not-exceed-sixty-three-characters-123.localhost",
},
{
name: "resulting domain cannot exceed 253 chars",
args: args{
orgName: "Lorem ipsum dolor sit amet",
iamDomain: "llgwyngyllgogerychwyrndrobwllllantysiliogogogoch.llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch.llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch.llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch.co.uk",
},
result: "lorem-ipsum-dolor-sit.llgwyngyllgogerychwyrndrobwllllantysiliogogogoch.llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch.llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch.llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch.co.uk",
},
{
name: "label based on org name should not end with a hyphen",
args: args{
orgName: "my super long organization name with many many many characters ",
iamDomain: "localhost",
},
result: "my-super-long-organization-name-with-many-many-many-characters.localhost",
},
{
name: "label based on org name should not start with a hyphen",
args: args{
orgName: " my super long organization name with many many many characters",
iamDomain: "localhost",
},
result: "my-super-long-organization-name-with-many-many-many-characters.localhost",
},
{
name: "string full with invalid characters returns empty",
args: args{
orgName: "*¿=@^[])",
iamDomain: "localhost",
},
result: "",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
domain, _ := NewIAMDomainName(tt.args.orgName, tt.args.iamDomain)
if tt.result != domain {
t.Errorf("got wrong result: expected: %v, actual: %v ", tt.result, domain)
}
})
}
}