]> git.ipfire.org Git - thirdparty/shadow.git/commitdiff
tests/system/tests/test_gpasswd.py: add user to group membership as non-root user
authorIker Pedrosa <ipedrosa@redhat.com>
Wed, 10 Sep 2025 10:58:24 +0000 (12:58 +0200)
committerSerge Hallyn <serge@hallyn.com>
Wed, 25 Mar 2026 02:33:15 +0000 (21:33 -0500)
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
tests/system/tests/test_gpasswd.py

index a991938550ed5fa3bdecb06bb729bf179aa34acb..43b7dd650c0d8ace95b90cadcf88bfd155aba79e 100644 (file)
@@ -65,3 +65,38 @@ def test_gpasswd__add_user_group_administrator_as_root(shadow: Shadow):
     assert gshadow_entry is not None, "Group should be found"
     assert gshadow_entry.name == "tgroup", "Incorrect groupname"
     assert "tuser" in gshadow_entry.administrators, "User should be administrator of group"
+
+
+@pytest.mark.topology(KnownTopology.Shadow)
+def test_gpasswd__add_user_group_member_as_non_root(shadow: Shadow):
+    """
+    :title: Add user to group membership as non-root user
+    :setup:
+        1. Create two test users and group
+        2. Add first user as group administrator
+    :steps:
+        1. Add second user as group member using gpasswd as first user
+        2. Check group and gshadow entry
+    :expectedresults:
+        1. Second user is added as group member
+        2. group and gshadow entry values are correct
+    :customerscenario: False
+    """
+    shadow.useradd("tadmin")
+    shadow.useradd("tmember")
+    shadow.groupadd("tgroup")
+
+    shadow.gpasswd("-A tadmin tgroup")
+    shadow.gpasswd("-a tmember tgroup", run_as="tadmin")
+
+    group_entry = shadow.tools.getent.group("tgroup")
+    assert group_entry is not None, "Group should be found"
+    assert group_entry.name == "tgroup", "Incorrect groupname"
+    assert "tmember" in group_entry.members, "User should be member of group"
+
+    if shadow.host.features["gshadow"]:
+        gshadow_entry = shadow.tools.getent.gshadow("tgroup")
+        assert gshadow_entry is not None, "Group should be found"
+        assert gshadow_entry.name == "tgroup", "Incorrect groupname"
+        assert "tadmin" in gshadow_entry.administrators, "tadmin should be administrator of group"
+        assert "tmember" in gshadow_entry.members, "tmember should be member of group"