Skip to content

Commit f0a158e

Browse files
author
Juliya Smith
authored
Raise usage error when updating profile does not receive any argument (#250)
1 parent 7268e48 commit f0a158e

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

src/code42cli/cmds/profile.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ def username_option(required=False):
6060
is_flag=True,
6161
help="For development purposes, do not validate the SSL certificates of Code42 servers. "
6262
"This is not recommended, except for specific scenarios like testing.",
63+
default=None,
6364
)
6465

6566

@@ -104,11 +105,19 @@ def create(name, server, username, password, disable_ssl_errors):
104105
def update(name, server, username, password, disable_ssl_errors):
105106
"""Update an existing profile."""
106107
c42profile = cliprofile.get_profile(name)
108+
109+
if not server and not username and not password and disable_ssl_errors is None:
110+
raise click.UsageError(
111+
"Must provide at least one of `--username`, `--server`, `--password`, or "
112+
"`--disable-ssl-errors` when updating a profile."
113+
)
114+
107115
cliprofile.update_profile(c42profile.name, server, username, disable_ssl_errors)
108116
if password:
109117
_set_pw(name, password)
110118
elif not c42profile.has_stored_password:
111119
_prompt_for_allow_password_set(c42profile.name)
120+
112121
echo("Profile '{}' has been updated.".format(c42profile.name))
113122

114123

tests/cmds/test_profile.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,22 @@ def test_update_profile_if_user_agrees_and_valid_connection_sets_password(
357357
)
358358

359359

360+
def test_update_profile_when_given_zero_args_prints_error_message(
361+
runner, mock_cliprofile_namespace, profile
362+
):
363+
name = "foo"
364+
profile.name = name
365+
profile.ignore_ssl_errors = False
366+
mock_cliprofile_namespace.get_profile.return_value = profile
367+
result = runner.invoke(cli, ["profile", "update"])
368+
expected = (
369+
"Must provide at least one of `--username`, `--server`, `--password`, "
370+
"or `--disable-ssl-errors` when updating a profile."
371+
)
372+
assert "Profile 'foo' has been updated" not in result.output
373+
assert expected in result.output
374+
375+
360376
def test_delete_profile_warns_if_deleting_default(runner, mock_cliprofile_namespace):
361377
mock_cliprofile_namespace.is_default_profile.return_value = True
362378
result = runner.invoke(cli, ["profile", "delete", "mockdefault"])

0 commit comments

Comments
 (0)