Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

Include primary group into `user.info` groups. Fixes #2137. #2138

Merged
merged 1 commit into from

2 participants

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
This page is out of date. Refresh to see the latest.
View
3  salt/modules/pw_user.py
@@ -219,6 +219,9 @@ def list_groups(name):
salt '*' user.list_groups foo
'''
ugrp = set()
+ # Add the primary user's group
+ ugrp.add(grp.getgrgid(pwd.getpwnam(name).pw_gid).gr_name)
+ # Now, all other groups the user belongs to
for group in grp.getgrall():
if name in group.gr_mem:
ugrp.add(group.gr_name)
View
4 salt/modules/useradd.py
@@ -379,7 +379,9 @@ def list_groups(name):
salt '*' user.list_groups foo
'''
ugrp = set()
-
+ # Add the primary user's group
+ ugrp.add(grp.getgrgid(pwd.getpwnam(name).pw_gid).gr_name)
+ # Now, all other groups the user belongs to
for group in grp.getgrall():
if name in group.gr_mem:
ugrp.add(group.gr_name)
View
65 tests/integration/modules/pw_user.py
@@ -0,0 +1,65 @@
+# Import python libs
+import string
+import random
+
+# Import salt libs
+import integration
+from saltunittest import destructiveTest
+
+
+class UseraddModuleTest(integration.ModuleCase):
+
+ def setUp(self):
+ super(UseraddModuleTest, self).setUp()
+ os_grain = self.run_function('grains.item', ['kernel'])
+ if os_grain != 'FreeBSD':
+ self.skipTest(
+ 'Test not applicable to \'{0}\' kernel'.format(
+ os_grain
+ )
+ )
+
+ def __random_string(self, size=6):
+ return ''.join(
+ random.choice(string.ascii_uppercase + string.digits)
+ for x in range(size)
+ )
+
+ @destructiveTest
+ def test_groups_includes_primary(self):
+ # Let's create a user, which usually creates the group matching the
+ # name
+ uname = self.__random_string()
+ if self.run_function('user.add', [uname]) is not True:
+ # Skip because creating is not what we're testing here
+ self.skipTest('Failed to create user')
+
+ uinfo = self.run_function('user.info', [uname])
+ self.assertIn(uname, uinfo['groups'])
+
+ # This uid is available, store it
+ uid = uinfo['uid']
+
+ self.run_function('user.delete', [uname, True, True])
+
+ # Now, a weird group id
+ gname = self.__random_string()
+ if self.run_function('group.add', [gname]) is not True:
+ self.skipTest('Failed to create group')
+
+ ginfo = self.run_function('group.info', [gname])
+
+ # And create the user with that gid
+ if self.run_function('user.add', [uname, uid, ginfo['gid']]) is False:
+ # Skip because creating is not what we're testing here
+ self.skipTest('Failed to create user')
+
+ uinfo = self.run_function('user.info', [uname])
+ self.assertIn(gname, uinfo['groups'])
+
+ self.run_function('user.delete', [uname, True, True])
+
+
+if __name__ == '__main__':
+ from integration import run_tests
+ run_tests(VirtualenvModuleTest)
View
65 tests/integration/modules/useradd.py
@@ -0,0 +1,65 @@
+# Import python libs
+import string
+import random
+
+# Import salt libs
+import integration
+from saltunittest import destructiveTest
+
+
+class UseraddModuleTest(integration.ModuleCase):
+
+ def setUp(self):
+ super(UseraddModuleTest, self).setUp()
+ os_grain = self.run_function('grains.item', ['kernel'])
+ if os_grain not in ('Linux', 'Darwin'):
+ self.skipTest(
+ 'Test not applicable to \'{0}\' kernel'.format(
+ os_grain
+ )
+ )
+
+ def __random_string(self, size=6):
+ return ''.join(
+ random.choice(string.ascii_uppercase + string.digits)
+ for x in range(size)
+ )
+
+ @destructiveTest
+ def test_groups_includes_primary(self):
+ # Let's create a user, which usually creates the group matching the
+ # name
+ uname = self.__random_string()
+ if self.run_function('user.add', [uname]) is not True:
+ # Skip because creating is not what we're testing here
+ self.skipTest('Failed to create user')
+
+ uinfo = self.run_function('user.info', [uname])
+ self.assertIn(uname, uinfo['groups'])
+
+ # This uid is available, store it
+ uid = uinfo['uid']
+
+ self.run_function('user.delete', [uname, True, True])
+
+ # Now, a weird group id
+ gname = self.__random_string()
+ if self.run_function('group.add', [gname]) is not True:
+ self.skipTest('Failed to create group')
+
+ ginfo = self.run_function('group.info', [gname])
+
+ # And create the user with that gid
+ if self.run_function('user.add', [uname, uid, ginfo['gid']]) is False:
+ # Skip because creating is not what we're testing here
+ self.skipTest('Failed to create user')
+
+ uinfo = self.run_function('user.info', [uname])
+ self.assertIn(gname, uinfo['groups'])
+
+ self.run_function('user.delete', [uname, True, True])
+
+
+if __name__ == '__main__':
+ from integration import run_tests
+ run_tests(VirtualenvModuleTest)
Something went wrong with that request. Please try again.