port_json_test.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. // +build json
  2. package net_test
  3. import (
  4. "encoding/json"
  5. "testing"
  6. . "github.com/v2ray/v2ray-core/common/net"
  7. "github.com/v2ray/v2ray-core/testing/assert"
  8. )
  9. func TestIntPort(t *testing.T) {
  10. assert := assert.On(t)
  11. var portRange PortRange
  12. err := json.Unmarshal([]byte("1234"), &portRange)
  13. assert.Error(err).IsNil()
  14. assert.Uint16(portRange.From.Value()).Equals(uint16(1234))
  15. assert.Uint16(portRange.To.Value()).Equals(uint16(1234))
  16. }
  17. func TestOverRangeIntPort(t *testing.T) {
  18. assert := assert.On(t)
  19. var portRange PortRange
  20. err := json.Unmarshal([]byte("70000"), &portRange)
  21. assert.Error(err).Equals(ErrInvalidPortRange)
  22. err = json.Unmarshal([]byte("-1"), &portRange)
  23. assert.Error(err).Equals(ErrInvalidPortRange)
  24. }
  25. func TestSingleStringPort(t *testing.T) {
  26. assert := assert.On(t)
  27. var portRange PortRange
  28. err := json.Unmarshal([]byte("\"1234\""), &portRange)
  29. assert.Error(err).IsNil()
  30. assert.Uint16(portRange.From.Value()).Equals(uint16(1234))
  31. assert.Uint16(portRange.To.Value()).Equals(uint16(1234))
  32. }
  33. func TestStringPairPort(t *testing.T) {
  34. assert := assert.On(t)
  35. var portRange PortRange
  36. err := json.Unmarshal([]byte("\"1234-5678\""), &portRange)
  37. assert.Error(err).IsNil()
  38. assert.Uint16(portRange.From.Value()).Equals(uint16(1234))
  39. assert.Uint16(portRange.To.Value()).Equals(uint16(5678))
  40. }
  41. func TestOverRangeStringPort(t *testing.T) {
  42. assert := assert.On(t)
  43. var portRange PortRange
  44. err := json.Unmarshal([]byte("\"65536\""), &portRange)
  45. assert.Error(err).Equals(ErrInvalidPortRange)
  46. err = json.Unmarshal([]byte("\"70000-80000\""), &portRange)
  47. assert.Error(err).Equals(ErrInvalidPortRange)
  48. err = json.Unmarshal([]byte("\"1-90000\""), &portRange)
  49. assert.Error(err).Equals(ErrInvalidPortRange)
  50. err = json.Unmarshal([]byte("\"700-600\""), &portRange)
  51. assert.Error(err).Equals(ErrInvalidPortRange)
  52. }