Skip to content

Commit

Permalink
Closes gofiber#1931 "🤗 How to get path param before a custom verb?" (g…
Browse files Browse the repository at this point in the history
…ofiber#1983)

* Add possibility for parameters before custom verb
FIX for "🤗 How to get path param before a custom verb? gofiber#1931"

* try to stabilize the tests
  • Loading branch information
ReneWerner87 authored and trim21 committed Aug 15, 2022
1 parent db5e8f2 commit 0a7b967
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 2 deletions.
2 changes: 1 addition & 1 deletion middleware/proxy/proxy_test.go
Expand Up @@ -124,7 +124,7 @@ func Test_Proxy_Balancer_WithTlsConfig(t *testing.T) {

// go test -run Test_Proxy_Forward_WithTlsConfig_To_Http
func Test_Proxy_Forward_WithTlsConfig_To_Http(t *testing.T) {
t.Parallel()
//t.Parallel()

_, targetAddr := createProxyTestServer(func(c *fiber.Ctx) error {
return c.SendString("hello from target")
Expand Down
2 changes: 1 addition & 1 deletion path.go
Expand Up @@ -58,7 +58,7 @@ var (
// list of chars for the parameter recognising
parameterStartChars = []byte{wildcardParam, plusParam, paramStarterChar}
// list of chars of delimiters and the starting parameter name char
parameterDelimiterChars = append([]byte{paramStarterChar}, routeDelimiter...)
parameterDelimiterChars = append([]byte{paramStarterChar, escapeChar}, routeDelimiter...)
// list of chars to find the end of a parameter
parameterEndChars = append([]byte{optionalParam}, parameterDelimiterChars...)
)
Expand Down
15 changes: 15 additions & 0 deletions path_test.go
Expand Up @@ -47,6 +47,17 @@ func Test_Path_parseRoute(t *testing.T) {
},
params: nil,
}, rp)

rp = parseRoute("/v1/some/resource/:name\\:customVerb")
utils.AssertEqual(t, routeParser{
segs: []*routeSegment{
{Const: "/v1/some/resource/", Length: 18},
{IsParam: true, ParamName: "name", ComparePart: ":customVerb", PartCount: 1},
{Const: ":customVerb", Length: 11, IsLast: true},
},
params: []string{"name"},
}, rp)

// heavy test with escaped charaters
rp = parseRoute("/v1/some/resource/name\\\\:customVerb?\\?/:param/*")
utils.AssertEqual(t, routeParser{
Expand Down Expand Up @@ -170,6 +181,10 @@ func Test_Path_matchParams(t *testing.T) {
{url: "/v1/some/resource/name:customVerb", params: nil, match: true},
{url: "/v1/some/resource/name:test", params: nil, match: false},
})
testCase("/v1/some/resource/:name\\:customVerb", []testparams{
{url: "/v1/some/resource/test:customVerb", params: []string{"test"}, match: true},
{url: "/v1/some/resource/test:test", params: nil, match: false},
})
testCase("/v1/some/resource/name\\\\:customVerb?\\?/:param/*", []testparams{
{url: "/v1/some/resource/name:customVerb??/test/optionalWildCard/character", params: []string{"test", "optionalWildCard/character"}, match: true},
{url: "/v1/some/resource/name:customVerb??/test", params: []string{"test", ""}, match: true},
Expand Down

0 comments on commit 0a7b967

Please sign in to comment.