test(handler): add unit tests for SOCKS5 networkAddr helper

Add 8-case table-driven test covering nil addr, IPv4/IPv6/domain/unknown
addr types for both tcp and udp networks.

Ref: 03f4b12 (fix(handler): use addr-family-specific network for SOCKS5 BIND)
This commit is contained in:
ginuerzh
2026-06-22 19:21:09 +08:00
parent 03f4b1291e
commit 6a0ce8914e
+68
View File
@@ -0,0 +1,68 @@
package v5
import (
"testing"
"github.com/go-gost/gosocks5"
)
func TestNetworkAddr(t *testing.T) {
tests := []struct {
name string
network string
addr *gosocks5.Addr
want string
}{
{
name: "nil addr returns unmodified",
network: "tcp",
addr: nil,
want: "tcp",
},
{
name: "IPv4 tcp returns tcp4",
network: "tcp",
addr: &gosocks5.Addr{Type: gosocks5.AddrIPv4},
want: "tcp4",
},
{
name: "IPv6 tcp returns tcp6",
network: "tcp",
addr: &gosocks5.Addr{Type: gosocks5.AddrIPv6},
want: "tcp6",
},
{
name: "IPv4 udp returns udp4",
network: "udp",
addr: &gosocks5.Addr{Type: gosocks5.AddrIPv4},
want: "udp4",
},
{
name: "IPv6 udp returns udp6",
network: "udp",
addr: &gosocks5.Addr{Type: gosocks5.AddrIPv6},
want: "udp6",
},
{
name: "domain addr returns unmodified",
network: "tcp",
addr: &gosocks5.Addr{Type: gosocks5.AddrDomain},
want: "tcp",
},
{
name: "unknown addr type returns unmodified",
network: "udp",
addr: &gosocks5.Addr{Type: 99},
want: "udp",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := networkAddr(tt.network, tt.addr)
if got != tt.want {
t.Errorf("networkAddr(%q, %v) = %q, want %q", tt.network, tt.addr, got, tt.want)
}
})
}
}