encoding_test.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package raw_test
  2. import (
  3. "testing"
  4. "github.com/v2ray/v2ray-core/common/alloc"
  5. v2net "github.com/v2ray/v2ray-core/common/net"
  6. "github.com/v2ray/v2ray-core/common/protocol"
  7. . "github.com/v2ray/v2ray-core/common/protocol/raw"
  8. "github.com/v2ray/v2ray-core/common/uuid"
  9. "github.com/v2ray/v2ray-core/testing/assert"
  10. )
  11. func TestRequestSerialization(t *testing.T) {
  12. assert := assert.On(t)
  13. user := protocol.NewUser(
  14. protocol.NewID(uuid.New()),
  15. nil,
  16. protocol.UserLevelUntrusted,
  17. "test@v2ray.com")
  18. expectedRequest := &protocol.RequestHeader{
  19. Version: 1,
  20. User: user,
  21. Command: protocol.RequestCommandTCP,
  22. Option: protocol.RequestOption(0),
  23. Address: v2net.DomainAddress("www.v2ray.com"),
  24. Port: v2net.Port(443),
  25. }
  26. buffer := alloc.NewBuffer().Clear()
  27. client := NewClientSession(protocol.DefaultIDHash)
  28. client.EncodeRequestHeader(expectedRequest, buffer)
  29. userValidator := protocol.NewTimedUserValidator(protocol.DefaultIDHash)
  30. userValidator.Add(user)
  31. server := NewServerSession(userValidator)
  32. actualRequest, err := server.DecodeRequestHeader(buffer)
  33. assert.Error(err).IsNil()
  34. assert.Byte(expectedRequest.Version).Equals(actualRequest.Version)
  35. assert.Byte(byte(expectedRequest.Command)).Equals(byte(actualRequest.Command))
  36. assert.Byte(byte(expectedRequest.Option)).Equals(byte(actualRequest.Option))
  37. assert.Address(expectedRequest.Address).Equals(actualRequest.Address)
  38. assert.Port(expectedRequest.Port).Equals(actualRequest.Port)
  39. }