mirror of https://github.com/cbeuw/Cloak
Add tests for parsing shadowsocks binding addresses
This commit is contained in:
parent
a86899f007
commit
8b0a7425f8
|
|
@ -1,10 +1,14 @@
|
|||
package main
|
||||
|
||||
import "testing"
|
||||
import (
|
||||
"github.com/stretchr/testify/assert"
|
||||
"net"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestParseBindAddr(t *testing.T) {
|
||||
t.Run("port only", func(t *testing.T) {
|
||||
addrs, err := parseBindAddr([]string{":443"})
|
||||
addrs, err := resolveBindAddr([]string{":443"})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
|
|
@ -15,7 +19,7 @@ func TestParseBindAddr(t *testing.T) {
|
|||
})
|
||||
|
||||
t.Run("specific address", func(t *testing.T) {
|
||||
addrs, err := parseBindAddr([]string{"192.168.1.123:443"})
|
||||
addrs, err := resolveBindAddr([]string{"192.168.1.123:443"})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
|
|
@ -26,7 +30,7 @@ func TestParseBindAddr(t *testing.T) {
|
|||
})
|
||||
|
||||
t.Run("ipv6", func(t *testing.T) {
|
||||
addrs, err := parseBindAddr([]string{"[::]:443"})
|
||||
addrs, err := resolveBindAddr([]string{"[::]:443"})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
|
|
@ -37,7 +41,7 @@ func TestParseBindAddr(t *testing.T) {
|
|||
})
|
||||
|
||||
t.Run("mixed", func(t *testing.T) {
|
||||
addrs, err := parseBindAddr([]string{":80", "[::]:443"})
|
||||
addrs, err := resolveBindAddr([]string{":80", "[::]:443"})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
|
|
@ -50,3 +54,104 @@ func TestParseBindAddr(t *testing.T) {
|
|||
}
|
||||
})
|
||||
}
|
||||
|
||||
func assertSetEqual(t *testing.T, list1, list2 interface{}, msgAndArgs ...interface{}) (ok bool) {
|
||||
return assert.Subset(t, list1, list2, msgAndArgs) && assert.Subset(t, list2, list1, msgAndArgs)
|
||||
}
|
||||
|
||||
func TestParseSSBindAddr(t *testing.T) {
|
||||
testTable := []struct {
|
||||
name string
|
||||
ssRemoteHost string
|
||||
ssRemotePort string
|
||||
ckBindAddr []net.Addr
|
||||
expectedAddr []net.Addr
|
||||
}{
|
||||
{
|
||||
"ss only ipv4",
|
||||
"127.0.0.1",
|
||||
"443",
|
||||
[]net.Addr{},
|
||||
[]net.Addr{
|
||||
&net.TCPAddr{
|
||||
IP: net.ParseIP("127.0.0.1"),
|
||||
Port: 443,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"ss only ipv6",
|
||||
"::",
|
||||
"443",
|
||||
[]net.Addr{},
|
||||
[]net.Addr{
|
||||
&net.TCPAddr{
|
||||
IP: net.ParseIP("::"),
|
||||
Port: 443,
|
||||
},
|
||||
},
|
||||
},
|
||||
//{
|
||||
// "ss only ipv4 and v6",
|
||||
// "::|127.0.0.1",
|
||||
// "443",
|
||||
// []net.Addr{},
|
||||
// []net.Addr{
|
||||
// &net.TCPAddr{
|
||||
// IP: net.ParseIP("::"),
|
||||
// Port: 443,
|
||||
// },
|
||||
// &net.TCPAddr{
|
||||
// IP: net.ParseIP("127.0.0.1"),
|
||||
// Port: 443,
|
||||
// },
|
||||
// },
|
||||
//},
|
||||
{
|
||||
"ss and existing agrees",
|
||||
"::",
|
||||
"443",
|
||||
[]net.Addr{
|
||||
&net.TCPAddr{
|
||||
IP: net.ParseIP("::"),
|
||||
Port: 443,
|
||||
},
|
||||
},
|
||||
[]net.Addr{
|
||||
&net.TCPAddr{
|
||||
IP: net.ParseIP("::"),
|
||||
Port: 443,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"ss adds onto existing",
|
||||
"127.0.0.1",
|
||||
"80",
|
||||
[]net.Addr{
|
||||
&net.TCPAddr{
|
||||
IP: net.ParseIP("::"),
|
||||
Port: 443,
|
||||
},
|
||||
},
|
||||
[]net.Addr{
|
||||
&net.TCPAddr{
|
||||
IP: net.ParseIP("::"),
|
||||
Port: 443,
|
||||
},
|
||||
&net.TCPAddr{
|
||||
IP: net.ParseIP("127.0.0.1"),
|
||||
Port: 80,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range testTable {
|
||||
test := test
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
assert.NoError(t, parseSSBindAddr(test.ssRemoteHost, test.ssRemotePort, &test.ckBindAddr))
|
||||
assertSetEqual(t, test.ckBindAddr, test.expectedAddr)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue