diff --git a/proxy/socks/protocol/udp_test.go b/proxy/socks/protocol/udp_test.go new file mode 100644 index 00000000..4e4afde7 --- /dev/null +++ b/proxy/socks/protocol/udp_test.go @@ -0,0 +1,35 @@ +package protocol + +import ( + "testing" + + "github.com/v2ray/v2ray-core/testing/unit" + "github.com/v2ray/v2ray-core/transport" +) + +func TestSingleByteRequest(t *testing.T) { + assert := unit.Assert(t) + + request, err := ReadUDPRequest(make([]byte, 1)) + if request != nil { + t.Fail() + } + assert.Error(err).Equals(transport.CorruptedPacket) +} + +func TestDomainAddressRequest(t *testing.T) { + assert := unit.Assert(t) + + payload := make([]byte, 0, 1024) + payload = append(payload, 0, 0, 1, AddrTypeDomain, byte(len("v2ray.com"))) + payload = append(payload, []byte("v2ray.com")...) + payload = append(payload, 0, 80) + payload = append(payload, []byte("Actual payload")...) + + request, err := ReadUDPRequest(payload) + assert.Error(err).IsNil() + + assert.Byte(request.Fragment).Equals(1) + assert.String(request.Address.String()).Equals("v2ray.com:80") + assert.Bytes(request.Data.Value).Equals([]byte("Actual payload")) +}