Release 3X-UI for Docker / build (push) Canceled after 0s
Release 3X-UI / build (386) (push) Canceled after 0s
Release 3X-UI / build (amd64) (push) Canceled after 0s
Release 3X-UI / build (arm64) (push) Canceled after 0s
Release 3X-UI / build (armv5) (push) Canceled after 0s
Release 3X-UI / build (armv6) (push) Canceled after 0s
Release 3X-UI / build (armv7) (push) Canceled after 0s
Release 3X-UI / build (s390x) (push) Canceled after 0s
Release 3X-UI / Build for Windows (amd64) (push) Canceled after 0s
Release 3X-UI / Publish rolling dev release (push) Canceled after 0s
37 lines
997 B
Go
37 lines
997 B
Go
package service
|
|
|
|
import (
|
|
"net"
|
|
"testing"
|
|
)
|
|
|
|
func TestRejectAllBlockedIPsNeedsOnlyOneUsableAddress(t *testing.T) {
|
|
teredo := net.IPAddr{IP: net.ParseIP("2001::1")}
|
|
public4 := net.IPAddr{IP: net.ParseIP("142.250.74.36")}
|
|
private4 := net.IPAddr{IP: net.ParseIP("10.0.0.1")}
|
|
|
|
cases := []struct {
|
|
name string
|
|
ips []net.IPAddr
|
|
wantErr string
|
|
}{
|
|
{"poisoned AAAA next to healthy A", []net.IPAddr{teredo, public4}, ""},
|
|
{"all blocked", []net.IPAddr{teredo, private4}, "host h.example resolves to blocked private/internal address 2001::1"},
|
|
{"no addresses", nil, "host h.example has no IP addresses"},
|
|
}
|
|
for _, tc := range cases {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
err := rejectAllBlockedIPs("h.example", tc.ips)
|
|
if tc.wantErr == "" {
|
|
if err != nil {
|
|
t.Fatalf("rejectAllBlockedIPs() = %v, want nil", err)
|
|
}
|
|
return
|
|
}
|
|
if err == nil || err.Error() != tc.wantErr {
|
|
t.Fatalf("rejectAllBlockedIPs() = %v, want %q", err, tc.wantErr)
|
|
}
|
|
})
|
|
}
|
|
}
|