mirror of
https://github.com/valitydev/salt.git
synced 2024-11-08 01:18:58 +00:00
6b0921e5ba
mock = MagicMock(return_value='') works for functions: here mock() will return the value (empty string). But mock returns the MagicMock object. Not sure why but it worked in Py2, but in Py3 os.path.join(mock, 'something'), for instance, returns an error. Fixed the issues by avoiding of using mocks where we can use simple strings.
92 lines
3.7 KiB
Python
92 lines
3.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
'''
|
|
:codeauthor: :email:`Jayesh Kariya <jayeshk@saltstack.com>`
|
|
'''
|
|
# Import Python libs
|
|
from __future__ import absolute_import
|
|
import os
|
|
import shutil
|
|
import uuid
|
|
|
|
# Import Salt Testing Libs
|
|
from tests.support.mixins import LoaderModuleMockMixin
|
|
from tests.support.unit import skipIf, TestCase
|
|
from tests.support.mock import (
|
|
NO_MOCK,
|
|
NO_MOCK_REASON,
|
|
MagicMock,
|
|
patch)
|
|
|
|
|
|
# Import Salt Libs
|
|
import salt.utils
|
|
import salt.utils.odict
|
|
import salt.modules.seed as seed
|
|
|
|
|
|
@skipIf(NO_MOCK, NO_MOCK_REASON)
|
|
class SeedTestCase(TestCase, LoaderModuleMockMixin):
|
|
'''
|
|
Test cases for salt.modules.seed
|
|
'''
|
|
def setup_loader_modules(self):
|
|
return {seed: {}}
|
|
|
|
def test_mkconfig_odict(self):
|
|
with patch.dict(seed.__opts__,
|
|
{'master': 'foo'}):
|
|
ddd = salt.utils.odict.OrderedDict()
|
|
ddd['b'] = 'b'
|
|
ddd['a'] = 'b'
|
|
data = seed.mkconfig(ddd, approve_key=False)
|
|
with salt.utils.fopen(data['config']) as fic:
|
|
fdata = fic.read()
|
|
self.assertEqual(fdata, 'b: b\na: b\nmaster: foo\n')
|
|
|
|
def test_prep_bootstrap(self):
|
|
'''
|
|
Test to update and get the random script to a random place
|
|
'''
|
|
with patch.dict(seed.__salt__,
|
|
{'config.gather_bootstrap_script': MagicMock(return_value='BS_PATH/BS')}):
|
|
with patch.object(uuid, 'uuid4', return_value='UUID'):
|
|
with patch.object(os.path, 'exists', return_value=True):
|
|
with patch.object(os, 'chmod', return_value=None):
|
|
with patch.object(shutil, 'copy', return_value=None):
|
|
self.assertEqual(seed.prep_bootstrap('MPT'), ('MPT/tmp/UUID/BS', '/tmp/UUID'))
|
|
self.assertEqual(seed.prep_bootstrap('/MPT'), ('/MPT/tmp/UUID/BS', '/tmp/UUID'))
|
|
|
|
def test_apply_(self):
|
|
'''
|
|
Test to seed a location (disk image, directory, or block device)
|
|
with the minion config, approve the minion's key, and/or install
|
|
salt-minion.
|
|
'''
|
|
mock = MagicMock(side_effect=[False, {'type': 'type',
|
|
'target': 'target'},
|
|
{'type': 'type', 'target': 'target'},
|
|
{'type': 'type', 'target': 'target'}])
|
|
with patch.dict(seed.__salt__, {'file.stats': mock}):
|
|
self.assertEqual(seed.apply_('path'), 'path does not exist')
|
|
|
|
with patch.object(seed, '_mount', return_value=False):
|
|
self.assertEqual(seed.apply_('path'),
|
|
'target could not be mounted')
|
|
|
|
with patch.object(seed, '_mount', return_value=True):
|
|
with patch.object(os.path, 'join', return_value='A'):
|
|
with patch.object(os, 'makedirs',
|
|
MagicMock(side_effect=OSError('f'))):
|
|
with patch.object(os.path, 'isdir',
|
|
return_value=False):
|
|
self.assertRaises(OSError, seed.apply_, 'p')
|
|
|
|
with patch.object(os, 'makedirs', MagicMock()):
|
|
with patch.object(seed, 'mkconfig', return_value='A'):
|
|
with patch.object(seed, '_check_install',
|
|
return_value=False):
|
|
with patch.object(seed, '_umount',
|
|
return_value=None):
|
|
self.assertFalse(seed.apply_('path',
|
|
install=False))
|