1package conf_test 2 3import ( 4 "testing" 5 6 "github.com/xtls/xray-core/common/net" 7 "github.com/xtls/xray-core/common/protocol" 8 "github.com/xtls/xray-core/common/serial" 9 . "github.com/xtls/xray-core/infra/conf" 10 "github.com/xtls/xray-core/proxy/socks" 11) 12 13func TestSocksInboundConfig(t *testing.T) { 14 creator := func() Buildable { 15 return new(SocksServerConfig) 16 } 17 18 runMultiTestCase(t, []TestCase{ 19 { 20 Input: `{ 21 "auth": "password", 22 "accounts": [ 23 { 24 "user": "my-username", 25 "pass": "my-password" 26 } 27 ], 28 "udp": false, 29 "ip": "127.0.0.1", 30 "timeout": 5, 31 "userLevel": 1 32 }`, 33 Parser: loadJSON(creator), 34 Output: &socks.ServerConfig{ 35 AuthType: socks.AuthType_PASSWORD, 36 Accounts: map[string]string{ 37 "my-username": "my-password", 38 }, 39 UdpEnabled: false, 40 Address: &net.IPOrDomain{ 41 Address: &net.IPOrDomain_Ip{ 42 Ip: []byte{127, 0, 0, 1}, 43 }, 44 }, 45 Timeout: 5, 46 UserLevel: 1, 47 }, 48 }, 49 }) 50} 51 52func TestSocksOutboundConfig(t *testing.T) { 53 creator := func() Buildable { 54 return new(SocksClientConfig) 55 } 56 57 runMultiTestCase(t, []TestCase{ 58 { 59 Input: `{ 60 "servers": [{ 61 "address": "127.0.0.1", 62 "port": 1234, 63 "users": [ 64 {"user": "test user", "pass": "test pass", "email": "test@email.com"} 65 ] 66 }] 67 }`, 68 Parser: loadJSON(creator), 69 Output: &socks.ClientConfig{ 70 Server: []*protocol.ServerEndpoint{ 71 { 72 Address: &net.IPOrDomain{ 73 Address: &net.IPOrDomain_Ip{ 74 Ip: []byte{127, 0, 0, 1}, 75 }, 76 }, 77 Port: 1234, 78 User: []*protocol.User{ 79 { 80 Email: "test@email.com", 81 Account: serial.ToTypedMessage(&socks.Account{ 82 Username: "test user", 83 Password: "test pass", 84 }), 85 }, 86 }, 87 }, 88 }, 89 }, 90 }, 91 }) 92} 93