Skip to content

Commit 6a1426d

Browse files
committed
tests/system/tests/test_groupmod.py: add test for groupmod -U with user list
Add comprehensive test for the groupmod -U option when provided with a list of users to set group membership. This test verifies: - Setting initial group membership with multiple users - Proper membership verification in both group and gshadow entries - Updating group membership by modifying the user list - Correct handling of membership changes in group databases Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
1 parent 390cbf7 commit 6a1426d

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

tests/system/tests/test_groupmod.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,63 @@ def test_groupmod__u_option_empty_string_clears_members(shadow: Shadow):
6969
assert gshadow_entry is not None, "Group should be found"
7070
assert gshadow_entry.name == "tgroup", "Incorrect groupname"
7171
assert not gshadow_entry.members, "Group should have no members"
72+
73+
74+
@pytest.mark.topology(KnownTopology.Shadow)
75+
def test_groupmod__u_option_with_user_list(shadow: Shadow):
76+
"""
77+
:title: Test groupmod -U option with user list to set group membership
78+
:setup:
79+
1. Create three test users
80+
2. Create test group
81+
:steps:
82+
1. Set group membership to all three users using groupmod -U
83+
2. Verify all three users are members in group and gshadow entry
84+
3. Modify group membership to only two users using groupmod -U
85+
4. Verify updated membership in group and gshadow entries
86+
:expectedresults:
87+
1. Initial groupmod -U command sets membership correctly for all three users
88+
2. group and gshadow entries show correct membership
89+
3. Second groupmod -U command updates membership correctly
90+
4. Updated group and gshadow entries reflect new membership
91+
:customerscenario: False
92+
"""
93+
shadow.useradd("tuser1")
94+
shadow.useradd("tuser2")
95+
shadow.useradd("tuser3")
96+
shadow.groupadd("tgroup")
97+
shadow.groupmod("-U tuser1,tuser2,tuser3 tgroup")
98+
99+
group_entry = shadow.tools.getent.group("tgroup")
100+
assert group_entry is not None, "Group should be found"
101+
assert group_entry.name == "tgroup", "Incorrect groupname"
102+
assert len(group_entry.members) == 3, f"Group should have 3 members, but has {len(group_entry.members)}"
103+
assert "tuser1" in group_entry.members, "tuser1 should be a member of tgroup"
104+
assert "tuser2" in group_entry.members, "tuser2 should be a member of tgroup"
105+
assert "tuser3" in group_entry.members, "tuser3 should be a member of tgroup"
106+
107+
if shadow.host.features["gshadow"]:
108+
gshadow_entry = shadow.tools.getent.gshadow("tgroup")
109+
assert gshadow_entry is not None, "Group should be found"
110+
assert gshadow_entry.name == "tgroup", "Incorrect groupname"
111+
assert len(gshadow_entry.members) == 3, f"Group should have 3 members, but has {len(gshadow_entry.members)}"
112+
assert "tuser1" in gshadow_entry.members, "tuser1 should be a member of tgroup"
113+
assert "tuser2" in gshadow_entry.members, "tuser2 should be a member of tgroup"
114+
assert "tuser3" in gshadow_entry.members, "tuser3 should be a member of tgroup"
115+
116+
shadow.groupmod("-U tuser1,tuser2 tgroup")
117+
118+
group_entry = shadow.tools.getent.group("tgroup")
119+
assert group_entry is not None, "Group should be found"
120+
assert group_entry.name == "tgroup", "Incorrect groupname"
121+
assert len(group_entry.members) == 2, f"Group should have 2 members, but has {len(group_entry.members)}"
122+
assert "tuser1" in group_entry.members, "tuser1 should be a member of tgroup"
123+
assert "tuser2" in group_entry.members, "tuser2 should be a member of tgroup"
124+
125+
if shadow.host.features["gshadow"]:
126+
gshadow_entry = shadow.tools.getent.gshadow("tgroup")
127+
assert gshadow_entry is not None, "Group should be found"
128+
assert gshadow_entry.name == "tgroup", "Incorrect groupname"
129+
assert len(gshadow_entry.members) == 2, f"Group should have 2 members, but has {len(gshadow_entry.members)}"
130+
assert "tuser1" in gshadow_entry.members, "tuser1 should be a member of tgroup"
131+
assert "tuser2" in gshadow_entry.members, "tuser2 should be a member of tgroup"

0 commit comments

Comments
 (0)