socks_test.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package conf_test
  2. import (
  3. "encoding/json"
  4. "testing"
  5. "v2ray.com/core/common/net"
  6. "v2ray.com/core/common/protocol"
  7. "v2ray.com/core/proxy/socks"
  8. "v2ray.com/core/testing/assert"
  9. . "v2ray.com/core/tools/conf"
  10. )
  11. func TestSocksInboundConfig(t *testing.T) {
  12. assert := assert.On(t)
  13. rawJson := `{
  14. "auth": "password",
  15. "accounts": [
  16. {
  17. "user": "my-username",
  18. "pass": "my-password"
  19. }
  20. ],
  21. "udp": false,
  22. "ip": "127.0.0.1",
  23. "timeout": 5
  24. }`
  25. config := new(SocksServerConfig)
  26. err := json.Unmarshal([]byte(rawJson), &config)
  27. assert.Error(err).IsNil()
  28. message, err := config.Build()
  29. assert.Error(err).IsNil()
  30. iConfig, err := message.GetInstance()
  31. assert.Error(err).IsNil()
  32. socksConfig := iConfig.(*socks.ServerConfig)
  33. assert.Bool(socksConfig.AuthType == socks.AuthType_PASSWORD).IsTrue()
  34. assert.Int(len(socksConfig.Accounts)).Equals(1)
  35. assert.String(socksConfig.Accounts["my-username"]).Equals("my-password")
  36. assert.Bool(socksConfig.UdpEnabled).IsFalse()
  37. assert.Address(socksConfig.Address.AsAddress()).Equals(net.LocalHostIP)
  38. assert.Uint32(socksConfig.Timeout).Equals(5)
  39. }
  40. func TestSocksOutboundConfig(t *testing.T) {
  41. assert := assert.On(t)
  42. rawJson := `{
  43. "servers": [{
  44. "address": "127.0.0.1",
  45. "port": 1234,
  46. "users": [
  47. {"user": "test user", "pass": "test pass", "email": "test@email.com"}
  48. ]
  49. }]
  50. }`
  51. config := new(SocksClientConfig)
  52. err := json.Unmarshal([]byte(rawJson), &config)
  53. assert.Error(err).IsNil()
  54. message, err := config.Build()
  55. assert.Error(err).IsNil()
  56. iConfig, err := message.GetInstance()
  57. assert.Error(err).IsNil()
  58. socksConfig := iConfig.(*socks.ClientConfig)
  59. assert.Int(len(socksConfig.Server)).Equals(1)
  60. ss := protocol.NewServerSpecFromPB(*socksConfig.Server[0])
  61. assert.Destination(ss.Destination()).EqualsString("tcp:127.0.0.1:1234")
  62. user := ss.PickUser()
  63. assert.String(user.Email).Equals("test@email.com")
  64. account, err := user.GetTypedAccount()
  65. assert.Error(err).IsNil()
  66. socksAccount := account.(*socks.Account)
  67. assert.String(socksAccount.Username).Equals("test user")
  68. assert.String(socksAccount.Password).Equals("test pass")
  69. }