internal/webhook/webhook_test.go
34 lines · 966 bytes
1package webhook
2
3import (
4 "net"
5 "strings"
6 "testing"
7)
8
9func TestCheckAddrs(t *testing.T) {
10 public := []net.IP{net.ParseIP("203.0.113.5")}
11 mixed := []net.IP{net.ParseIP("203.0.113.5"), net.ParseIP("10.1.2.3")}
12 if err := CheckAddrs("git.example", public, false); err != nil {
13 t.Fatalf("public: %v", err)
14 }
15 if err := CheckAddrs("git.example", mixed, false); err == nil || !strings.Contains(err.Error(), "10.1.2.3") {
16 t.Fatalf("mixed: %v", err)
17 }
18 if err := CheckAddrs("git.example", mixed, true); err != nil {
19 t.Fatalf("allow_local: %v", err)
20 }
21}
22
23func TestIsForbiddenCGNATAndMulticast(t *testing.T) {
24 for _, s := range []string{"100.64.0.1", "100.127.255.254", "224.0.0.251", "239.1.2.3", "ff02::1", "ff0e::1"} {
25 if !isForbidden(net.ParseIP(s)) {
26 t.Errorf("%s allowed", s)
27 }
28 }
29 for _, s := range []string{"100.63.255.255", "100.128.0.1", "203.0.113.5", "2001:db8::1"} {
30 if isForbidden(net.ParseIP(s)) {
31 t.Errorf("%s refused", s)
32 }
33 }
34}