http: server gave HTTP response to HTTPS client in Golang httptest

Viewed 1849

I got http: server gave HTTP response to HTTPS client in Golang httptest, when testing a get request of https url using httptest server below. It works fine when I use URL start with "http://"

func testingHTTPClient(handler http.Handler) (*http.Client, func()) {
    s := httptest.NewServer(handler)

    cli := &http.Client{
        Transport: &http.Transport{
            DialContext: func(_ context.Context, network, _ string) (net.Conn, error) {
                return net.Dial(network, s.Listener.Addr().String())
            },
        },
    }

    return cli, s.Close
}

refer from Code snippet

How to stub requests to remote hosts with Go

1 Answers

Turns out that instead of

s := httptest.NewServer(handler),

I should use

s := httptest.NewTLSServer(handler)

to get a https server.

Related