From 42848d911d914208d9038322d133ed6f266e532e Mon Sep 17 00:00:00 2001 From: Andrey Pohilko Date: Fri, 1 Jun 2018 21:29:57 +0600 Subject: [PATCH] refactor error explanation and tests for it --- registry.py | 11 +++++++---- test.py | 12 +++++++++++- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/registry.py b/registry.py index 47f6218..c44f2f5 100755 --- a/registry.py +++ b/registry.py @@ -134,13 +134,16 @@ def decode_base64(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', "get_tag_digest_404": "Try adding flag --digest-method=GET"} key = "%s_%s" % (context, error_code) + if key in error_list.keys(): - print(error_list[key]) + return(error_list[key]) + + return '' def get_auth_schemes(r,path): """ Returns list of auth schemes(lowcased) if www-authenticate: header exists @@ -276,7 +279,7 @@ class Registry: if image_headers is None: 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 tag_digest = image_headers.headers['Docker-Content-Digest'] @@ -303,7 +306,7 @@ class Registry: if delete_result is None: 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 tag_digests_to_ignore.append(tag_digest) diff --git a/test.py b/test.py index 0fb3f3f..a6b584a 100644 --- a/test.py +++ b/test.py @@ -1,5 +1,6 @@ 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 import requests @@ -149,6 +150,15 @@ class TestRegistrySend(unittest.TestCase): headers=self.registry.HEADERS, 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):