Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions tabcmd/commands/user/create_users_command.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,7 @@ def run_command(cls, args):
user_obj.site_role = args.role
if args.auth_type:
user_obj.auth_setting = args.auth_type
new_user = TSC.UserItem(user_obj.name)
server.users.add(new_user)
server.users.add(user_obj)
logger.info(_("common.output.succeeded").format(user_obj.name))
number_of_users_added += 1
except Exception as e:
Expand Down
14 changes: 8 additions & 6 deletions tabcmd/commands/user/user_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,14 @@ def to_tsc_user(self) -> TSC.UserItem:


CHOICES: List[List[str]] = [
[],
[],
[],
[], # username
[], # password
[], # display name
["creator", "explorer", "viewer", "unlicensed"], # license
["system", "site", "none", "no"], # admin
["yes", "true", "1", "no", "false", "0"], # publisher
[],
[], # email
[], # auth (validated by TSC)
]

site_roles = [
Expand Down Expand Up @@ -94,7 +95,8 @@ class Column(IntEnum):
PUBLISHER = 5
EMAIL = 6

MAX = 7 # number of columns
AUTH = 7
MAX = 8 # number of columns (username through auth)


class UserCommand(Server):
Expand Down Expand Up @@ -187,7 +189,7 @@ def _validate_item(item: str, possible_values: List[str], column_type) -> None:
if item is None or item == "":
# value can be empty for any column except user, which is checked elsewhere
return
if item in possible_values or possible_values == []:
if item.lower() in possible_values or possible_values == []:
return
raise AttributeError(_("commandlineutils.errors.bad_value").format(column_type, item, possible_values))

Expand Down
12 changes: 12 additions & 0 deletions tests/commands/test_user_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,3 +138,15 @@ def test_get_usernames_from_file(self):
test_data = self._mock_file_content(UserDataTest.usernames)
user_list = UserCommand.get_users_from_file(test_data)
assert user_list[0].name == "valid", user_list

def test_validate_mixed_case_license(self):
# Regression: _validate_item was case-sensitive; tabcmd issue #351
UserCommand._validate_user_or_throw("username, pword, fname, Viewer, None, no, email", UserDataTest.logger)
UserCommand._validate_user_or_throw("username, pword, fname, Creator, Site, yes, email", UserDataTest.logger)
UserCommand._validate_user_or_throw("username, pword, fname, EXPLORER, NONE, YES, email", UserDataTest.logger)

def test_parse_line_preserves_role(self):
# Regression: CreateUsersCommand replaced user_obj with bare TSC.UserItem(name), discarding role/auth
user = UserCommand._parse_line("username, pword, fname, creator, none, yes, email")
assert user is not None
assert user.site_role == "Creator", f"Expected Creator, got {user.site_role}"
Loading