socks_test.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package socks
  2. import (
  3. "bytes"
  4. "testing"
  5. "github.com/v2ray/v2ray-core/testing/unit"
  6. )
  7. func TestAuthenticationRequestRead(t *testing.T) {
  8. assert := unit.Assert(t)
  9. rawRequest := []byte{
  10. 0x05, // version
  11. 0x01, // nMethods
  12. 0x02, // methods
  13. }
  14. request, err := ReadAuthentication(bytes.NewReader(rawRequest))
  15. assert.Error(err).IsNil()
  16. assert.Byte(request.version).Named("Version").Equals(0x05)
  17. assert.Byte(request.nMethods).Named("#Methods").Equals(0x01)
  18. assert.Byte(request.authMethods[0]).Named("Auth Method").Equals(0x02)
  19. }
  20. func TestRequestRead(t *testing.T) {
  21. assert := unit.Assert(t)
  22. rawRequest := []byte{
  23. 0x05, // version
  24. 0x01, // cmd connect
  25. 0x00, // reserved
  26. 0x01, // ipv4 type
  27. 0x72, 0x72, 0x72, 0x72, // 114.114.114.114
  28. 0x00, 0x35, // port 53
  29. }
  30. request, err := ReadRequest(bytes.NewReader(rawRequest))
  31. assert.Error(err).IsNil()
  32. assert.Byte(request.Version).Named("Version").Equals(0x05)
  33. assert.Byte(request.Command).Named("Command").Equals(0x01)
  34. assert.Byte(request.AddrType).Named("Address Type").Equals(0x01)
  35. assert.Bytes(request.IPv4[:]).Named("IPv4").Equals([]byte{0x72, 0x72, 0x72, 0x72})
  36. assert.Uint16(request.Port).Named("Port").Equals(53)
  37. }
  38. func TestResponseToBytes(t *testing.T) {
  39. assert := unit.Assert(t)
  40. response := Socks5Response{
  41. socksVersion,
  42. ErrorSuccess,
  43. AddrTypeIPv4,
  44. [4]byte{0x72, 0x72, 0x72, 0x72},
  45. "",
  46. [16]byte{},
  47. uint16(53),
  48. }
  49. rawResponse := response.toBytes()
  50. expectedBytes := []byte{
  51. socksVersion,
  52. ErrorSuccess,
  53. byte(0x00),
  54. AddrTypeIPv4,
  55. 0x72, 0x72, 0x72, 0x72,
  56. byte(0x00), byte(0x035),
  57. }
  58. assert.Bytes(rawResponse).Named("raw response").Equals(expectedBytes)
  59. }