mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Merge pull request #26300 from jfindlay/pw_test
mock pwd function calls in pw_user exec module
This commit is contained in:
commit
0046c6cfed
3 changed files with 35 additions and 13 deletions
|
@ -6,8 +6,9 @@ Manage users with the useradd command
|
|||
# Import python libs
|
||||
try:
|
||||
import pwd
|
||||
HAS_PWD = True
|
||||
except ImportError:
|
||||
pass
|
||||
HAS_PWD = False
|
||||
import logging
|
||||
import copy
|
||||
|
||||
|
@ -26,7 +27,9 @@ def __virtual__():
|
|||
'''
|
||||
Set the user module if the kernel is FreeBSD
|
||||
'''
|
||||
return __virtualname__ if __grains__['kernel'] == 'FreeBSD' else False
|
||||
if HAS_PWD and __grains__['kernel'] == 'FreeBSD':
|
||||
return __virtualname__
|
||||
return False
|
||||
|
||||
|
||||
def _get_gecos(name):
|
||||
|
|
|
@ -9,8 +9,9 @@ import re
|
|||
|
||||
try:
|
||||
import pwd
|
||||
HAS_PWD = True
|
||||
except ImportError:
|
||||
pass
|
||||
HAS_PWD = False
|
||||
import logging
|
||||
import copy
|
||||
|
||||
|
@ -32,10 +33,9 @@ __virtualname__ = 'user'
|
|||
def __virtual__():
|
||||
'''
|
||||
Set the user module if the kernel is Linux, OpenBSD or NetBSD
|
||||
and remove some of the functionality on OS X
|
||||
'''
|
||||
|
||||
if __grains__['kernel'] in ('Linux', 'OpenBSD', 'NetBSD'):
|
||||
if HAS_PWD and __grains__['kernel'] in ('Linux', 'OpenBSD', 'NetBSD'):
|
||||
return __virtualname__
|
||||
return False
|
||||
|
||||
|
|
|
@ -15,7 +15,11 @@ from salttesting.mock import (
|
|||
# Import Salt Libs
|
||||
from salt.modules import pw_user
|
||||
from salt.exceptions import CommandExecutionError
|
||||
import pwd
|
||||
try:
|
||||
import pwd
|
||||
HAS_PWD = True
|
||||
except ImportError:
|
||||
HAS_PWD = False
|
||||
|
||||
|
||||
# Globals
|
||||
|
@ -24,6 +28,7 @@ pw_user.__salt__ = {}
|
|||
pw_user.__context__ = {}
|
||||
|
||||
|
||||
@skipIf(not HAS_PWD, 'These tests can only run on systems with the python pwd module')
|
||||
@skipIf(NO_MOCK, NO_MOCK_REASON)
|
||||
class PwUserTestCase(TestCase):
|
||||
'''
|
||||
|
@ -46,16 +51,21 @@ class PwUserTestCase(TestCase):
|
|||
with patch.dict(pw_user.__salt__, {'cmd.run_all': mock}):
|
||||
self.assertTrue(pw_user.delete('A'), 1)
|
||||
|
||||
@patch('salt.modules.pw_user.__context__', MagicMock(return_value='A'))
|
||||
def test_getent(self):
|
||||
'''
|
||||
Test if user.getent already have a value
|
||||
'''
|
||||
self.assertTrue(pw_user.getent())
|
||||
mock_user = 'saltdude'
|
||||
|
||||
mock = MagicMock(return_value='A')
|
||||
with patch.object(pw_user, 'info', mock):
|
||||
self.assertEqual(pw_user.getent(True)[0], 'A')
|
||||
class MockData(object):
|
||||
pw_name = mock_user
|
||||
|
||||
with patch('pwd.getpwall', MagicMock(return_value=[MockData()])):
|
||||
with patch.dict(pw_user.__context__, {'user.getent': mock_user}):
|
||||
self.assertEqual(pw_user.getent(), mock_user)
|
||||
|
||||
with patch.object(pw_user, 'info', MagicMock(return_value=mock_user)):
|
||||
self.assertEqual(pw_user.getent(True)[0], mock_user)
|
||||
|
||||
def test_chuid(self):
|
||||
'''
|
||||
|
@ -288,13 +298,22 @@ class PwUserTestCase(TestCase):
|
|||
'''
|
||||
Return a list of groups the named user belongs to
|
||||
'''
|
||||
self.assertEqual(pw_user.list_groups('name'), 'A')
|
||||
mock_group = 'saltgroup'
|
||||
|
||||
with patch('salt.utils.get_group_list', MagicMock(return_value=[mock_group])):
|
||||
self.assertEqual(pw_user.list_groups('name'), [mock_group])
|
||||
|
||||
def test_list_users(self):
|
||||
'''
|
||||
Return a list of all users
|
||||
'''
|
||||
self.assertTrue(pw_user.list_users())
|
||||
mock_user = 'saltdude'
|
||||
|
||||
class MockData(object):
|
||||
pw_name = mock_user
|
||||
|
||||
with patch('pwd.getpwall', MagicMock(return_value=[MockData()])):
|
||||
self.assertEqual(pw_user.list_users(), [mock_user])
|
||||
|
||||
def test_rename(self):
|
||||
'''
|
||||
|
|
Loading…
Add table
Reference in a new issue