common_test.go 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. package conf_test
  2. import (
  3. "encoding/json"
  4. "testing"
  5. v2net "v2ray.com/core/common/net"
  6. "v2ray.com/core/testing/assert"
  7. . "v2ray.com/core/tools/conf"
  8. )
  9. func TestStringListUnmarshalError(t *testing.T) {
  10. assert := assert.On(t)
  11. rawJson := `1234`
  12. list := new(StringList)
  13. err := json.Unmarshal([]byte(rawJson), list)
  14. assert.Error(err).IsNotNil()
  15. }
  16. func TestStringListLen(t *testing.T) {
  17. assert := assert.On(t)
  18. rawJson := `"a, b, c, d"`
  19. list := new(StringList)
  20. err := json.Unmarshal([]byte(rawJson), list)
  21. assert.Error(err).IsNil()
  22. assert.Int(list.Len()).Equals(4)
  23. }
  24. func TestIPParsing(t *testing.T) {
  25. assert := assert.On(t)
  26. rawJson := "\"8.8.8.8\""
  27. var address Address
  28. err := json.Unmarshal([]byte(rawJson), &address)
  29. assert.Error(err).IsNil()
  30. assert.Bytes([]byte(address.IP())).Equals([]byte{8, 8, 8, 8})
  31. }
  32. func TestDomainParsing(t *testing.T) {
  33. assert := assert.On(t)
  34. rawJson := "\"v2ray.com\""
  35. var address Address
  36. err := json.Unmarshal([]byte(rawJson), &address)
  37. assert.Error(err).IsNil()
  38. assert.String(address.Domain()).Equals("v2ray.com")
  39. }
  40. func TestInvalidAddressJson(t *testing.T) {
  41. assert := assert.On(t)
  42. rawJson := "1234"
  43. var address Address
  44. err := json.Unmarshal([]byte(rawJson), &address)
  45. assert.Error(err).IsNotNil()
  46. }
  47. func TestStringNetwork(t *testing.T) {
  48. assert := assert.On(t)
  49. var network Network
  50. err := json.Unmarshal([]byte(`"tcp"`), &network)
  51. assert.Error(err).IsNil()
  52. assert.Bool(network.Build() == v2net.Network_TCP).IsTrue()
  53. }
  54. func TestArrayNetworkList(t *testing.T) {
  55. assert := assert.On(t)
  56. var list NetworkList
  57. err := json.Unmarshal([]byte("[\"Tcp\"]"), &list)
  58. assert.Error(err).IsNil()
  59. nlist := list.Build()
  60. assert.Bool(nlist.HasNetwork(v2net.ParseNetwork("tcp"))).IsTrue()
  61. assert.Bool(nlist.HasNetwork(v2net.ParseNetwork("udp"))).IsFalse()
  62. }
  63. func TestStringNetworkList(t *testing.T) {
  64. assert := assert.On(t)
  65. var list NetworkList
  66. err := json.Unmarshal([]byte("\"TCP, ip\""), &list)
  67. assert.Error(err).IsNil()
  68. nlist := list.Build()
  69. assert.Bool(nlist.HasNetwork(v2net.ParseNetwork("tcp"))).IsTrue()
  70. assert.Bool(nlist.HasNetwork(v2net.ParseNetwork("udp"))).IsFalse()
  71. }
  72. func TestInvalidNetworkJson(t *testing.T) {
  73. assert := assert.On(t)
  74. var list NetworkList
  75. err := json.Unmarshal([]byte("0"), &list)
  76. assert.Error(err).IsNotNil()
  77. }
  78. func TestIntPort(t *testing.T) {
  79. assert := assert.On(t)
  80. var portRange PortRange
  81. err := json.Unmarshal([]byte("1234"), &portRange)
  82. assert.Error(err).IsNil()
  83. assert.Uint32(portRange.From).Equals(1234)
  84. assert.Uint32(portRange.To).Equals(1234)
  85. }
  86. func TestOverRangeIntPort(t *testing.T) {
  87. assert := assert.On(t)
  88. var portRange PortRange
  89. err := json.Unmarshal([]byte("70000"), &portRange)
  90. assert.Error(err).IsNotNil()
  91. err = json.Unmarshal([]byte("-1"), &portRange)
  92. assert.Error(err).IsNotNil()
  93. }
  94. func TestSingleStringPort(t *testing.T) {
  95. assert := assert.On(t)
  96. var portRange PortRange
  97. err := json.Unmarshal([]byte("\"1234\""), &portRange)
  98. assert.Error(err).IsNil()
  99. assert.Uint32(portRange.From).Equals(1234)
  100. assert.Uint32(portRange.To).Equals(1234)
  101. }
  102. func TestStringPairPort(t *testing.T) {
  103. assert := assert.On(t)
  104. var portRange PortRange
  105. err := json.Unmarshal([]byte("\"1234-5678\""), &portRange)
  106. assert.Error(err).IsNil()
  107. assert.Uint32(portRange.From).Equals(1234)
  108. assert.Uint32(portRange.To).Equals(5678)
  109. }
  110. func TestOverRangeStringPort(t *testing.T) {
  111. assert := assert.On(t)
  112. var portRange PortRange
  113. err := json.Unmarshal([]byte("\"65536\""), &portRange)
  114. assert.Error(err).IsNotNil()
  115. err = json.Unmarshal([]byte("\"70000-80000\""), &portRange)
  116. assert.Error(err).IsNotNil()
  117. err = json.Unmarshal([]byte("\"1-90000\""), &portRange)
  118. assert.Error(err).IsNotNil()
  119. err = json.Unmarshal([]byte("\"700-600\""), &portRange)
  120. assert.Error(err).IsNotNil()
  121. }
  122. func TestUserParsing(t *testing.T) {
  123. assert := assert.On(t)
  124. user := new(User)
  125. err := json.Unmarshal([]byte(`{
  126. "id": "96edb838-6d68-42ef-a933-25f7ac3a9d09",
  127. "email": "love@v2ray.com",
  128. "level": 1,
  129. "alterId": 100
  130. }`), user)
  131. assert.Error(err).IsNil()
  132. nUser := user.Build()
  133. assert.Byte(byte(nUser.Level)).Equals(1)
  134. assert.String(nUser.Email).Equals("love@v2ray.com")
  135. }
  136. func TestInvalidUserJson(t *testing.T) {
  137. assert := assert.On(t)
  138. user := new(User)
  139. err := json.Unmarshal([]byte(`{"email": 1234}`), user)
  140. assert.Error(err).IsNotNil()
  141. }