Skip to content

Commit

Permalink
introduce MergePathStrategy for #521 #519
Browse files Browse the repository at this point in the history
  • Loading branch information
emicklei committed Feb 28, 2023
1 parent a4aa316 commit 20c7443
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 7 deletions.
19 changes: 18 additions & 1 deletion route_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -353,8 +353,25 @@ func (b *RouteBuilder) Build() Route {
return route
}

type MergePathStrategyFunc func(path1, path2 string) string

var (
// behavior 3.10.*
PathJoinStrategy = path.Join

// behavior <= 3.9
TrimSlashStrategy = func(path1, path2 string) string {
return strings.TrimRight(path1, "/") + "/" + strings.TrimLeft(path2, "/")
}

// MergePathStrategy is the active strategy for merging a Route path when building the routing of all WebServices.
// The value is set to TrimSlashStrategy
// PathJoinStrategy is an alternative strategy that is more strict [Security - PRISMA-2022-0227]
MergePathStrategy = TrimSlashStrategy
)

func concatPath(path1, path2 string) string {
return path.Join(path1, path2)
return MergePathStrategy(path1, path2)
}

var anonymousFuncCount int32
Expand Down
12 changes: 6 additions & 6 deletions web_service_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -337,12 +337,12 @@ func TestClientWithAndWithoutTrailingSlash(t *testing.T) {
url string
wantCode int
}{
// behavior before #520
// {url: "http://here.com/test", wantCode: 404},
// {url: "http://here.com/test/", wantCode: 200},
// current behavior
{url: "http://here.com/test", wantCode: 200},
{url: "http://here.com/test/", wantCode: 404},
// TrimSlashStrategy
{url: "http://here.com/test", wantCode: 404},
{url: "http://here.com/test/", wantCode: 200},
// PathJoinStrategy
//{url: "http://here.com/test", wantCode: 200},
//{url: "http://here.com/test/", wantCode: 404},
} {
t.Run(tt.url, func(t *testing.T) {
httpRequest, _ := http.NewRequest("PUT", tt.url, nil)
Expand Down

0 comments on commit 20c7443

Please sign in to comment.