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:
@@ -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)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user