socks4_test.go 1000 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package protocol
  2. import (
  3. "bytes"
  4. "testing"
  5. "v2ray.com/core/common/buf"
  6. v2net "v2ray.com/core/common/net"
  7. "v2ray.com/core/testing/assert"
  8. )
  9. func TestSocks4AuthenticationRequestRead(t *testing.T) {
  10. assert := assert.On(t)
  11. rawRequest := []byte{
  12. 0x04, // version
  13. 0x01, // command
  14. 0x00, 0x35,
  15. 0x72, 0x72, 0x72, 0x72,
  16. }
  17. _, request4, err := ReadAuthentication(bytes.NewReader(rawRequest))
  18. assert.Error(err).Equals(Socks4Downgrade)
  19. assert.Byte(request4.Version).Equals(0x04)
  20. assert.Byte(request4.Command).Equals(0x01)
  21. assert.Port(request4.Port).Equals(v2net.Port(53))
  22. assert.Bytes(request4.IP[:]).Equals([]byte{0x72, 0x72, 0x72, 0x72})
  23. }
  24. func TestSocks4AuthenticationResponseToBytes(t *testing.T) {
  25. assert := assert.On(t)
  26. response := NewSocks4AuthenticationResponse(byte(0x10), 443, []byte{1, 2, 3, 4})
  27. buffer := buf.NewLocal(2048)
  28. defer buffer.Release()
  29. response.Write(buffer)
  30. assert.Bytes(buffer.Bytes()).Equals([]byte{0x00, 0x10, 0x01, 0xBB, 0x01, 0x02, 0x03, 0x04})
  31. }