refactor error explanation and tests for it

This commit is contained in:
Andrey Pohilko
2018-06-01 21:29:57 +06:00
parent c5bf8c7901
commit 42848d911d
2 changed files with 18 additions and 5 deletions

View File

@@ -134,13 +134,16 @@ def decode_base64(data):
return base64.decodestring(data) return base64.decodestring(data)
def print_error_explanation(context, error_code): def get_error_explanation(context, error_code):
error_list = {"delete_tag_405": 'You might want to set REGISTRY_STORAGE_DELETE_ENABLED: "true" in your registry', error_list = {"delete_tag_405": 'You might want to set REGISTRY_STORAGE_DELETE_ENABLED: "true" in your registry',
"get_tag_digest_404": "Try adding flag --digest-method=GET"} "get_tag_digest_404": "Try adding flag --digest-method=GET"}
key = "%s_%s" % (context, error_code) key = "%s_%s" % (context, error_code)
if key in error_list.keys(): if key in error_list.keys():
print(error_list[key]) return(error_list[key])
return ''
def get_auth_schemes(r,path): def get_auth_schemes(r,path):
""" Returns list of auth schemes(lowcased) if www-authenticate: header exists """ Returns list of auth schemes(lowcased) if www-authenticate: header exists
@@ -276,7 +279,7 @@ class Registry:
if image_headers is None: if image_headers is None:
print(" tag digest not found: {0}.".format(self.last_error)) print(" tag digest not found: {0}.".format(self.last_error))
print_error_explanation("get_tag_digest", self.last_error) print(get_error_explanation("get_tag_digest", self.last_error))
return None return None
tag_digest = image_headers.headers['Docker-Content-Digest'] tag_digest = image_headers.headers['Docker-Content-Digest']
@@ -303,7 +306,7 @@ class Registry:
if delete_result is None: if delete_result is None:
print("failed, error: {0}".format(self.last_error)) print("failed, error: {0}".format(self.last_error))
print_error_explanation("delete_tag", self.last_error) print(get_error_explanation("delete_tag", self.last_error))
return False return False
tag_digests_to_ignore.append(tag_digest) tag_digests_to_ignore.append(tag_digest)

12
test.py
View File

@@ -1,5 +1,6 @@
import unittest import unittest
from registry import Registry, Requests, get_tags, parse_args, delete_tags, delete_tags_by_age from registry import Registry, Requests, get_tags, parse_args, \
delete_tags, delete_tags_by_age, get_error_explanation
from mock import MagicMock, patch from mock import MagicMock, patch
import requests import requests
@@ -149,6 +150,15 @@ class TestRegistrySend(unittest.TestCase):
headers=self.registry.HEADERS, headers=self.registry.HEADERS,
verify=True) verify=True)
class TestGetrrorExplanation(unittest.TestCase):
def test_get_tag_digest_404(self):
self.assertEqual(get_error_explanation("delete_tag", "405"),
'You might want to set REGISTRY_STORAGE_DELETE_ENABLED: "true" in your registry')
def test_delete_digest_405(self):
self.assertEqual(get_error_explanation("get_tag_digest", "404"),
"Try adding flag --digest-method=GET")
class TestListImages(unittest.TestCase): class TestListImages(unittest.TestCase):