internal/webhook/webhook_test.go

v1.39.0
gitbay/internal/webhook/webhook_test.go history · blame · raw

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}