Skip to content

Commit

Permalink
YDA-5612: fix for multiple roles in suffix columns
Browse files Browse the repository at this point in the history
This fixes processing of CSV files for the group import script that
have multiple role columns with legacy format suffixes (e.g.
manager:manager1, manager:manager2)
  • Loading branch information
stsnel committed Feb 28, 2024
1 parent 85a1aff commit 2cda73e
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 3 deletions.
58 changes: 58 additions & 0 deletions unit-tests/test_importgroups.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,33 @@ def test_fully_filled_csv_line_1_9(self):
self.assertTupleEqual(expected, result)
self.assertIsNone(error_msg)

def test_fully_filled_csv_line_1_9_multi_role(self):
args = {"offline_check": True}
d = {
"category": ["test-automation"],
"subcategory": ["initial"],
"groupname": ["groupteama"],
"manager": ["m.manager@yoda.dev", "n.manager@yoda.dev"],
"member": ["p.member@yoda.dev", "q.member@yoda.dev"],
"viewer": ["m.viewer@yoda.dev", "n.viewer@yoda.dev"],
"expiration_date": ["2030-01-01"],
"schema_id": ["default-3"],
}
expected = (
"test-automation",
"initial",
"research-groupteama",
["m.manager@yoda.dev", "n.manager@yoda.dev"],
["p.member@yoda.dev", "q.member@yoda.dev"],
["m.viewer@yoda.dev", "n.viewer@yoda.dev"],
"default-3",
"2030-01-01",
)
result, error_msg = _process_csv_line(d, args, "1.9")
self.assertTupleEqual(expected, result)
self.assertIsNone(error_msg)


def test_fully_filled_csv_line_1_9_with_suffixes(self):
# Confirm support the old csv header format still (with ":nicknameofuser")
args = {"offline_check": True}
Expand Down Expand Up @@ -75,6 +102,37 @@ def test_fully_filled_csv_line_1_9_with_suffixes(self):
self.assertTupleEqual(expected, result)
self.assertIsNone(error_msg)

def test_fully_filled_csv_line_1_9_with_suffixes_multi_role(self):
# Confirm support the old csv header format still (with ":nicknameofuser")
args = {"offline_check": True}
d = {
"category": ["test-automation"],
"subcategory": ["initial"],
"groupname": ["groupteama"],
"manager:alice": ["m.manager@yoda.dev"],
"manager:andy": ["n.manager@yoda.dev"],
"member:bob": ["p.member@yoda.dev"],
"member:bella": ["q.member@yoda.dev"],
"viewer:eve": ["m.viewer@yoda.dev"],
"viewer:emma": ["n.viewer@yoda.dev"],
"expiration_date": ["2030-01-01"],
"schema_id": ["default-3"],
}
expected = (
"test-automation",
"initial",
"research-groupteama",
["m.manager@yoda.dev", "n.manager@yoda.dev"],
["p.member@yoda.dev", "q.member@yoda.dev"],
["m.viewer@yoda.dev", "n.viewer@yoda.dev"],
"default-3",
"2030-01-01",
)
result, error_msg = _process_csv_line(d, args, "1.9")
self.assertTupleEqual(expected, result)
self.assertIsNone(error_msg)


def test_missing_fields_1_9(self):
args = {"offline_check": True}
# No schema id or expiration date
Expand Down
6 changes: 3 additions & 3 deletions yclienttools/importgroups.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,11 +159,11 @@ def _process_csv_line(line, args, yoda_version):
return None, '"{}" is not a valid username.'.format(item_list[i])

if column_name.lower() == 'manager' or column_name.lower().startswith('manager:'):
managers = item_list
managers.extend(item_list)
elif column_name.lower() == 'member' or column_name.lower().startswith('member:'):
members = item_list
members.extend(item_list)
elif column_name.lower() == 'viewer' or column_name.lower().startswith('viewer:'):
viewers = item_list
viewers.extend(item_list)

# perform additional data validations
if len(managers) == 0:
Expand Down

0 comments on commit 2cda73e

Please # to comment.