123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- // Copyright 2018 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- package sockstest
- import (
- "net"
- "reflect"
- "testing"
- "golang.org/x/net/internal/socks"
- )
- func TestParseAuthRequest(t *testing.T) {
- for i, tt := range []struct {
- wire []byte
- req *AuthRequest
- }{
- {
- []byte{0x05, 0x00},
- &AuthRequest{
- socks.Version5,
- nil,
- },
- },
- {
- []byte{0x05, 0x01, 0xff},
- &AuthRequest{
- socks.Version5,
- []socks.AuthMethod{
- socks.AuthMethodNoAcceptableMethods,
- },
- },
- },
- {
- []byte{0x05, 0x02, 0x00, 0xff},
- &AuthRequest{
- socks.Version5,
- []socks.AuthMethod{
- socks.AuthMethodNotRequired,
- socks.AuthMethodNoAcceptableMethods,
- },
- },
- },
- // corrupted requests
- {nil, nil},
- {[]byte{0x00, 0x01}, nil},
- {[]byte{0x06, 0x00}, nil},
- {[]byte{0x05, 0x02, 0x00}, nil},
- } {
- req, err := ParseAuthRequest(tt.wire)
- if !reflect.DeepEqual(req, tt.req) {
- t.Errorf("#%d: got %v, %v; want %v", i, req, err, tt.req)
- continue
- }
- }
- }
- func TestParseCmdRequest(t *testing.T) {
- for i, tt := range []struct {
- wire []byte
- req *CmdRequest
- }{
- {
- []byte{0x05, 0x01, 0x00, 0x01, 192, 0, 2, 1, 0x17, 0x4b},
- &CmdRequest{
- socks.Version5,
- socks.CmdConnect,
- socks.Addr{
- IP: net.IP{192, 0, 2, 1},
- Port: 5963,
- },
- },
- },
- {
- []byte{0x05, 0x01, 0x00, 0x03, 0x04, 'F', 'Q', 'D', 'N', 0x17, 0x4b},
- &CmdRequest{
- socks.Version5,
- socks.CmdConnect,
- socks.Addr{
- Name: "FQDN",
- Port: 5963,
- },
- },
- },
- // corrupted requests
- {nil, nil},
- {[]byte{0x05}, nil},
- {[]byte{0x06, 0x01, 0x00, 0x01, 192, 0, 2, 2, 0x17, 0x4b}, nil},
- {[]byte{0x05, 0x01, 0xff, 0x01, 192, 0, 2, 3}, nil},
- {[]byte{0x05, 0x01, 0x00, 0x01, 192, 0, 2, 4}, nil},
- {[]byte{0x05, 0x01, 0x00, 0x03, 0x04, 'F', 'Q', 'D', 'N'}, nil},
- } {
- req, err := ParseCmdRequest(tt.wire)
- if !reflect.DeepEqual(req, tt.req) {
- t.Errorf("#%d: got %v, %v; want %v", i, req, err, tt.req)
- continue
- }
- }
- }
|