package blacktip import ( "testing" "git.veillax.com/Veillax/reef/model" ) func TestWildcardWebsitesStepAsideForNamedAddresses(t *testing.T) { all := []model.Mapping{ {ID: "a", Proto: model.ProtoHTTPS, BindIP: "0.0.0.0", Port: 443, Hostname: "a.test"}, {ID: "b", Proto: model.ProtoHTTPS, BindIP: "127.0.0.1", Port: 443, Hostname: "b.test"}, {ID: "c", Proto: model.ProtoHTTPS, BindIP: "0.0.0.0", Port: 8443, Hostname: "c.test"}, {ID: "d", Proto: model.ProtoTCP, BindIP: "0.0.0.0", Port: 443}, } // the wildcard on 443 gives up the address that "b" names for _, ip := range bindIPs(all[0], all) { if ip == "127.0.0.1" { t.Fatalf("wildcard still listens on 127.0.0.1: %v", bindIPs(all[0], all)) } } // the named address keeps its own listener if got := bindIPs(all[1], all); len(got) != 1 || got[0] != "127.0.0.1" { t.Fatalf("named mapping: %v", got) } // a different port, or a raw TCP port, is not affected if got := bindIPs(all[2], all); len(got) != 1 || got[0] != "0.0.0.0" { t.Fatalf("other port: %v", got) } if got := bindIPs(all[3], all); len(got) != 1 || got[0] != "0.0.0.0" { t.Fatalf("raw tcp: %v", got) } // with nothing named on that port the wildcard stays a single wildcard listener if got := bindIPs(all[0], all[:1]); len(got) != 1 || got[0] != "0.0.0.0" { t.Fatalf("alone: %v", got) } }