| // Copyright 2015 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 websocket |
| |
| import ( |
| "crypto/tls" |
| "fmt" |
| "log" |
| "net" |
| "net/http/httptest" |
| "testing" |
| "time" |
| ) |
| |
| // This test depend on Go 1.3+ because in earlier versions the Dialer won't be |
| // used in TLS connections and a timeout won't be triggered. |
| func TestDialConfigTLSWithDialer(t *testing.T) { |
| tlsServer := httptest.NewTLSServer(nil) |
| tlsServerAddr := tlsServer.Listener.Addr().String() |
| log.Print("Test TLS WebSocket server listening on ", tlsServerAddr) |
| defer tlsServer.Close() |
| config, _ := NewConfig(fmt.Sprintf("wss://%s/echo", tlsServerAddr), "http://localhost") |
| config.Dialer = &net.Dialer{ |
| Deadline: time.Now().Add(-time.Minute), |
| } |
| config.TlsConfig = &tls.Config{ |
| InsecureSkipVerify: true, |
| } |
| _, err := DialConfig(config) |
| dialerr, ok := err.(*DialError) |
| if !ok { |
| t.Fatalf("DialError expected, got %#v", err) |
| } |
| neterr, ok := dialerr.Err.(*net.OpError) |
| if !ok { |
| t.Fatalf("net.OpError error expected, got %#v", dialerr.Err) |
| } |
| if !neterr.Timeout() { |
| t.Fatalf("expected timeout error, got %#v", neterr) |
| } |
| } |