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
6 changes: 6 additions & 0 deletions tabcmd/commands/group/create_group_command.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from tabcmd.commands.auth.session import Session
from tabcmd.commands.constants import Errors
from tabcmd.commands.server import Server
from tabcmd.commands.user.user_data import UserCommand
from tabcmd.execution.localize import _
from tabcmd.execution.logger_config import log

Expand All @@ -19,6 +20,7 @@ class CreateGroupCommand(Server):
def define_args(create_group_parser):
args_group = create_group_parser.add_argument_group(title=CreateGroupCommand.name)
args_group.add_argument("name")
UserCommand.set_role_arg(args_group)

@classmethod
def run_command(cls, args):
Expand All @@ -29,6 +31,10 @@ def run_command(cls, args):
try:
logger.info(_("creategroup.status").format(args.name))
new_group = TSC.GroupItem(args.name)
if getattr(args, "role", None):
# Classic parity: --role/-r sets the group's default site role, so
# users added later without an explicit role inherit this one.
new_group.minimum_site_role = args.role
server.groups.create(new_group)
logger.info(_("common.output.succeeded"))
except Exception as e:
Expand Down
16 changes: 16 additions & 0 deletions tests/parsers/test_parser_create_group.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,19 @@ def test_creategroup_parser_missing_all_args(self):
mock_args = [commandname]
with self.assertRaises(SystemExit):
self.parser_under_test.parse_args(mock_args)

def test_creategroup_parser_role_flag(self):
args = self.parser_under_test.parse_args([commandname, "name", "--role", "Viewer"])
assert args.role == "Viewer"

def test_creategroup_parser_role_short_flag(self):
args = self.parser_under_test.parse_args([commandname, "name", "-r", "Explorer"])
assert args.role == "Explorer"

def test_creategroup_parser_role_case_insensitive(self):
args = self.parser_under_test.parse_args([commandname, "name", "--role", "creator"])
assert args.role == "Creator"

def test_creategroup_parser_role_optional(self):
args = self.parser_under_test.parse_args([commandname, "name"])
assert args.role is None