password can contain colons
This commit is contained in:
26
registry.py
26
registry.py
@@ -54,15 +54,27 @@ class Registry:
|
|||||||
self.http = None
|
self.http = None
|
||||||
self.last_error = None
|
self.last_error = None
|
||||||
|
|
||||||
|
def parse_login(self, login):
|
||||||
|
if login != None:
|
||||||
|
|
||||||
|
if not ':' in login:
|
||||||
|
self.last_error = "Please provide -l in the form USER:PASSWORD"
|
||||||
|
return (None, None)
|
||||||
|
|
||||||
|
self.last_error = None
|
||||||
|
return login.split(':', 1)
|
||||||
|
|
||||||
|
return (None, None)
|
||||||
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def create(host, login, no_validate_ssl):
|
def create(host, login, no_validate_ssl):
|
||||||
r = Registry
|
r = Registry()
|
||||||
if login != None:
|
|
||||||
if not ':' in login:
|
(r.username, r.password) = r.parse_login(login)
|
||||||
r.last_error = "Please provide -l in the form USER:PASSWORD"
|
if r.last_error != None:
|
||||||
print(r.last_error)
|
print(r.last_error)
|
||||||
exit(1)
|
exit(1)
|
||||||
(r.username, r.password) = login.split(':')
|
|
||||||
|
|
||||||
r.hostname = host
|
r.hostname = host
|
||||||
r.no_validate_ssl = no_validate_ssl
|
r.no_validate_ssl = no_validate_ssl
|
||||||
|
|||||||
26
test.py
26
test.py
@@ -19,6 +19,28 @@ class TestRequests:
|
|||||||
self.return_value.status_code = status_code
|
self.return_value.status_code = status_code
|
||||||
self.return_value.text = text
|
self.return_value.text = text
|
||||||
|
|
||||||
|
class TestParseLogin(unittest.TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.registry = Registry()
|
||||||
|
|
||||||
|
def test_login_args_ok(self):
|
||||||
|
(username, password) = self.registry.parse_login("username:password")
|
||||||
|
self.assertEqual(username, "username")
|
||||||
|
self.assertEqual(password, "password")
|
||||||
|
self.assertEqual(self.registry.last_error, None)
|
||||||
|
|
||||||
|
def test_login_args_double_colon(self):
|
||||||
|
(username, password) = self.registry.parse_login("username:pass:word")
|
||||||
|
self.assertEqual(username, "username")
|
||||||
|
self.assertEqual(password, "pass:word")
|
||||||
|
self.assertEqual(self.registry.last_error, None)
|
||||||
|
|
||||||
|
def test_login_args_no_colon(self):
|
||||||
|
(username, password) = self.registry.parse_login("username/password")
|
||||||
|
self.assertEqual(username, None)
|
||||||
|
self.assertEqual(password, None)
|
||||||
|
self.assertEqual(self.registry.last_error, "Please provide -l in the form USER:PASSWORD")
|
||||||
|
|
||||||
class TestRegistrySend(unittest.TestCase):
|
class TestRegistrySend(unittest.TestCase):
|
||||||
|
|
||||||
@@ -52,6 +74,7 @@ class TestRegistrySend(unittest.TestCase):
|
|||||||
self.registry.http.reset_return_value(200)
|
self.registry.http.reset_return_value(200)
|
||||||
response = self.registry.send('/v2/catalog')
|
response = self.registry.send('/v2/catalog')
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
|
self.assertEqual(self.registry.last_error, None)
|
||||||
self.registry.http.request.assert_called_with('GET',
|
self.registry.http.request.assert_called_with('GET',
|
||||||
'http://testdomain.com/v2/catalog',
|
'http://testdomain.com/v2/catalog',
|
||||||
auth = ("test_login", "test_password"),
|
auth = ("test_login", "test_password"),
|
||||||
@@ -152,6 +175,7 @@ class TestListDigest(unittest.TestCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
self.assertEqual(response, 'sha256:85295b0e7456a8fbbc886722b483f87f2bff553fa0beeaf37f5d807aff7c1e52')
|
self.assertEqual(response, 'sha256:85295b0e7456a8fbbc886722b483f87f2bff553fa0beeaf37f5d807aff7c1e52')
|
||||||
|
self.assertEqual(self.registry.last_error, None)
|
||||||
|
|
||||||
def test_invalid_status_code(self):
|
def test_invalid_status_code(self):
|
||||||
self.registry.http.reset_return_value(400)
|
self.registry.http.reset_return_value(400)
|
||||||
@@ -194,6 +218,7 @@ class TestListLayers(unittest.TestCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
self.assertEqual(response, "layers_list")
|
self.assertEqual(response, "layers_list")
|
||||||
|
self.assertEqual(self.registry.last_error, None)
|
||||||
|
|
||||||
|
|
||||||
def test_list_layers_schema_version_1_ok(self):
|
def test_list_layers_schema_version_1_ok(self):
|
||||||
@@ -218,6 +243,7 @@ class TestListLayers(unittest.TestCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
self.assertEqual(response, "layers_list")
|
self.assertEqual(response, "layers_list")
|
||||||
|
self.assertEqual(self.registry.last_error, None)
|
||||||
|
|
||||||
def test_list_layers_invalid_status_code(self):
|
def test_list_layers_invalid_status_code(self):
|
||||||
self.registry.http.reset_return_value(400, "whatever")
|
self.registry.http.reset_return_value(400, "whatever")
|
||||||
|
|||||||
Reference in New Issue
Block a user