dnsname,tailcfg: add hostname sanitation logic to node display names (#1304)
Signed-off-by: Sonia Appasamy <sonia@tailscale.com>
This commit is contained in:
@@ -4,7 +4,60 @@
|
||||
|
||||
package dnsname
|
||||
|
||||
import "testing"
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestSanitizeLabel(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
in string
|
||||
want string
|
||||
}{
|
||||
{"empty", "", ""},
|
||||
{"space", " ", ""},
|
||||
{"upper", "OBERON", "oberon"},
|
||||
{"mixed", "Avery's iPhone 4(SE)", "averys-iphone-4se"},
|
||||
{"dotted", "mon.ipn.dev", "mon-ipn-dev"},
|
||||
{"email", "admin@example.com", "admin-example-com"},
|
||||
{"boudary", ".bound.ary.", "bound-ary"},
|
||||
{"bad_trailing", "a-", "a"},
|
||||
{"bad_leading", "-a", "a"},
|
||||
{"bad_both", "-a-", "a"},
|
||||
{
|
||||
"overlong",
|
||||
strings.Repeat("test.", 20),
|
||||
"test-test-test-test-test-test-test-test-test-test-test-test-tes",
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got := SanitizeLabel(tt.in)
|
||||
if got != tt.want {
|
||||
t.Errorf("want %q; got %q", tt.want, got)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestTrimCommonSuffixes(t *testing.T) {
|
||||
tests := []struct {
|
||||
hostname string
|
||||
want string
|
||||
}{
|
||||
{"computer.local", "computer"},
|
||||
{"computer.localdomain", "computer"},
|
||||
{"computer.lan", "computer"},
|
||||
{"computer.mynetwork", "computer.mynetwork"},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
got := TrimCommonSuffixes(tt.hostname)
|
||||
if got != tt.want {
|
||||
t.Errorf("TrimCommonSuffixes(%q) = %q; want %q", tt.hostname, got, tt.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestHasSuffix(t *testing.T) {
|
||||
tests := []struct {
|
||||
@@ -14,6 +67,7 @@ func TestHasSuffix(t *testing.T) {
|
||||
{"foo.com", "com", true},
|
||||
{"foo.com.", "com", true},
|
||||
{"foo.com.", "com.", true},
|
||||
{"foo.com", ".com", true},
|
||||
|
||||
{"", "", false},
|
||||
{"foo.com.", "", false},
|
||||
@@ -26,3 +80,25 @@ func TestHasSuffix(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestTrimSuffix(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
suffix string
|
||||
want string
|
||||
}{
|
||||
{"foo.magicdnssuffix.", "magicdnssuffix", "foo"},
|
||||
{"foo.magicdnssuffix", "magicdnssuffix", "foo"},
|
||||
{"foo.magicdnssuffix", ".magicdnssuffix", "foo"},
|
||||
{"foo.anothersuffix", "magicdnssuffix", "foo.anothersuffix"},
|
||||
{"foo.anothersuffix.", "magicdnssuffix", "foo.anothersuffix"},
|
||||
{"a.b.c.d", "c.d", "a.b"},
|
||||
{"name.", "foo", "name"},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
got := TrimSuffix(tt.name, tt.suffix)
|
||||
if got != tt.want {
|
||||
t.Errorf("TrimSuffix(%q, %q) = %q; want %q", tt.name, tt.suffix, got, tt.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user