package edgesfile import "testing" // Census ruling region-ha-2a: a private address passes only when it is a // well-formed private IPv4 address inside the region network's CIDR, and // never loopback or link-local (the metadata range included). func TestPrivateAddress(t *testing.T) { vpc := []string{"10.0.0.0/16"} cases := []struct { name, addr string cidrs []string want, cidr string }{ {"inside the region network", "10.0.1.5", vpc, "10.0.1.5", "10.0.0.0/16"}, {"inside the second block", "172.31.4.9", []string{"10.0.0.0/16", " 172.31.0.0/16 "}, "172.31.4.9", "172.31.0.0/16"}, {"malformed", "10.0.1", vpc, "", ""}, {"a hostname", "box.internal", vpc, "", ""}, {"the metadata range", "169.254.169.254", []string{"169.254.0.0/16"}, "", ""}, {"loopback", "127.0.0.1", []string{"127.0.0.0/8"}, "", ""}, {"outside the region network", "10.1.1.5", vpc, "", ""}, {"a public address", "203.0.113.4", []string{"203.0.113.0/24"}, "", ""}, {"IPv6", "fd00::5", []string{"fd00::/8"}, "", ""}, {"no network to check it against", "10.0.1.5", nil, "", ""}, {"a malformed network", "10.0.1.5", []string{"10.0.0.0/33"}, "", ""}, } for _, c := range cases { t.Run(c.name, func(t *testing.T) { got, cidr := PrivateAddress(c.addr, c.cidrs) if got != c.want || cidr != c.cidr { t.Fatalf("PrivateAddress(%q, %v) = %q, %q; want %q, %q", c.addr, c.cidrs, got, cidr, c.want, c.cidr) } }) } }