udp_test.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package protocol
  2. import (
  3. "testing"
  4. v2net "github.com/v2ray/v2ray-core/common/net"
  5. "github.com/v2ray/v2ray-core/proxy/vmess/protocol/user"
  6. "github.com/v2ray/v2ray-core/testing/mocks"
  7. "github.com/v2ray/v2ray-core/testing/unit"
  8. )
  9. func TestVMessUDPReadWrite(t *testing.T) {
  10. assert := unit.Assert(t)
  11. userId, err := user.NewID("2b2966ac-16aa-4fbf-8d81-c5f172a3da51")
  12. assert.Error(err).IsNil()
  13. userSet := mocks.MockUserSet{[]user.ID{}, make(map[string]int), make(map[string]int64)}
  14. userSet.AddUser(user.User{userId})
  15. message := &VMessUDP{
  16. user: userId,
  17. version: byte(0x01),
  18. token: 1234,
  19. address: v2net.DomainAddress("v2ray.com", 8372),
  20. data: []byte("An UDP message."),
  21. }
  22. mockTime := int64(1823730)
  23. buffer := message.ToBytes(user.NewTimeHash(user.HMACHash{}), func(base int64, delta int) int64 { return mockTime }, nil)
  24. userSet.UserHashes[string(buffer[:16])] = 0
  25. userSet.Timestamps[string(buffer[:16])] = mockTime
  26. messageRestored, err := ReadVMessUDP(buffer, &userSet)
  27. assert.Error(err).IsNil()
  28. assert.String(messageRestored.user.String).Equals(message.user.String)
  29. assert.Byte(messageRestored.version).Equals(message.version)
  30. assert.Uint16(messageRestored.token).Equals(message.token)
  31. assert.String(messageRestored.address.String()).Equals(message.address.String())
  32. assert.Bytes(messageRestored.data).Equals(message.data)
  33. }