|  | @@ -0,0 +1,87 @@
 | 
	
		
			
				|  |  | +package conf_test
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import (
 | 
	
		
			
				|  |  | +	"encoding/json"
 | 
	
		
			
				|  |  | +	"testing"
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	"v2ray.com/core/common/net"
 | 
	
		
			
				|  |  | +	"v2ray.com/core/common/protocol"
 | 
	
		
			
				|  |  | +	"v2ray.com/core/proxy/socks"
 | 
	
		
			
				|  |  | +	"v2ray.com/core/testing/assert"
 | 
	
		
			
				|  |  | +	. "v2ray.com/core/tools/conf"
 | 
	
		
			
				|  |  | +)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +func TestSocksInboundConfig(t *testing.T) {
 | 
	
		
			
				|  |  | +	assert := assert.On(t)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	rawJson := `{
 | 
	
		
			
				|  |  | +    "auth": "password",
 | 
	
		
			
				|  |  | +    "accounts": [
 | 
	
		
			
				|  |  | +      {
 | 
	
		
			
				|  |  | +        "user": "my-username",
 | 
	
		
			
				|  |  | +        "pass": "my-password"
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    ],
 | 
	
		
			
				|  |  | +    "udp": false,
 | 
	
		
			
				|  |  | +    "ip": "127.0.0.1",
 | 
	
		
			
				|  |  | +    "timeout": 5
 | 
	
		
			
				|  |  | +  }`
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	config := new(SocksServerConfig)
 | 
	
		
			
				|  |  | +	err := json.Unmarshal([]byte(rawJson), &config)
 | 
	
		
			
				|  |  | +	assert.Error(err).IsNil()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	message, err := config.Build()
 | 
	
		
			
				|  |  | +	assert.Error(err).IsNil()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	iConfig, err := message.GetInstance()
 | 
	
		
			
				|  |  | +	assert.Error(err).IsNil()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	socksConfig := iConfig.(*socks.ServerConfig)
 | 
	
		
			
				|  |  | +	assert.Bool(socksConfig.AuthType == socks.AuthType_PASSWORD).IsTrue()
 | 
	
		
			
				|  |  | +	assert.Int(len(socksConfig.Accounts)).Equals(1)
 | 
	
		
			
				|  |  | +	assert.String(socksConfig.Accounts["my-username"]).Equals("my-password")
 | 
	
		
			
				|  |  | +	assert.Bool(socksConfig.UdpEnabled).IsFalse()
 | 
	
		
			
				|  |  | +	assert.Address(socksConfig.Address.AsAddress()).Equals(net.LocalHostIP)
 | 
	
		
			
				|  |  | +	assert.Uint32(socksConfig.Timeout).Equals(5)
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +func TestSocksOutboundConfig(t *testing.T) {
 | 
	
		
			
				|  |  | +	assert := assert.On(t)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	rawJson := `{
 | 
	
		
			
				|  |  | +    "servers": [{
 | 
	
		
			
				|  |  | +      "address": "127.0.0.1",
 | 
	
		
			
				|  |  | +      "port": 1234,
 | 
	
		
			
				|  |  | +      "users": [
 | 
	
		
			
				|  |  | +        {"user": "test user", "pass": "test pass", "email": "test@email.com"}
 | 
	
		
			
				|  |  | +      ]
 | 
	
		
			
				|  |  | +    }]
 | 
	
		
			
				|  |  | +  }`
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	config := new(SocksClientConfig)
 | 
	
		
			
				|  |  | +	err := json.Unmarshal([]byte(rawJson), &config)
 | 
	
		
			
				|  |  | +	assert.Error(err).IsNil()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	message, err := config.Build()
 | 
	
		
			
				|  |  | +	assert.Error(err).IsNil()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	iConfig, err := message.GetInstance()
 | 
	
		
			
				|  |  | +	assert.Error(err).IsNil()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	socksConfig := iConfig.(*socks.ClientConfig)
 | 
	
		
			
				|  |  | +	assert.Int(len(socksConfig.Server)).Equals(1)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	ss := protocol.NewServerSpecFromPB(*socksConfig.Server[0])
 | 
	
		
			
				|  |  | +	assert.Destination(ss.Destination()).EqualsString("tcp:127.0.0.1:1234")
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	user := ss.PickUser()
 | 
	
		
			
				|  |  | +	assert.String(user.Email).Equals("test@email.com")
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	account, err := user.GetTypedAccount()
 | 
	
		
			
				|  |  | +	assert.Error(err).IsNil()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	socksAccount := account.(*socks.Account)
 | 
	
		
			
				|  |  | +	assert.String(socksAccount.Username).Equals("test user")
 | 
	
		
			
				|  |  | +	assert.String(socksAccount.Password).Equals("test pass")
 | 
	
		
			
				|  |  | +}
 |