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 }