Better handling of namespace validation to fix a number of issues

- Fixes a bug which allows for underscores at the beginning of namespaces: Fixes #1849
- Allows dots and dashes for newer Docker clients: Fixes #1188
- Has the UI display better messaging associated with namespace entry
This commit is contained in:
Joseph Schorr 2016-09-20 15:21:26 -04:00
parent efbbeeb07f
commit 3a68740ff7
11 changed files with 126 additions and 21 deletions

View file

@ -4,12 +4,45 @@ import magic
from itertools import islice
from semantic_version import Version, Spec
from util.validation import generate_valid_usernames
from util.validation import generate_valid_usernames, validate_username
from util.registry.generatorfile import GeneratorFile
from util.registry.dockerver import docker_version
from util import slash_join
from _pyio import BufferedReader
class TestUsernameValidation(unittest.TestCase):
def assertValid(self, username):
result, _ = validate_username(username)
self.assertTrue(result)
def assertInvalid(self, username):
result, _ = validate_username(username)
self.assertFalse(result)
def test_valid(self):
self.assertValid('jake')
self.assertValid('ja_ke')
self.assertValid('te-st')
self.assertValid('te.st')
def test_properlength(self):
self.assertValid('z' * 30)
def test_tooshort(self):
self.assertInvalid('j')
self.assertInvalid('ja')
self.assertInvalid('jk')
def test_toolong(self):
self.assertInvalid('z' * 31)
def test_invalids(self):
self.assertInvalid('_test')
self.assertInvalid('Test')
self.assertInvalid('hello world')
self.assertInvalid('te---st')
class TestGeneratorFile(unittest.TestCase):
def sample_generator(self):
yield 'this'
@ -128,6 +161,9 @@ class TestUsernameGenerator(unittest.TestCase):
self.assert_generated_output('ja__', 'ja00')
self.assert_generated_output('jake__', 'jake')
def test_starting_underscore(self):
self.assert_generated_output('_jake', 'jake')
def test_short_names(self):
self.assert_generated_output('a', 'a000')
self.assert_generated_output('ab', 'ab00')