transport_test.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. // Copyright 2015 The Go Authors.
  2. // See https://go.googlesource.com/go/+/master/CONTRIBUTORS
  3. // Licensed under the same terms as Go itself:
  4. // https://go.googlesource.com/go/+/master/LICENSE
  5. package http2
  6. import (
  7. "flag"
  8. "io"
  9. "net/http"
  10. "os"
  11. "reflect"
  12. "testing"
  13. )
  14. var (
  15. extNet = flag.Bool("extnet", false, "do external network tests")
  16. transportHost = flag.String("transporthost", "http2.golang.org", "hostname to use for TestTransport")
  17. insecure = flag.Bool("insecure", false, "insecure TLS dials")
  18. )
  19. func TestTransportExternal(t *testing.T) {
  20. if !*extNet {
  21. t.Skip("skipping external network test")
  22. }
  23. req, _ := http.NewRequest("GET", "https://"+*transportHost+"/", nil)
  24. rt := &Transport{
  25. InsecureTLSDial: *insecure,
  26. }
  27. res, err := rt.RoundTrip(req)
  28. if err != nil {
  29. t.Fatalf("%v", err)
  30. }
  31. res.Write(os.Stdout)
  32. }
  33. func TestTransport(t *testing.T) {
  34. condSkipFailingTest(t)
  35. VerboseLogs = true
  36. st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) {
  37. println("in handler")
  38. io.WriteString(w, "sup")
  39. })
  40. defer st.Close()
  41. tr := &Transport{
  42. InsecureTLSDial: true,
  43. }
  44. cl := &http.Client{Transport: tr}
  45. res, err := cl.Get(st.ts.URL)
  46. if err != nil {
  47. t.Fatal(err)
  48. }
  49. defer res.Body.Close()
  50. t.Logf("Got res: %+v", res)
  51. if g, w := res.StatusCode, 200; g != w {
  52. t.Errorf("StatusCode = %v; want %v", g, w)
  53. }
  54. if g, w := res.Status, "200 OK"; g != w {
  55. t.Errorf("Status = %q; want %q", g, w)
  56. }
  57. wantHeader := http.Header{
  58. "Content-Length": []string{"3"},
  59. "Content-Type": []string{"text/plain; charset=utf-8"},
  60. }
  61. if !reflect.DeepEqual(res.Header, wantHeader) {
  62. t.Errorf("res Header = %v; want %v", res.Header, wantHeader)
  63. }
  64. }