Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Merged
merged 1 commit into from Sep 30, 2012
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 3 additions & 0 deletions salt/modules/pw_user.py
Expand Up @@ -219,6 +219,9 @@ def list_groups(name):
salt '*' user.list_groups foo salt '*' user.list_groups foo
''' '''
ugrp = set() 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(): for group in grp.getgrall():
if name in group.gr_mem: if name in group.gr_mem:
ugrp.add(group.gr_name) ugrp.add(group.gr_name)
Expand Down
4 changes: 3 additions & 1 deletion salt/modules/useradd.py
Expand Up @@ -379,7 +379,9 @@ def list_groups(name):
salt '*' user.list_groups foo salt '*' user.list_groups foo
''' '''
ugrp = set() 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(): for group in grp.getgrall():
if name in group.gr_mem: if name in group.gr_mem:
ugrp.add(group.gr_name) ugrp.add(group.gr_name)
Expand Down
65 changes: 65 additions & 0 deletions 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)
65 changes: 65 additions & 0 deletions 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)