mirror of
https://github.com/xjasonlyu/tun2socks.git
synced 2024-12-30 02:37:01 +00:00
85 lines
1.2 KiB
Go
85 lines
1.2 KiB
Go
package socks4
|
|
|
|
import (
|
|
"net/netip"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestIsReservedIP(t *testing.T) {
|
|
reservedIPs := []string{
|
|
"0.0.0.1",
|
|
"0.0.0.2",
|
|
"0.0.0.50",
|
|
"0.0.0.100",
|
|
"0.0.0.255",
|
|
}
|
|
for _, ip := range reservedIPs {
|
|
assert.True(t, isReservedIP(netip.MustParseAddr(ip)))
|
|
}
|
|
|
|
unReservedIPs := []string{
|
|
"0.0.0.0",
|
|
"0.0.1.0",
|
|
"1.1.1.1",
|
|
"10.0.0.0",
|
|
"255.255.255.255",
|
|
}
|
|
for _, ip := range unReservedIPs {
|
|
assert.False(t, isReservedIP(netip.MustParseAddr(ip)))
|
|
}
|
|
}
|
|
|
|
func TestSplitHostPort(t *testing.T) {
|
|
tests := []struct {
|
|
addr string
|
|
host string
|
|
port uint16
|
|
}{
|
|
{
|
|
"1.1.1.1:80",
|
|
"1.1.1.1",
|
|
80,
|
|
},
|
|
{
|
|
"1.1.1.1:0",
|
|
"1.1.1.1",
|
|
0,
|
|
},
|
|
{
|
|
"0.0.0.0:0",
|
|
"0.0.0.0",
|
|
0,
|
|
},
|
|
{
|
|
"[::1]:443",
|
|
"::1",
|
|
443,
|
|
},
|
|
{
|
|
"example.com:80",
|
|
"example.com",
|
|
80,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
host, port, err := splitHostPort(tt.addr)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, tt.host, host)
|
|
assert.Equal(t, tt.port, port)
|
|
}
|
|
|
|
addrs := []string{
|
|
"1.1.1.1:-80",
|
|
"1.1.1.1:abcd",
|
|
"::1:80",
|
|
"[::1]",
|
|
"example.com",
|
|
}
|
|
for _, addr := range addrs {
|
|
_, _, err := splitHostPort(addr)
|
|
assert.Error(t, err)
|
|
}
|
|
}
|