Commit 434058c6 authored by Michelle Noorali's avatar Michelle Noorali

feat(repo): validate repo url format

parent 62c1bb38
...@@ -17,6 +17,7 @@ limitations under the License. ...@@ -17,6 +17,7 @@ limitations under the License.
package repo package repo
import ( import (
"errors"
"fmt" "fmt"
"strings" "strings"
"sync" "sync"
...@@ -62,6 +63,11 @@ func (rs *inmemRepoService) CreateRepo(repository IRepo) error { ...@@ -62,6 +63,11 @@ func (rs *inmemRepoService) CreateRepo(repository IRepo) error {
URL := repository.GetURL() URL := repository.GetURL()
name := repository.GetName() name := repository.GetName()
valid := GCSRepoURLMatcher.MatchString(URL)
if !valid {
return errors.New(URL + " is an invalid Repo URL")
}
for u, r := range rs.repositories { for u, r := range rs.repositories {
if u == URL { if u == URL {
return fmt.Errorf("Repository with URL %s already exists", URL) return fmt.Errorf("Repository with URL %s already exists", URL)
......
...@@ -85,6 +85,19 @@ func TestCreateRepoWithDuplicateURL(t *testing.T) { ...@@ -85,6 +85,19 @@ func TestCreateRepoWithDuplicateURL(t *testing.T) {
} }
} }
func TestCreateRepoWithInvalidURL(t *testing.T) {
rs := NewInmemRepoService()
invalidURL := "fake://sfds"
r, err := newRepo(invalidURL, "", TestName, GCSRepoFormat, GCSRepoType)
if err != nil {
t.Fatalf("cannot create test repo: %v", err)
}
if err = rs.CreateRepo(r); err == nil {
t.Fatalf("created repo with invalid URL: %s", invalidURL)
}
}
func TestGetRepoWithInvalidURL(t *testing.T) { func TestGetRepoWithInvalidURL(t *testing.T) {
invalidURL := "https://not.a.valid/url" invalidURL := "https://not.a.valid/url"
rs := NewInmemRepoService() rs := NewInmemRepoService()
...@@ -96,7 +109,7 @@ func TestGetRepoWithInvalidURL(t *testing.T) { ...@@ -96,7 +109,7 @@ func TestGetRepoWithInvalidURL(t *testing.T) {
func TestGetRepoURLByName(t *testing.T) { func TestGetRepoURLByName(t *testing.T) {
rs := NewInmemRepoService() rs := NewInmemRepoService()
testURL := "gcs://helm-test-charts" testURL := "gs://helm-test-charts"
r, err := newRepo(testURL, "", TestName, GCSRepoFormat, GCSRepoType) r, err := newRepo(testURL, "", TestName, GCSRepoFormat, GCSRepoType)
err = rs.CreateRepo(r) err = rs.CreateRepo(r)
if err != nil { if err != nil {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment