TestNetDialConnect tests selection of dial method between NetDial, NetDialContext, NetDialTLS or NetDialTLSContext
(t *testing.T)
| 924 | |
| 925 | // TestNetDialConnect tests selection of dial method between NetDial, NetDialContext, NetDialTLS or NetDialTLSContext |
| 926 | func TestNetDialConnect(t *testing.T) { |
| 927 | |
| 928 | upgrader := Upgrader{} |
| 929 | handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { |
| 930 | if IsWebSocketUpgrade(r) { |
| 931 | c, err := upgrader.Upgrade(w, r, http.Header{"X-Test-Host": {r.Host}}) |
| 932 | if err != nil { |
| 933 | t.Fatal(err) |
| 934 | } |
| 935 | c.Close() |
| 936 | } else { |
| 937 | w.Header().Set("X-Test-Host", r.Host) |
| 938 | } |
| 939 | }) |
| 940 | |
| 941 | server := httptest.NewServer(handler) |
| 942 | defer server.Close() |
| 943 | |
| 944 | tlsServer := httptest.NewTLSServer(handler) |
| 945 | defer tlsServer.Close() |
| 946 | |
| 947 | testUrls := map[*httptest.Server]string{ |
| 948 | server: "ws://" + server.Listener.Addr().String() + "/", |
| 949 | tlsServer: "wss://" + tlsServer.Listener.Addr().String() + "/", |
| 950 | } |
| 951 | |
| 952 | cas := rootCAs(t, tlsServer) |
| 953 | tlsConfig := &tls.Config{ |
| 954 | RootCAs: cas, |
| 955 | ServerName: "example.com", |
| 956 | InsecureSkipVerify: false, |
| 957 | } |
| 958 | |
| 959 | tests := []struct { |
| 960 | name string |
| 961 | server *httptest.Server // server to use |
| 962 | netDial func(network, addr string) (net.Conn, error) |
| 963 | netDialContext func(ctx context.Context, network, addr string) (net.Conn, error) |
| 964 | netDialTLSContext func(ctx context.Context, network, addr string) (net.Conn, error) |
| 965 | tlsClientConfig *tls.Config |
| 966 | }{ |
| 967 | |
| 968 | { |
| 969 | name: "HTTP server, all NetDial* defined, shall use NetDialContext", |
| 970 | server: server, |
| 971 | netDial: func(network, addr string) (net.Conn, error) { |
| 972 | return nil, errors.New("NetDial should not be called") |
| 973 | }, |
| 974 | netDialContext: func(_ context.Context, network, addr string) (net.Conn, error) { |
| 975 | return net.Dial(network, addr) |
| 976 | }, |
| 977 | netDialTLSContext: func(_ context.Context, network, addr string) (net.Conn, error) { |
| 978 | return nil, errors.New("NetDialTLSContext should not be called") |
| 979 | }, |
| 980 | tlsClientConfig: nil, |
| 981 | }, |
| 982 | { |
| 983 | name: "HTTP server, all NetDial* undefined", |