TestHost tests handling of host names and confirms that it matches net/http.
(t *testing.T)
| 570 | |
| 571 | // TestHost tests handling of host names and confirms that it matches net/http. |
| 572 | func TestHost(t *testing.T) { |
| 573 | |
| 574 | upgrader := Upgrader{} |
| 575 | handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { |
| 576 | if IsWebSocketUpgrade(r) { |
| 577 | c, err := upgrader.Upgrade(w, r, http.Header{"X-Test-Host": {r.Host}}) |
| 578 | if err != nil { |
| 579 | t.Fatal(err) |
| 580 | } |
| 581 | c.Close() |
| 582 | } else { |
| 583 | w.Header().Set("X-Test-Host", r.Host) |
| 584 | } |
| 585 | }) |
| 586 | |
| 587 | server := httptest.NewServer(handler) |
| 588 | defer server.Close() |
| 589 | |
| 590 | tlsServer := httptest.NewTLSServer(handler) |
| 591 | defer tlsServer.Close() |
| 592 | |
| 593 | addrs := map[*httptest.Server]string{server: server.Listener.Addr().String(), tlsServer: tlsServer.Listener.Addr().String()} |
| 594 | wsProtos := map[*httptest.Server]string{server: "ws://", tlsServer: "wss://"} |
| 595 | httpProtos := map[*httptest.Server]string{server: "http://", tlsServer: "https://"} |
| 596 | |
| 597 | // Avoid log noise from net/http server by logging to testing.T |
| 598 | server.Config.ErrorLog = log.New(testLogWriter{t}, "", 0) |
| 599 | tlsServer.Config.ErrorLog = server.Config.ErrorLog |
| 600 | |
| 601 | cas := rootCAs(t, tlsServer) |
| 602 | |
| 603 | tests := []struct { |
| 604 | fail bool // true if dial / get should fail |
| 605 | server *httptest.Server // server to use |
| 606 | url string // host for request URI |
| 607 | header string // optional request host header |
| 608 | tls string // optional host for tls ServerName |
| 609 | wantAddr string // expected host for dial |
| 610 | wantHeader string // expected request header on server |
| 611 | insecureSkipVerify bool |
| 612 | }{ |
| 613 | { |
| 614 | server: server, |
| 615 | url: addrs[server], |
| 616 | wantAddr: addrs[server], |
| 617 | wantHeader: addrs[server], |
| 618 | }, |
| 619 | { |
| 620 | server: tlsServer, |
| 621 | url: addrs[tlsServer], |
| 622 | wantAddr: addrs[tlsServer], |
| 623 | wantHeader: addrs[tlsServer], |
| 624 | }, |
| 625 | |
| 626 | { |
| 627 | server: server, |
| 628 | url: addrs[server], |
| 629 | header: "badhost.com", |