github.com/llvm-mirror/llgo@v0.0.0-20190322182713-bf6f0a60fce1/third_party/gofrontend/libgo/go/exp/proxy/proxy_test.go (about)

     1  // Copyright 2011 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package proxy
     6  
     7  import (
     8  	"net"
     9  	"net/url"
    10  	"testing"
    11  )
    12  
    13  type testDialer struct {
    14  	network, addr string
    15  }
    16  
    17  func (t *testDialer) Dial(network, addr string) (net.Conn, error) {
    18  	t.network = network
    19  	t.addr = addr
    20  	return nil, t
    21  }
    22  
    23  func (t *testDialer) Error() string {
    24  	return "testDialer " + t.network + " " + t.addr
    25  }
    26  
    27  func TestFromURL(t *testing.T) {
    28  	u, err := url.Parse("socks5://user:password@1.2.3.4:5678")
    29  	if err != nil {
    30  		t.Fatalf("failed to parse URL: %s", err)
    31  	}
    32  
    33  	tp := &testDialer{}
    34  	proxy, err := FromURL(u, tp)
    35  	if err != nil {
    36  		t.Fatalf("FromURL failed: %s", err)
    37  	}
    38  
    39  	conn, err := proxy.Dial("tcp", "example.com:80")
    40  	if conn != nil {
    41  		t.Error("Dial unexpected didn't return an error")
    42  	}
    43  	if tp, ok := err.(*testDialer); ok {
    44  		if tp.network != "tcp" || tp.addr != "1.2.3.4:5678" {
    45  			t.Errorf("Dialer connected to wrong host. Wanted 1.2.3.4:5678, got: %v", tp)
    46  		}
    47  	} else {
    48  		t.Errorf("Unexpected error from Dial: %s", err)
    49  	}
    50  }