Skip to content

Commit 71240b7

Browse files
Fix user params for regex paths (#52)
* Add regex test that fails * Fix regex user values
1 parent d7e5bc6 commit 71240b7

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

radix/node.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ func (n *node) findEndIndexAndValues(path string) (int, []string) {
9595
continue
9696
}
9797

98-
values[i] = path[index[j-1]:index[j]]
98+
values[i] = copyString(path[index[j-1]:index[j]])
9999

100100
i++
101101
}

router_test.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,38 @@ func TestRouterInvalidInput(t *testing.T) {
288288
}
289289
}
290290

291+
func TestRouterRegexUserValues(t *testing.T) {
292+
mux := New()
293+
mux.GET("/metrics", func(ctx *fasthttp.RequestCtx) {
294+
ctx.SetStatusCode(fasthttp.StatusOK)
295+
})
296+
297+
v4 := mux.Group("/v4")
298+
id := v4.Group("/{id:^[1-9]\\d*}")
299+
id.GET("/click", func(ctx *fasthttp.RequestCtx) {
300+
ctx.SetStatusCode(fasthttp.StatusOK)
301+
})
302+
303+
ctx := new(fasthttp.RequestCtx)
304+
ctx.Request.Header.SetMethod(fasthttp.MethodGet)
305+
ctx.Request.SetRequestURI("/v4/123/click")
306+
mux.Handler(ctx)
307+
308+
v1 := ctx.UserValue("id")
309+
if v1 != "123" {
310+
t.Fatalf(`expected "123" in user value, got %q`, v1)
311+
}
312+
313+
ctx.Request.Reset()
314+
ctx.Request.Header.SetMethod(fasthttp.MethodGet)
315+
ctx.Request.SetRequestURI("/metrics")
316+
mux.Handler(ctx)
317+
318+
if v1 != "123" {
319+
t.Fatalf(`expected "123" in user value after second call, got %q`, v1)
320+
}
321+
}
322+
291323
func TestRouterChaining(t *testing.T) {
292324
router1 := New()
293325
router2 := New()

0 commit comments

Comments
 (0)