diff options
Diffstat (limited to 'internal/util')
| -rw-r--r-- | internal/util/util.go | 32 | ||||
| -rw-r--r-- | internal/util/util_test.go | 33 |
2 files changed, 0 insertions, 65 deletions
diff --git a/internal/util/util.go b/internal/util/util.go index 4370fd1..907f85f 100644 --- a/internal/util/util.go +++ b/internal/util/util.go @@ -6,43 +6,11 @@ import ( "fmt" "net/url" "os" - "path" "strings" "github.com/go-errors/errors" ) -// EnsureValidURL ensures that the input URL is valid to be used internally -// It does the following -// - Sets the scheme to https if none is given -// - It 'cleans' up the path using path.Clean -// - It makes sure that the URL ends with a / -// It returns an error if the URL cannot be parsed. -func EnsureValidURL(s string) (string, error) { - u, err := url.Parse(s) - if err != nil { - return "", errors.WrapPrefix(err, "failed parsing url", 0) - } - - // Make sure the scheme is always https - if u.Scheme != "https" { - u.Scheme = "https" - } - if u.Path != "" { - // Clean the path - // https://pkg.go.dev/path#Clean - u.Path = path.Clean(u.Path) - } - - str := u.String() - - // Make sure the URL ends with a / - if str[len(str)-1:] != "/" { - str += "/" - } - return str, nil -} - // MakeRandomByteSlice creates a cryptographically random bytes slice of `size` // It returns the byte slice (or nil if error) and an error if it could not be generated. func MakeRandomByteSlice(n int) ([]byte, error) { diff --git a/internal/util/util_test.go b/internal/util/util_test.go index cb82123..c3d1cee 100644 --- a/internal/util/util_test.go +++ b/internal/util/util_test.go @@ -5,39 +5,6 @@ import ( "testing" ) -func TestEnsureValidURL(t *testing.T) { - _, validErr := EnsureValidURL("%notvalid%") - - if validErr == nil { - t.Fatal("Got nil error, want: non-nil") - } - - testCases := map[string]string{ - // Make sure we set https - "example.com/": "https://example.com/", - // Make sure we do override the scheme to https - "http://example.com/": "https://example.com/", - // This URL is already valid - "https://example.com/": "https://example.com/", - // Make sure to add a trailing slash (/) - "https://example.com": "https://example.com/", - // Cleanup the path 1 - "https://example.com/////": "https://example.com/", - // Cleanup the path 2 - "https://example.com/..": "https://example.com/", - } - - for k, v := range testCases { - valid, validErr := EnsureValidURL(k) - if validErr != nil { - t.Fatalf("Got: %v, want: nil", validErr) - } - if valid != v { - t.Fatalf("Got: %v, want: %v", valid, v) - } - } -} - func TestMakeRandomByteSlice(t *testing.T) { random, randomErr := MakeRandomByteSlice(32) if randomErr != nil { |
