mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Merge branch '2017.7' into bugfix-grain-virtual_subtype
This commit is contained in:
commit
8d12770951
3 changed files with 83 additions and 27 deletions
|
@ -8,9 +8,11 @@ import random
|
|||
# Import Salt Testing libs
|
||||
from tests.support.case import ModuleCase
|
||||
from tests.support.helpers import destructiveTest, skip_if_not_root
|
||||
from tests.support.unit import skipIf
|
||||
|
||||
# Import 3rd-party libs
|
||||
from salt.ext.six.moves import range
|
||||
import salt.utils
|
||||
|
||||
|
||||
@skip_if_not_root
|
||||
|
@ -30,13 +32,13 @@ class GroupModuleTest(ModuleCase):
|
|||
self._no_user = self.__random_string()
|
||||
self._group = self.__random_string()
|
||||
self._no_group = self.__random_string()
|
||||
self._gid = 64989
|
||||
self._new_gid = 64998
|
||||
os_grain = self.run_function('grains.item', ['kernel'])
|
||||
if os_grain['kernel'] not in 'Linux':
|
||||
self.os_grain = self.run_function('grains.item', ['kernel'])
|
||||
self._gid = 64989 if 'Windows' not in self.os_grain['kernel'] else None
|
||||
self._new_gid = 64998 if 'Windows' not in self.os_grain['kernel'] else None
|
||||
if self.os_grain['kernel'] not in ('Linux', 'Windows'):
|
||||
self.skipTest(
|
||||
'Test not applicable to \'{kernel}\' kernel'.format(
|
||||
**os_grain
|
||||
**self.os_grain
|
||||
)
|
||||
)
|
||||
|
||||
|
@ -62,12 +64,18 @@ class GroupModuleTest(ModuleCase):
|
|||
Test the add group function
|
||||
'''
|
||||
# add a new group
|
||||
self.assertTrue(self.run_function('group.add', [self._group, self._gid]))
|
||||
self.assertTrue(self.run_function('group.add', [self._group], gid=self._gid))
|
||||
group_info = self.run_function('group.info', [self._group])
|
||||
self.assertEqual(group_info['name'], self._group)
|
||||
self.assertEqual(group_info['gid'], self._gid)
|
||||
self.assertEqual(group_info['name'], self._group)
|
||||
# try adding the group again
|
||||
self.assertFalse(self.run_function('group.add', [self._group, self._gid]))
|
||||
if self.os_grain['kernel'] == 'Windows':
|
||||
add_group = self.run_function('group.add', [self._group], gid=self._gid)
|
||||
self.assertEqual(add_group['result'], None)
|
||||
self.assertEqual(add_group['comment'], 'The group {0} already exists.'.format(self._group))
|
||||
self.assertEqual(add_group['changes'], [])
|
||||
else:
|
||||
self.assertFalse(self.run_function('group.add', [self._group], gid=self._gid))
|
||||
|
||||
def test_delete(self):
|
||||
'''
|
||||
|
@ -79,26 +87,32 @@ class GroupModuleTest(ModuleCase):
|
|||
self.assertTrue(self.run_function('group.delete', [self._group]))
|
||||
|
||||
# group does not exist
|
||||
self.assertFalse(self.run_function('group.delete', [self._no_group]))
|
||||
if self.os_grain['kernel'] == 'Windows':
|
||||
del_group = self.run_function('group.delete', [self._no_group])
|
||||
self.assertEqual(del_group['changes'], [])
|
||||
self.assertEqual(del_group['comment'], 'The group {0} does not exists.'.format(self._no_group))
|
||||
else:
|
||||
self.assertFalse(self.run_function('group.delete', [self._no_group]))
|
||||
|
||||
def test_info(self):
|
||||
'''
|
||||
Test the info group function
|
||||
'''
|
||||
self.run_function('group.add', [self._group, self._gid])
|
||||
self.run_function('group.add', [self._group], gid=self._gid)
|
||||
self.run_function('user.add', [self._user])
|
||||
self.run_function('group.adduser', [self._group, self._user])
|
||||
group_info = self.run_function('group.info', [self._group])
|
||||
|
||||
self.assertEqual(group_info['name'], self._group)
|
||||
self.assertEqual(group_info['gid'], self._gid)
|
||||
self.assertIn(self._user, group_info['members'])
|
||||
self.assertIn(self._user, str(group_info['members']))
|
||||
|
||||
@skipIf(salt.utils.is_windows(), 'gid test skipped on windows')
|
||||
def test_chgid(self):
|
||||
'''
|
||||
Test the change gid function
|
||||
'''
|
||||
self.run_function('group.add', [self._group, self._gid])
|
||||
self.run_function('group.add', [self._group], gid=self._gid)
|
||||
self.assertTrue(self.run_function('group.chgid', [self._group, self._new_gid]))
|
||||
group_info = self.run_function('group.info', [self._group])
|
||||
self.assertEqual(group_info['gid'], self._new_gid)
|
||||
|
@ -107,47 +121,55 @@ class GroupModuleTest(ModuleCase):
|
|||
'''
|
||||
Test the add user to group function
|
||||
'''
|
||||
self.run_function('group.add', [self._group, self._gid])
|
||||
self.run_function('group.add', [self._group], gid=self._gid)
|
||||
self.run_function('user.add', [self._user])
|
||||
self.assertTrue(self.run_function('group.adduser', [self._group, self._user]))
|
||||
group_info = self.run_function('group.info', [self._group])
|
||||
self.assertIn(self._user, group_info['members'])
|
||||
# try add a non existing user
|
||||
self.assertFalse(self.run_function('group.adduser', [self._group, self._no_user]))
|
||||
# try add a user to non existing group
|
||||
self.assertFalse(self.run_function('group.adduser', [self._no_group, self._user]))
|
||||
# try add a non existing user to a non existing group
|
||||
self.assertFalse(self.run_function('group.adduser', [self._no_group, self._no_user]))
|
||||
self.assertIn(self._user, str(group_info['members']))
|
||||
if self.os_grain['kernel'] == 'Windows':
|
||||
no_group = self.run_function('group.adduser', [self._no_group, self._no_user])
|
||||
no_user = self.run_function('group.adduser', [self._group, self._no_user])
|
||||
funcs = [no_group, no_user]
|
||||
for func in funcs:
|
||||
self.assertIn('Fail', func['comment'])
|
||||
self.assertFalse(func['result'])
|
||||
else:
|
||||
# try add a non existing user
|
||||
self.assertFalse(self.run_function('group.adduser', [self._group, self._no_user]))
|
||||
# try add a user to non existing group
|
||||
self.assertFalse(self.run_function('group.adduser', [self._no_group, self._user]))
|
||||
# try add a non existing user to a non existing group
|
||||
self.assertFalse(self.run_function('group.adduser', [self._no_group, self._no_user]))
|
||||
|
||||
def test_deluser(self):
|
||||
'''
|
||||
Test the delete user from group function
|
||||
'''
|
||||
self.run_function('group.add', [self._group, self._gid])
|
||||
self.run_function('group.add', [self._group], gid=self._gid)
|
||||
self.run_function('user.add', [self._user])
|
||||
self.run_function('group.adduser', [self._group, self._user])
|
||||
self.assertTrue(self.run_function('group.deluser', [self._group, self._user]))
|
||||
group_info = self.run_function('group.info', [self._group])
|
||||
self.assertNotIn(self._user, group_info['members'])
|
||||
self.assertNotIn(self._user, str(group_info['members']))
|
||||
|
||||
def test_members(self):
|
||||
'''
|
||||
Test the members function
|
||||
'''
|
||||
self.run_function('group.add', [self._group, self._gid])
|
||||
self.run_function('group.add', [self._group], gid=self._gid)
|
||||
self.run_function('user.add', [self._user])
|
||||
self.run_function('user.add', [self._user1])
|
||||
m = '{0},{1}'.format(self._user, self._user1)
|
||||
self.assertTrue(self.run_function('group.members', [self._group, m]))
|
||||
group_info = self.run_function('group.info', [self._group])
|
||||
self.assertIn(self._user, group_info['members'])
|
||||
self.assertIn(self._user1, group_info['members'])
|
||||
self.assertIn(self._user, str(group_info['members']))
|
||||
self.assertIn(self._user1, str(group_info['members']))
|
||||
|
||||
def test_getent(self):
|
||||
'''
|
||||
Test the getent function
|
||||
'''
|
||||
self.run_function('group.add', [self._group, self._gid])
|
||||
self.run_function('group.add', [self._group], gid=self._gid)
|
||||
self.run_function('user.add', [self._user])
|
||||
self.run_function('group.adduser', [self._group, self._user])
|
||||
ginfo = self.run_function('user.getent')
|
||||
|
|
|
@ -13,7 +13,10 @@ from tests.support.mock import patch, NO_MOCK, NO_MOCK_REASON
|
|||
|
||||
# Import Salt libs
|
||||
from salt import client
|
||||
from salt.exceptions import EauthAuthenticationError, SaltInvocationError, SaltClientError
|
||||
import salt.utils
|
||||
from salt.exceptions import (
|
||||
EauthAuthenticationError, SaltInvocationError, SaltClientError, SaltReqTimeoutError
|
||||
)
|
||||
|
||||
|
||||
@skipIf(NO_MOCK, NO_MOCK_REASON)
|
||||
|
@ -67,7 +70,13 @@ class LocalClientTestCase(TestCase,
|
|||
kwarg=None, tgt_type='list',
|
||||
ret='')
|
||||
|
||||
@skipIf(salt.utils.is_windows(), 'Not supported on Windows')
|
||||
def test_pub(self):
|
||||
'''
|
||||
Tests that the client cleanly returns when the publisher is not running
|
||||
|
||||
Note: Requires ZeroMQ's IPC transport which is not supported on windows.
|
||||
'''
|
||||
if self.get_config('minion')['transport'] != 'zeromq':
|
||||
self.skipTest('This test only works with ZeroMQ')
|
||||
# Make sure we cleanly return if the publisher isn't running
|
||||
|
@ -83,3 +92,27 @@ class LocalClientTestCase(TestCase,
|
|||
self.assertRaises(SaltInvocationError,
|
||||
self.client.pub,
|
||||
'non_existent_group', 'test.ping', tgt_type='nodegroup')
|
||||
|
||||
@skipIf(not salt.utils.is_windows(), 'Windows only test')
|
||||
def test_pub_win32(self):
|
||||
'''
|
||||
Tests that the client raises a timeout error when using ZeroMQ's TCP
|
||||
transport and publisher is not running.
|
||||
|
||||
Note: Requires ZeroMQ's TCP transport, this is only the default on Windows.
|
||||
'''
|
||||
if self.get_config('minion')['transport'] != 'zeromq':
|
||||
self.skipTest('This test only works with ZeroMQ')
|
||||
# Make sure we cleanly return if the publisher isn't running
|
||||
with patch('os.path.exists', return_value=False):
|
||||
self.assertRaises(SaltReqTimeoutError, lambda: self.client.pub('*', 'test.ping'))
|
||||
|
||||
# Check nodegroups behavior
|
||||
with patch('os.path.exists', return_value=True):
|
||||
with patch.dict(self.client.opts,
|
||||
{'nodegroups':
|
||||
{'group1': 'L@foo.domain.com,bar.domain.com,baz.domain.com or bl*.domain.com'}}):
|
||||
# Do we raise an exception if the nodegroup can't be matched?
|
||||
self.assertRaises(SaltInvocationError,
|
||||
self.client.pub,
|
||||
'non_existent_group', 'test.ping', tgt_type='nodegroup')
|
||||
|
|
|
@ -10,6 +10,7 @@ integration.modules.test_data
|
|||
integration.modules.test_disk
|
||||
integration.modules.test_git
|
||||
integration.modules.test_grains
|
||||
integration.modules.test_groupadd
|
||||
integration.modules.test_hosts
|
||||
integration.modules.test_mine
|
||||
integration.modules.test_pillar
|
||||
|
|
Loading…
Add table
Reference in a new issue