Skip to content

Commit

Permalink
add command to delete users
Browse files Browse the repository at this point in the history
  • Loading branch information
plaharanne committed Aug 4, 2023
1 parent d466bc1 commit e2a5d90
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 2 deletions.
2 changes: 2 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ Changes for croud
Unreleased
==========

- Added support for deleting users.

1.5.0 - 2023/07/27
==================

Expand Down
13 changes: 12 additions & 1 deletion croud/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@
subscriptions_list,
)
from croud.tools.spinner import HALO
from croud.users.commands import users_list
from croud.users.commands import users_delete, users_list
from croud.users.roles.commands import roles_list

# Arguments common to all import-job create commands
Expand Down Expand Up @@ -1090,6 +1090,17 @@
},
},
},
"delete": {
"help": "Delete the specified user.",
"extra_args": [
Argument(
"--user-id", type=str, required=True,
help="The user ID to use.",
),
Argument("-y", "--yes", action="store_true", default=False)
],
"resolver": users_delete,
},
},
},
"api-keys": {
Expand Down
17 changes: 17 additions & 0 deletions croud/users/commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
from croud.api import Client
from croud.config import get_output_format
from croud.printer import print_response, print_warning
from croud.util import require_confirmation


def transform_roles_list(key):
Expand Down Expand Up @@ -50,3 +51,19 @@ def users_list(args: Namespace) -> None:
"project_roles": transform_roles_list("project_id"),
},
)


@require_confirmation(
"Are you sure you want to delete the user?",
cancel_msg="User deletion cancelled.",
)
def users_delete(args: Namespace) -> None:
client = Client.from_args(args)

data, errors = client.delete(f"/api/v2/users/{args.user_id}/")
print_response(
data=data,
errors=errors,
success_message="User deleted.",
output_fmt=get_output_format(args),
)
16 changes: 15 additions & 1 deletion tests/commands/test_users.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

from croud.api import Client, RequestMethod
from croud.users.commands import transform_roles_list
from tests.util import assert_rest, call_command
from tests.util import assert_rest, call_command, gen_uuid

pytestmark = pytest.mark.usefixtures("config")

Expand Down Expand Up @@ -90,3 +90,17 @@ def test_transform_roles_list(mock_request):
"project-2: project_member,\n"
"project-3: project_member"
)


@mock.patch.object(Client, "request", return_value=(None, {}))
def test_users_delete(mock_request, capsys):
user_id = gen_uuid()
with mock.patch("builtins.input", side_effect=["Y"]) as mock_input:
call_command("croud", "users", "delete", "--user-id", user_id)
assert_rest(mock_request, RequestMethod.DELETE, f"/api/v2/users/{user_id}/")
mock_input.assert_called_once_with(
"Are you sure you want to delete the user? [yN] "
)

_, err_output = capsys.readouterr()
assert "User deleted." in err_output

0 comments on commit e2a5d90

Please sign in to comment.