Skip to content

Commit 152db6c

Browse files
Fix no configuration error message
1 parent dd26ff1 commit 152db6c

File tree

3 files changed

+19
-3
lines changed

3 files changed

+19
-3
lines changed

cloudinary_cli/core/config.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def config(new, ls, show, rm, from_url):
2121
config_name, cloudinary_url = new or [None, from_url]
2222

2323
if not verify_cloudinary_url(cloudinary_url):
24-
return 1
24+
return False
2525

2626
config_name = config_name or cloudinary.config().cloud_name
2727

@@ -44,6 +44,7 @@ def config(new, ls, show, rm, from_url):
4444
config_obj = cloudinary.Config()
4545
# noinspection PyProtectedMember
4646
config_obj._setup_from_parsed_url(config_obj._parse_cloudinary_url(load_config()[show]))
47-
show_cloudinary_config(config_obj)
47+
48+
return show_cloudinary_config(config_obj)
4849
else:
49-
show_cloudinary_config(cloudinary.config())
50+
return show_cloudinary_config(cloudinary.config())

cloudinary_cli/utils/config_utils.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ def verify_cloudinary_url(cloudinary_url):
5454

5555
def show_cloudinary_config(cloudinary_config):
5656
obfuscated_config = {k: v for k, v in cloudinary_config.__dict__.items() if not k.startswith("_")}
57+
5758
if "api_secret" in obfuscated_config:
5859
api_secret = obfuscated_config["api_secret"]
5960
obfuscated_config["api_secret"] = "*" * (len(api_secret) - 4) + f"{api_secret[-4:]}"
@@ -62,6 +63,9 @@ def show_cloudinary_config(cloudinary_config):
6263
if obfuscated_config.get("signature_algorithm", None) == cloudinary.utils.SIGNATURE_SHA1:
6364
obfuscated_config.pop("signature_algorithm")
6465

66+
if not obfuscated_config:
67+
return False
68+
6569
template = "{0:" + str(len(max(obfuscated_config, key=len)) + 1) + "} {1}" # Gets the maximal length of the keys.
6670
echo('\n'.join([template.format(f"{k}:", v) for k, v in obfuscated_config.items()]))
6771

test/test_cli_config.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ class TestCLIConfig(unittest.TestCase):
2323
TEST_CLOUD_NAME = 'test_cloud'
2424
TEST_CLOUDINARY_URL = 'cloudinary://key:secret@' + TEST_CLOUD_NAME
2525
INVALID_CLOUDINARY_URL = 'cloudinary://key:secret@'
26+
EMPTY_CLOUDINARY_URL = 'cloudinary://'
2627

2728
@classmethod
2829
def tearDownClass(cls) -> None:
@@ -85,6 +86,16 @@ def test_cli_config_show(self):
8586
for value in ['cloud_name', 'api_key', 'api_secret', self.REAL_CLOUD_NAME]:
8687
self.assertIn(value, result.output)
8788

89+
@unittest.skipUnless(cloudinary.config().api_secret, "Requires api_key/api_secret")
90+
def test_cli_config_show_default_no_config(self):
91+
self.runner.invoke(cli, ['config', '--from_url', self.EMPTY_CLOUDINARY_URL])
92+
93+
result = self.runner.invoke(cli, ['config'])
94+
95+
self.assertEqual(1, result.exit_code)
96+
97+
self.assertIn("No Cloudinary configuration found", result.output)
98+
8899
def test_cli_config_show_non_existent(self):
89100
result = self.runner.invoke(cli, ['config', '--show', self.TEST_CLOUD_NAME])
90101

0 commit comments

Comments
 (0)