diff --git a/internal/util/validation.go b/internal/util/validation.go index 11c9e46..d0f8687 100644 --- a/internal/util/validation.go +++ b/internal/util/validation.go @@ -17,6 +17,8 @@ package util import ( "errors" "regexp" + + uuid "github.com/satori/go.uuid" ) var nameRegexp = regexp.MustCompile(`^[a-zA-Z][a-zA-Z0-9]*([-]?[a-zA-Z0-9]+)+$`) @@ -26,5 +28,10 @@ var ( ) func ValidateName(s string) bool { + // names that are valid uuids are not valid. This is needed to accept both + // names or uuid in rest APIs + if _, err := uuid.FromString(s); err == nil { + return false + } return nameRegexp.MatchString(s) } diff --git a/internal/util/validation_test.go b/internal/util/validation_test.go index 986fe85..e20c362 100644 --- a/internal/util/validation_test.go +++ b/internal/util/validation_test.go @@ -25,6 +25,10 @@ var ( "foo-1", "foo-1-bar", "f12oo-bar33", + "cba7b810-9dad-11d1-80b4-00c04fd430c", + "cba7b810-9dad-11d1-80b4000c04fd430c8", + "cba7b8109dad11d180b400c04fd430c89", + "cba7b8109dad11d180b400c04fd430c", } badNames = []string{ "", @@ -40,6 +44,10 @@ var ( "foo_bar", "foo#bar", "1foobar", + "cba7b810-9dad-11d1-80b4-00c04fd430c8", + "{cba7b810-9dad-11d1-80b4-00c04fd430c8}", + "urn:uuid:cba7b810-9dad-11d1-80b4-00c04fd430c8", + "cba7b8109dad11d180b400c04fd430c8", } )