opentofu/svchost/svchost_test.go
Outsider a2cb579d1b
svchost: test for hostname started with numeric
Signed-off-by: Outsider <outsideris@gmail.com>
2018-10-25 09:02:28 -07:00

219 lines
3.6 KiB
Go

package svchost
import "testing"
func TestForDisplay(t *testing.T) {
tests := []struct {
Input string
Want string
}{
{
"",
"",
},
{
"example.com",
"example.com",
},
{
"invalid",
"invalid",
},
{
"localhost",
"localhost",
},
{
"localhost:1211",
"localhost:1211",
},
{
"HashiCorp.com",
"hashicorp.com",
},
{
"Испытание.com",
"испытание.com",
},
{
"münchen.de", // this is a precomposed u with diaeresis
"münchen.de", // this is a precomposed u with diaeresis
},
{
"münchen.de", // this is a separate u and combining diaeresis
"münchen.de", // this is a precomposed u with diaeresis
},
{
"example.com:443",
"example.com",
},
{
"example.com:81",
"example.com:81",
},
{
"example.com:boo",
"example.com:boo", // invalid, but tolerated for display purposes
},
{
"example.com:boo:boo",
"example.com:boo:boo", // invalid, but tolerated for display purposes
},
{
"example.com:081",
"example.com:81",
},
}
for _, test := range tests {
t.Run(test.Input, func(t *testing.T) {
got := ForDisplay(test.Input)
if got != test.Want {
t.Errorf("wrong result\ninput: %s\ngot: %s\nwant: %s", test.Input, got, test.Want)
}
})
}
}
func TestForComparison(t *testing.T) {
tests := []struct {
Input string
Want string
Err bool
}{
{
"",
"",
true,
},
{
"example.com",
"example.com",
false,
},
{
"example.com:443",
"example.com",
false,
},
{
"example.com:81",
"example.com:81",
false,
},
{
"example.com:081",
"example.com:81",
false,
},
{
"invalid",
"invalid",
false, // the "invalid" TLD is, confusingly, a valid hostname syntactically
},
{
"localhost", // supported for local testing only
"localhost",
false,
},
{
"localhost:1211", // supported for local testing only
"localhost:1211",
false,
},
{
"HashiCorp.com",
"hashicorp.com",
false,
},
{
"1example.com",
"1example.com",
false,
},
{
"Испытание.com",
"xn--80akhbyknj4f.com",
false,
},
{
"münchen.de", // this is a precomposed u with diaeresis
"xn--mnchen-3ya.de",
false,
},
{
"münchen.de", // this is a separate u and combining diaeresis
"xn--mnchen-3ya.de",
false,
},
{
"blah..blah",
"",
true,
},
{
"example.com:boo",
"",
true,
},
{
"example.com:80:boo",
"",
true,
},
}
for _, test := range tests {
t.Run(test.Input, func(t *testing.T) {
got, err := ForComparison(test.Input)
if (err != nil) != test.Err {
if test.Err {
t.Error("unexpected success; want error")
} else {
t.Errorf("unexpected error; want success\nerror: %s", err)
}
}
if string(got) != test.Want {
t.Errorf("wrong result\ninput: %s\ngot: %s\nwant: %s", test.Input, got, test.Want)
}
})
}
}
func TestHostnameForDisplay(t *testing.T) {
tests := []struct {
Input string
Want string
}{
{
"example.com",
"example.com",
},
{
"example.com:81",
"example.com:81",
},
{
"xn--80akhbyknj4f.com",
"испытание.com",
},
{
"xn--80akhbyknj4f.com:8080",
"испытание.com:8080",
},
{
"xn--mnchen-3ya.de",
"münchen.de", // this is a precomposed u with diaeresis
},
}
for _, test := range tests {
t.Run(test.Input, func(t *testing.T) {
got := Hostname(test.Input).ForDisplay()
if got != test.Want {
t.Errorf("wrong result\ninput: %s\ngot: %s\nwant: %s", test.Input, got, test.Want)
}
})
}
}