1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

Revert "Allow spaces in network names"

This reverts commit 85b22fabbe.

Signed-off-by: Madhu Venugopal <madhu@docker.com>
This commit is contained in:
Madhu Venugopal 2017-02-01 18:17:17 -08:00
parent 58744967be
commit 4d1334c9ee
2 changed files with 14 additions and 34 deletions

View file

@ -17,11 +17,11 @@ import (
"github.com/docker/libnetwork/osl"
)
// restrictedNameRegex represents the regular expression which regulates the allowed network or endpoint names.
const restrictedNameRegex = `^[\w]+[\w-. ]*[\w]+$`
// RestrictedNameChars collects the characters allowed to represent a network or endpoint name.
const restrictedNameChars = `[a-zA-Z0-9][a-zA-Z0-9_.-]`
// RestrictedNamePattern is a regular expression to validate names against the collection of restricted characters.
var restrictedNamePattern = regexp.MustCompile(restrictedNameRegex)
var restrictedNamePattern = regexp.MustCompile(`^/?` + restrictedNameChars + `+$`)
// Config encapsulates configurations of various Libnetwork components
type Config struct {
@ -243,7 +243,7 @@ func (c *Config) ProcessOptions(options ...Option) {
// ValidateName validates configuration objects supported by libnetwork
func ValidateName(name string) error {
if !restrictedNamePattern.MatchString(name) {
return fmt.Errorf("%q includes invalid characters, resource name has to conform to %q", name, restrictedNameRegex)
return fmt.Errorf("%s includes invalid characters, only %q are allowed", name, restrictedNameChars)
}
return nil
}

View file

@ -46,37 +46,17 @@ func TestOptionsLabels(t *testing.T) {
}
func TestValidName(t *testing.T) {
assertName(t, "test", true)
assertName(t, "test1", true)
assertName(t, "test1.2_3", true)
assertName(t, "_test", true)
assertName(t, "test_", true)
assertName(t, "looks-good", true)
assertName(t, " test", false)
assertName(t, "test ", false)
assertName(t, "test.", false)
assertName(t, ".test", false)
assertName(t, "", false)
assertName(t, " ", false)
assertName(t, "<>$$^", false)
assertName(t, "this is a good network name", true)
assertName(t, "this is also-good", true)
assertName(t, " this is a not good network name", false)
assertName(t, "this is a not either ", false)
assertName(t, "this one\nis not good", false)
assertName(t, "this one\tis not good", false)
assertName(t, "this one\ris not good", false)
assertName(t, "this one\vis not good", false)
assertName(t, "this one\fis not good", false)
}
func assertName(t *testing.T, name string, mustSucceed bool) {
msg := "Name validation succeeds for a case when it is expected to fail"
if mustSucceed {
msg = "Name validation fails for a name that must be accepted"
if err := ValidateName("test"); err != nil {
t.Fatal("Name validation fails for a name that must be accepted")
}
err := ValidateName(name)
if (err == nil) != mustSucceed {
t.Fatalf("%s: %s", msg, name)
if err := ValidateName(""); err == nil {
t.Fatal("Name validation succeeds for a case when it is expected to fail")
}
if err := ValidateName(" "); err == nil {
t.Fatal("Name validation succeeds for a case when it is expected to fail")
}
if err := ValidateName("<>$$^"); err == nil {
t.Fatal("Name validation succeeds for a case when it is expected to fail")
}
}