|
@@ -0,0 +1,37 @@
|
|
|
|
|
+package protocol
|
|
|
|
|
+
|
|
|
|
|
+import (
|
|
|
|
|
+ "bytes"
|
|
|
|
|
+ "testing"
|
|
|
|
|
+
|
|
|
|
|
+ "github.com/v2ray/v2ray-core/testing/unit"
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+func TestSocks4AuthenticationRequestRead(t *testing.T) {
|
|
|
|
|
+ assert := unit.Assert(t)
|
|
|
|
|
+
|
|
|
|
|
+ rawRequest := []byte{
|
|
|
|
|
+ 0x04, // version
|
|
|
|
|
+ 0x01, // command
|
|
|
|
|
+ 0x00, 0x35,
|
|
|
|
|
+ 0x72, 0x72, 0x72, 0x72,
|
|
|
|
|
+ }
|
|
|
|
|
+ _, request4, err := ReadAuthentication(bytes.NewReader(rawRequest))
|
|
|
|
|
+ assert.Error(err).HasCode(1000)
|
|
|
|
|
+ assert.Byte(request4.Version).Named("Version").Equals(0x04)
|
|
|
|
|
+ assert.Byte(request4.Command).Named("Command").Equals(0x01)
|
|
|
|
|
+ assert.Uint16(request4.Port).Named("Port").Equals(53)
|
|
|
|
|
+ assert.Bytes(request4.IP[:]).Named("IP").Equals([]byte{0x72, 0x72, 0x72, 0x72})
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func TestSocks4AuthenticationResponseToBytes(t *testing.T) {
|
|
|
|
|
+ assert := unit.Assert(t)
|
|
|
|
|
+
|
|
|
|
|
+ response := &Socks4AuthenticationResponse{
|
|
|
|
|
+ result: byte(0x10),
|
|
|
|
|
+ port: 443,
|
|
|
|
|
+ ip: []byte{1, 2, 3, 4},
|
|
|
|
|
+ }
|
|
|
|
|
+ responseBytes := response.ToBytes(nil)
|
|
|
|
|
+ assert.Bytes(responseBytes).Equals([]byte{0x00, 0x10, 0x01, 0xBB, 0x01, 0x02, 0x03, 0x04})
|
|
|
|
|
+}
|