Skip to content

Commit 4998d02

Browse files
author
Juliya Smith
authored
Users fixes (#274)
1 parent e26da51 commit 4998d02

File tree

2 files changed

+63
-11
lines changed

2 files changed

+63
-11
lines changed

src/code42cli/cmds/users.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from code42cli.options import format_option
88
from code42cli.options import sdk_options
99
from code42cli.output_formats import DataFrameOutputFormatter
10+
from code42cli.output_formats import OutputFormat
1011

1112

1213
@click.group(cls=OrderedGroup)
@@ -46,7 +47,12 @@ def list_users(state, org_uid, role_name, active, inactive, format):
4647
if inactive:
4748
active = False
4849
role_id = _get_role_id(state.sdk, role_name) if role_name else None
49-
df = _get_users_dataframe(state.sdk, org_uid, role_id, active)
50+
columns = (
51+
["userUid", "status", "username", "orgUid"]
52+
if format == OutputFormat.TABLE
53+
else None
54+
)
55+
df = _get_users_dataframe(state.sdk, columns, org_uid, role_id, active)
5056
if df.empty:
5157
click.echo("No results found.")
5258
else:
@@ -65,9 +71,10 @@ def _get_role_id(sdk, role_name):
6571
raise Code42CLIError(f"Role with name {role_name} not found.")
6672

6773

68-
def _get_users_dataframe(sdk, org_uid, role_id, active):
74+
def _get_users_dataframe(sdk, columns, org_uid, role_id, active):
6975
users_generator = sdk.users.get_all(active=active, org_uid=org_uid, role_id=role_id)
7076
users_list = []
7177
for page in users_generator:
7278
users_list.extend(page["users"])
73-
return DataFrame.from_records(users_list)
79+
80+
return DataFrame.from_records(users_list, columns=columns)

tests/cmds/test_users.py

Lines changed: 53 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,29 @@
66

77
from code42cli.main import cli
88

9+
910
TEST_ROLE_RETURN_DATA = {
1011
"data": [{"roleName": "Customer Cloud Admin", "roleId": "1234543"}]
1112
}
12-
1313
TEST_USERS_RESPONSE = {
1414
"users": [
1515
{
16-
"userId": 1234,
17-
"userUid": "997962681513153325",
16+
"firstName": "test",
17+
"lastName": "username",
18+
"orgId": 4321,
19+
"orgUid": "44444444",
20+
"orgName": "ORG_NAME",
1821
"status": "Active",
19-
"username": "test_username@code42.com",
22+
"notes": "This is a note.",
23+
"active": True,
24+
"blocked": False,
2025
"creationDate": "2021-03-12T20:07:40.898Z",
2126
"modificationDate": "2021-03-12T20:07:40.938Z",
27+
"userId": 1234,
28+
"username": "test.username@example.com",
29+
"userUid": "911162111513111325",
30+
"invited": False,
31+
"quotaInBytes": 55555,
2232
}
2333
]
2434
}
@@ -51,14 +61,49 @@ def get_available_roles_success(cli_state, get_available_roles_response):
5161
cli_state.sdk.users.get_available_roles.return_value = get_available_roles_response
5262

5363

54-
def test_list_outputs_appropriate_columns(runner, cli_state, get_all_users_success):
55-
result = runner.invoke(cli, ["users", "list"], obj=cli_state)
64+
def test_list_when_non_table_format_outputs_expected_columns(
65+
runner, cli_state, get_all_users_success
66+
):
67+
result = runner.invoke(cli, ["users", "list", "-f", "CSV"], obj=cli_state)
68+
assert "firstName" in result.output
69+
assert "lastName" in result.output
70+
assert "orgId" in result.output
71+
assert "orgUid" in result.output
72+
assert "orgName" in result.output
73+
assert "status" in result.output
74+
assert "notes" in result.output
75+
assert "active" in result.output
76+
assert "blocked" in result.output
77+
assert "creationDate" in result.output
78+
assert "modificationDate" in result.output
5679
assert "userId" in result.output
80+
assert "username" in result.output
5781
assert "userUid" in result.output
82+
assert "invited" in result.output
83+
assert "quotaInBytes" in result.output
84+
85+
86+
def test_list_when_table_format_outputs_expected_columns(
87+
runner, cli_state, get_all_users_success
88+
):
89+
result = runner.invoke(cli, ["users", "list", "-f", "TABLE"], obj=cli_state)
90+
assert "orgUid" in result.output
5891
assert "status" in result.output
5992
assert "username" in result.output
60-
assert "creationDate" in result.output
61-
assert "modificationDate" in result.output
93+
assert "userUid" in result.output
94+
95+
assert "firstName" not in result.output
96+
assert "lastName" not in result.output
97+
assert "orgId" not in result.output
98+
assert "orgName" not in result.output
99+
assert "notes" not in result.output
100+
assert "active" not in result.output
101+
assert "blocked" not in result.output
102+
assert "creationDate" not in result.output
103+
assert "modificationDate" not in result.output
104+
assert "userId" not in result.output
105+
assert "invited" not in result.output
106+
assert "quotaInBytes" not in result.output
62107

63108

64109
def test_list_users_calls_users_get_all_with_expected_role_id(

0 commit comments

Comments
 (0)