diff options
| author | Emmanuel T Odeke <emmanuel@orijtech.com> | 2019-10-16 16:05:24 -0700 |
|---|---|---|
| committer | Emmanuel Odeke <emm.odeke@gmail.com> | 2019-10-18 19:29:10 +0000 |
| commit | 5375c71289917ac7b25c6fa4bb0f4fa17be19a07 (patch) | |
| tree | ec0d6410663c76ab891ed6630c6b9876da135186 /src/net/http/httptest/server_test.go | |
| parent | dc3b7883b5f11812785a8561afb5ee33e9f15f69 (diff) | |
| download | go-5375c71289917ac7b25c6fa4bb0f4fa17be19a07.tar.xz | |
net/http/httptest: add EnableHTTP2 to Server
Adds a knob EnableHTTP2, that enables an unstarted
Server and its respective client to speak HTTP/2,
but only after StartTLS has been invoked.
Fixes #34939
Change-Id: I287c568b8708a4d3c03e7d9eca7c323b8f4c65b6
Reviewed-on: https://go-review.googlesource.com/c/go/+/201557
Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'src/net/http/httptest/server_test.go')
| -rw-r--r-- | src/net/http/httptest/server_test.go | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/net/http/httptest/server_test.go b/src/net/http/httptest/server_test.go index 8ab50cdb0a..0aad15c5ed 100644 --- a/src/net/http/httptest/server_test.go +++ b/src/net/http/httptest/server_test.go @@ -202,3 +202,39 @@ func TestServerZeroValueClose(t *testing.T) { ts.Close() // tests that it doesn't panic } + +func TestTLSServerWithHTTP2(t *testing.T) { + modes := []struct { + name string + wantProto string + }{ + {"http1", "HTTP/1.1"}, + {"http2", "HTTP/2.0"}, + } + + for _, tt := range modes { + t.Run(tt.name, func(t *testing.T) { + cst := NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("X-Proto", r.Proto) + })) + + switch tt.name { + case "http2": + cst.EnableHTTP2 = true + cst.StartTLS() + default: + cst.Start() + } + + defer cst.Close() + + res, err := cst.Client().Get(cst.URL) + if err != nil { + t.Fatalf("Failed to make request: %v", err) + } + if g, w := res.Header.Get("X-Proto"), tt.wantProto; g != w { + t.Fatalf("X-Proto header mismatch:\n\tgot: %q\n\twant: %q", g, w) + } + }) + } +} |
