package handlers import "testing" func Test_secureAddr(t *testing.T) { type args struct { str string } tests := []struct { name string args args wantErr bool }{ // 有效的公网 IP 地址 { name: "有效公网IPv4地址", args: args{str: "203.0.113.1"}, wantErr: false, }, { name: "有效公网IPv6地址", args: args{str: "2001:db8::1"}, wantErr: false, }, // 私有地址 { name: "IPv4私有地址(10.x.x.x)", args: args{str: "10.0.0.1"}, wantErr: false, // 取决于需求,通常私有地址是被允许的全局单播地址 }, { name: "IPv4私有地址(172.16.x.x)", args: args{str: "172.16.0.1"}, wantErr: false, }, { name: "IPv4私有地址(192.168.x.x)", args: args{str: "192.168.0.1"}, wantErr: false, }, { name: "IPv6私有地址(ULA)", args: args{str: "fd00::1"}, wantErr: false, }, // 广播地址 { name: "IPv4本地广播地址", args: args{str: "255.255.255.255"}, wantErr: true, }, // 未指定地址 { name: "IPv4未指定地址", args: args{str: "0.0.0.0"}, wantErr: true, }, { name: "IPv6未指定地址", args: args{str: "::"}, wantErr: true, }, // 回环地址 { name: "IPv4回环地址", args: args{str: "127.0.0.1"}, wantErr: true, }, { name: "IPv6回环地址", args: args{str: "::1"}, wantErr: true, }, // 组播地址 { name: "IPv4组播地址", args: args{str: "224.0.0.1"}, wantErr: true, }, { name: "IPv6组播地址", args: args{str: "ff00::1"}, wantErr: true, }, // 链路本地地址 { name: "IPv4链路本地地址", args: args{str: "169.254.0.1"}, wantErr: true, }, { name: "IPv6链路本地地址", args: args{str: "fe80::1"}, wantErr: true, }, // 格式错误的地址 { name: "格式错误的IP地址", args: args{str: "not-an-ip"}, wantErr: true, }, { name: "不完整的IP地址", args: args{str: "192.168.0"}, wantErr: true, }, { name: "超出范围的IP地址", args: args{str: "256.256.256.256"}, wantErr: true, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if err := secureAddr(tt.args.str); (err != nil) != tt.wantErr { t.Errorf("secureAddr() error = %v, wantErr %v", err, tt.wantErr) } }) } }