|
@@ -170,19 +170,19 @@ func TestTreeWildcard(t *testing.T) {
|
|
|
|
|
|
|
|
checkRequests(t, tree, testRequests{
|
|
checkRequests(t, tree, testRequests{
|
|
|
{"/", false, "/", nil},
|
|
{"/", false, "/", nil},
|
|
|
- {"/cmd/test/", false, "/cmd/:tool/", Params{Param{"tool", "test"}}},
|
|
|
|
|
- {"/cmd/test", true, "", Params{Param{"tool", "test"}}},
|
|
|
|
|
- {"/cmd/test/3", false, "/cmd/:tool/:sub", Params{Param{"tool", "test"}, Param{"sub", "3"}}},
|
|
|
|
|
- {"/src/", false, "/src/*filepath", Params{Param{"filepath", "/"}}},
|
|
|
|
|
- {"/src/some/file.png", false, "/src/*filepath", Params{Param{"filepath", "/some/file.png"}}},
|
|
|
|
|
|
|
+ {"/cmd/test/", false, "/cmd/:tool/", Params{Param{Key: "tool", Value: "test"}}},
|
|
|
|
|
+ {"/cmd/test", true, "", Params{Param{Key: "tool", Value: "test"}}},
|
|
|
|
|
+ {"/cmd/test/3", false, "/cmd/:tool/:sub", Params{Param{Key: "tool", Value: "test"}, Param{Key: "sub", Value: "3"}}},
|
|
|
|
|
+ {"/src/", false, "/src/*filepath", Params{Param{Key: "filepath", Value: "/"}}},
|
|
|
|
|
+ {"/src/some/file.png", false, "/src/*filepath", Params{Param{Key: "filepath", Value: "/some/file.png"}}},
|
|
|
{"/search/", false, "/search/", nil},
|
|
{"/search/", false, "/search/", nil},
|
|
|
- {"/search/someth!ng+in+ünìcodé", false, "/search/:query", Params{Param{"query", "someth!ng+in+ünìcodé"}}},
|
|
|
|
|
- {"/search/someth!ng+in+ünìcodé/", true, "", Params{Param{"query", "someth!ng+in+ünìcodé"}}},
|
|
|
|
|
- {"/user_gopher", false, "/user_:name", Params{Param{"name", "gopher"}}},
|
|
|
|
|
- {"/user_gopher/about", false, "/user_:name/about", Params{Param{"name", "gopher"}}},
|
|
|
|
|
- {"/files/js/inc/framework.js", false, "/files/:dir/*filepath", Params{Param{"dir", "js"}, Param{"filepath", "/inc/framework.js"}}},
|
|
|
|
|
- {"/info/gordon/public", false, "/info/:user/public", Params{Param{"user", "gordon"}}},
|
|
|
|
|
- {"/info/gordon/project/go", false, "/info/:user/project/:project", Params{Param{"user", "gordon"}, Param{"project", "go"}}},
|
|
|
|
|
|
|
+ {"/search/someth!ng+in+ünìcodé", false, "/search/:query", Params{Param{Key: "query", Value: "someth!ng+in+ünìcodé"}}},
|
|
|
|
|
+ {"/search/someth!ng+in+ünìcodé/", true, "", Params{Param{Key: "query", Value: "someth!ng+in+ünìcodé"}}},
|
|
|
|
|
+ {"/user_gopher", false, "/user_:name", Params{Param{Key: "name", Value: "gopher"}}},
|
|
|
|
|
+ {"/user_gopher/about", false, "/user_:name/about", Params{Param{Key: "name", Value: "gopher"}}},
|
|
|
|
|
+ {"/files/js/inc/framework.js", false, "/files/:dir/*filepath", Params{Param{Key: "dir", Value: "js"}, Param{Key: "filepath", Value: "/inc/framework.js"}}},
|
|
|
|
|
+ {"/info/gordon/public", false, "/info/:user/public", Params{Param{Key: "user", Value: "gordon"}}},
|
|
|
|
|
+ {"/info/gordon/project/go", false, "/info/:user/project/:project", Params{Param{Key: "user", Value: "gordon"}, Param{Key: "project", Value: "go"}}},
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
checkPriorities(t, tree)
|
|
checkPriorities(t, tree)
|
|
@@ -209,18 +209,18 @@ func TestUnescapeParameters(t *testing.T) {
|
|
|
unescape := true
|
|
unescape := true
|
|
|
checkRequests(t, tree, testRequests{
|
|
checkRequests(t, tree, testRequests{
|
|
|
{"/", false, "/", nil},
|
|
{"/", false, "/", nil},
|
|
|
- {"/cmd/test/", false, "/cmd/:tool/", Params{Param{"tool", "test"}}},
|
|
|
|
|
- {"/cmd/test", true, "", Params{Param{"tool", "test"}}},
|
|
|
|
|
- {"/src/some/file.png", false, "/src/*filepath", Params{Param{"filepath", "/some/file.png"}}},
|
|
|
|
|
- {"/src/some/file+test.png", false, "/src/*filepath", Params{Param{"filepath", "/some/file test.png"}}},
|
|
|
|
|
- {"/src/some/file++++%%%%test.png", false, "/src/*filepath", Params{Param{"filepath", "/some/file++++%%%%test.png"}}},
|
|
|
|
|
- {"/src/some/file%2Ftest.png", false, "/src/*filepath", Params{Param{"filepath", "/some/file/test.png"}}},
|
|
|
|
|
- {"/search/someth!ng+in+ünìcodé", false, "/search/:query", Params{Param{"query", "someth!ng in ünìcodé"}}},
|
|
|
|
|
- {"/info/gordon/project/go", false, "/info/:user/project/:project", Params{Param{"user", "gordon"}, Param{"project", "go"}}},
|
|
|
|
|
- {"/info/slash%2Fgordon", false, "/info/:user", Params{Param{"user", "slash/gordon"}}},
|
|
|
|
|
- {"/info/slash%2Fgordon/project/Project%20%231", false, "/info/:user/project/:project", Params{Param{"user", "slash/gordon"}, Param{"project", "Project #1"}}},
|
|
|
|
|
- {"/info/slash%%%%", false, "/info/:user", Params{Param{"user", "slash%%%%"}}},
|
|
|
|
|
- {"/info/slash%%%%2Fgordon/project/Project%%%%20%231", false, "/info/:user/project/:project", Params{Param{"user", "slash%%%%2Fgordon"}, Param{"project", "Project%%%%20%231"}}},
|
|
|
|
|
|
|
+ {"/cmd/test/", false, "/cmd/:tool/", Params{Param{Key: "tool", Value: "test"}}},
|
|
|
|
|
+ {"/cmd/test", true, "", Params{Param{Key: "tool", Value: "test"}}},
|
|
|
|
|
+ {"/src/some/file.png", false, "/src/*filepath", Params{Param{Key: "filepath", Value: "/some/file.png"}}},
|
|
|
|
|
+ {"/src/some/file+test.png", false, "/src/*filepath", Params{Param{Key: "filepath", Value: "/some/file test.png"}}},
|
|
|
|
|
+ {"/src/some/file++++%%%%test.png", false, "/src/*filepath", Params{Param{Key: "filepath", Value: "/some/file++++%%%%test.png"}}},
|
|
|
|
|
+ {"/src/some/file%2Ftest.png", false, "/src/*filepath", Params{Param{Key: "filepath", Value: "/some/file/test.png"}}},
|
|
|
|
|
+ {"/search/someth!ng+in+ünìcodé", false, "/search/:query", Params{Param{Key: "query", Value: "someth!ng in ünìcodé"}}},
|
|
|
|
|
+ {"/info/gordon/project/go", false, "/info/:user/project/:project", Params{Param{Key: "user", Value: "gordon"}, Param{Key: "project", Value: "go"}}},
|
|
|
|
|
+ {"/info/slash%2Fgordon", false, "/info/:user", Params{Param{Key: "user", Value: "slash/gordon"}}},
|
|
|
|
|
+ {"/info/slash%2Fgordon/project/Project%20%231", false, "/info/:user/project/:project", Params{Param{Key: "user", Value: "slash/gordon"}, Param{Key: "project", Value: "Project #1"}}},
|
|
|
|
|
+ {"/info/slash%%%%", false, "/info/:user", Params{Param{Key: "user", Value: "slash%%%%"}}},
|
|
|
|
|
+ {"/info/slash%%%%2Fgordon/project/Project%%%%20%231", false, "/info/:user/project/:project", Params{Param{Key: "user", Value: "slash%%%%2Fgordon"}, Param{Key: "project", Value: "Project%%%%20%231"}}},
|
|
|
}, unescape)
|
|
}, unescape)
|
|
|
|
|
|
|
|
checkPriorities(t, tree)
|
|
checkPriorities(t, tree)
|
|
@@ -326,9 +326,9 @@ func TestTreeDupliatePath(t *testing.T) {
|
|
|
checkRequests(t, tree, testRequests{
|
|
checkRequests(t, tree, testRequests{
|
|
|
{"/", false, "/", nil},
|
|
{"/", false, "/", nil},
|
|
|
{"/doc/", false, "/doc/", nil},
|
|
{"/doc/", false, "/doc/", nil},
|
|
|
- {"/src/some/file.png", false, "/src/*filepath", Params{Param{"filepath", "/some/file.png"}}},
|
|
|
|
|
- {"/search/someth!ng+in+ünìcodé", false, "/search/:query", Params{Param{"query", "someth!ng+in+ünìcodé"}}},
|
|
|
|
|
- {"/user_gopher", false, "/user_:name", Params{Param{"name", "gopher"}}},
|
|
|
|
|
|
|
+ {"/src/some/file.png", false, "/src/*filepath", Params{Param{Key: "filepath", Value: "/some/file.png"}}},
|
|
|
|
|
+ {"/search/someth!ng+in+ünìcodé", false, "/search/:query", Params{Param{Key: "query", Value: "someth!ng+in+ünìcodé"}}},
|
|
|
|
|
+ {"/user_gopher", false, "/user_:name", Params{Param{Key: "name", Value: "gopher"}}},
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
|
|
|