From 6a0ce8914e1560c3fa9370cb8c158c7eab54d7f9 Mon Sep 17 00:00:00 2001 From: ginuerzh Date: Mon, 22 Jun 2026 19:21:09 +0800 Subject: [PATCH] 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) --- handler/socks/v5/network_test.go | 68 ++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 handler/socks/v5/network_test.go diff --git a/handler/socks/v5/network_test.go b/handler/socks/v5/network_test.go new file mode 100644 index 00000000..91139970 --- /dev/null +++ b/handler/socks/v5/network_test.go @@ -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) + } + }) + } +}