aboutsummaryrefslogtreecommitdiff
path: root/src/net/http/request_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/http/request_test.go')
-rw-r--r--src/net/http/request_test.go27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/net/http/request_test.go b/src/net/http/request_test.go
index 1531da3d8c..6ce32332e7 100644
--- a/src/net/http/request_test.go
+++ b/src/net/http/request_test.go
@@ -1053,6 +1053,33 @@ func TestRequestCloneTransferEncoding(t *testing.T) {
}
}
+// Ensure that Request.Clone works correctly with PathValue.
+// See issue 64911.
+func TestRequestClonePathValue(t *testing.T) {
+ req, _ := http.NewRequest("GET", "https://example.org/", nil)
+ req.SetPathValue("p1", "orig")
+
+ clonedReq := req.Clone(context.Background())
+ clonedReq.SetPathValue("p2", "copy")
+
+ // Ensure that any modifications to the cloned
+ // request do not pollute the original request.
+ if g, w := req.PathValue("p2"), ""; g != w {
+ t.Fatalf("p2 mismatch got %q, want %q", g, w)
+ }
+ if g, w := req.PathValue("p1"), "orig"; g != w {
+ t.Fatalf("p1 mismatch got %q, want %q", g, w)
+ }
+
+ // Assert on the changes to the cloned request.
+ if g, w := clonedReq.PathValue("p1"), "orig"; g != w {
+ t.Fatalf("p1 mismatch got %q, want %q", g, w)
+ }
+ if g, w := clonedReq.PathValue("p2"), "copy"; g != w {
+ t.Fatalf("p2 mismatch got %q, want %q", g, w)
+ }
+}
+
// Issue 34878: verify we don't panic when including basic auth (Go 1.13 regression)
func TestNoPanicOnRoundTripWithBasicAuth(t *testing.T) { run(t, testNoPanicWithBasicAuth) }
func testNoPanicWithBasicAuth(t *testing.T, mode testMode) {