Skip to content

Commit

Permalink
preserve url encoded path in helm repo
Browse files Browse the repository at this point in the history
Signed-off-by: Somtochi Onyekwere <[email protected]>
  • Loading branch information
somtochiama committed Aug 23, 2023
1 parent a302c71 commit 64139e7
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 0 deletions.
6 changes: 6 additions & 0 deletions internal/helm/repository/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,16 @@ func NormalizeURL(repositoryURL string) (string, error) {

if u.Scheme == helmreg.OCIScheme {
u.Path = strings.TrimRight(u.Path, "/")
// we perform the same operation on u.RawPath so that it will be a valid encoding
// of u.Path. This allows u.EscapedPath() (which is used in computing u.String()) to return
// the correct value when the path is url encoded.
// ref: https://pkg.go.dev/net/url#URL.EscapedPath
u.RawPath = strings.TrimRight(u.RawPath, "/")
return u.String(), nil
}

u.Path = strings.TrimRight(u.Path, "/") + "/"
u.RawPath = strings.TrimRight(u.RawPath, "/") + "/"
return u.String(), nil
}

Expand Down
10 changes: 10 additions & 0 deletions internal/helm/repository/utils_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,16 @@ func TestNormalizeURL(t *testing.T) {
url: "http://example.com/?st=pr",
want: "http://example.com/?st=pr",
},
{
name: "url with encoded path",
url: "http://example.com/next%2Fpath",
want: "http://example.com/next%2Fpath/",
},
{
name: "url with encoded path and slash",
url: "http://example.com/next%2Fpath/",
want: "http://example.com/next%2Fpath/",
},
{
name: "empty url",
url: "",
Expand Down

0 comments on commit 64139e7

Please sign in to comment.