socks_test.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package socks
  2. import (
  3. "bytes"
  4. "testing"
  5. )
  6. func TestAuthenticationRequestRead(t *testing.T) {
  7. rawRequest := []byte{
  8. 0x05, // version
  9. 0x01, // nMethods
  10. 0x02, // methods
  11. }
  12. request, err := ReadAuthentication(bytes.NewReader(rawRequest))
  13. if err != nil {
  14. t.Errorf("Unexpected error %v", err)
  15. }
  16. if request.version != 0x05 {
  17. t.Errorf("Expected version 5, but got %d", request.version)
  18. }
  19. if request.nMethods != 0x01 {
  20. t.Errorf("Expected nMethod 1, but got %d", request.nMethods)
  21. }
  22. if request.authMethods[0] != 0x02 {
  23. t.Errorf("Expected method 2, but got %d", request.authMethods[0])
  24. }
  25. }
  26. func TestAuthenticationResponseToBytes(t *testing.T) {
  27. socksVersion := uint8(5)
  28. authMethod := uint8(1)
  29. response := Socks5AuthenticationResponse{socksVersion, authMethod}
  30. bytes := response.ToBytes()
  31. if bytes[0] != socksVersion {
  32. t.Errorf("Unexpected Socks version %d", bytes[0])
  33. }
  34. if bytes[1] != authMethod {
  35. t.Errorf("Unexpected Socks auth method %d", bytes[1])
  36. }
  37. }
  38. func TestRequestRead(t *testing.T) {
  39. rawRequest := []byte{
  40. 0x05, // version
  41. 0x01, // cmd connect
  42. 0x00, // reserved
  43. 0x01, // ipv4 type
  44. 0x72, 0x72, 0x72, 0x72, // 114.114.114.114
  45. 0x00, 0x35, // port 53
  46. }
  47. request, err := ReadRequest(bytes.NewReader(rawRequest))
  48. if err != nil {
  49. t.Errorf("Unexpected error %v", err)
  50. }
  51. if request.version != 0x05 {
  52. t.Errorf("Expected version 5, but got %d", request.version)
  53. }
  54. if request.command != 0x01 {
  55. t.Errorf("Expected command 1, but got %d", request.command)
  56. }
  57. if request.addrType != 0x01 {
  58. t.Errorf("Expected addresstype 1, but got %d", request.addrType)
  59. }
  60. if !bytes.Equal([]byte{0x72, 0x72, 0x72, 0x72}, request.ipv4[:]) {
  61. t.Errorf("Expected IPv4 address 114.114.114.114, but got %v", request.ipv4[:])
  62. }
  63. if request.port != 53 {
  64. t.Errorf("Expected port 53, but got %d", request.port)
  65. }
  66. }