package hostess_test import ( "net" "testing" "github.com/cbednarski/hostess" ) func TestHostname(t *testing.T) { h := hostess.MustHostname(domain, ip, enabled) if h.Domain != domain { t.Errorf("Domain should be %s", domain) } if !h.IP.Equal(net.ParseIP(ip)) { t.Errorf("IP should be %s", ip) } if h.Enabled != enabled { t.Errorf("Enabled should be %t", enabled) } } func TestEqual(t *testing.T) { a := hostess.MustHostname("localhost", "127.0.0.1", true) b := hostess.MustHostname("localhost", "127.0.0.1", false) c := hostess.MustHostname("localhost", "127.0.1.1", false) if !a.Equal(b) { t.Errorf("%+v and %+v should be equal", a, b) } if a.Equal(c) { t.Errorf("%+v and %+v should not be equal", a, c) } } func TestEqualIP(t *testing.T) { a := hostess.MustHostname("localhost", "127.0.0.1", true) c := hostess.MustHostname("localhost", "127.0.1.1", false) ip := net.ParseIP("127.0.0.1") if !a.EqualIP(ip) { t.Errorf("%s and %s should be equal", a.IP, ip) } if a.EqualIP(c.IP) { t.Errorf("%s and %s should not be equal", a.IP, c.IP) } } func TestIsValid(t *testing.T) { hostname := &hostess.Hostname{ Domain: "localhost", IP: net.ParseIP("127.0.0.1"), Enabled: true, IPv6: true, } if !hostname.IsValid() { t.Fatalf("%+v should be a valid hostname", hostname) } } func TestIsValidBlank(t *testing.T) { hostname := &hostess.Hostname{ Domain: "", IP: net.ParseIP("127.0.0.1"), Enabled: true, IPv6: true, } if hostname.IsValid() { t.Errorf("%+v should be invalid because the name is blank", hostname) } } func TestIsValidBadIP(t *testing.T) { hostname := &hostess.Hostname{ Domain: "localhost", IP: net.ParseIP("localhost"), Enabled: true, IPv6: true, } if hostname.IsValid() { t.Errorf("%+v should be invalid because the ip is malformed", hostname) } } func TestFormatHostname(t *testing.T) { hostname := hostess.MustHostname(domain, ip, enabled) const exp_enabled = "127.0.0.1 localhost" if hostname.Format() != exp_enabled { t.Errorf("Hostname format doesn't match desired output: %s", Diff(hostname.Format(), exp_enabled)) } hostname.Enabled = false const exp_disabled = "# 127.0.0.1 localhost" if hostname.Format() != exp_disabled { t.Errorf("Hostname format doesn't match desired output: %s", Diff(hostname.Format(), exp_disabled)) } } func TestFormatEnabled(t *testing.T) { hostname := hostess.MustHostname(domain, ip, enabled) const expectedOn = "(On)" if hostname.FormatEnabled() != expectedOn { t.Errorf("Expected hostname to be turned %s", expectedOn) } const expectedHumanOn = "localhost -> 127.0.0.1 (On)" if hostname.FormatHuman() != expectedHumanOn { t.Errorf("Unexpected output%s", Diff(expectedHumanOn, hostname.FormatHuman())) } hostname.Enabled = false if hostname.FormatEnabled() != "(Off)" { t.Error("Expected hostname to be turned (Off)") } }