Update crypt unit tests to reflect changes in mock_open

This commit is contained in:
Erik Johnson 2018-06-18 10:38:53 -05:00
parent 67c036dc2d
commit 84ce18d956
No known key found for this signature in database
GPG key ID: 5E5583C437808F3F

View file

@ -8,7 +8,15 @@ import shutil
# salt testing libs
from tests.support.unit import TestCase, skipIf
from tests.support.mock import patch, call, mock_open, NO_MOCK, NO_MOCK_REASON, MagicMock
from tests.support.mock import(
patch,
call,
mock_open,
NO_MOCK,
NO_MOCK_REASON,
MagicMock,
MockCall,
)
# salt libs
from salt.ext import six
@ -96,19 +104,23 @@ SIG = (
@skipIf(HAS_M2, 'm2crypto is used by salt.crypt if installed')
class CryptTestCase(TestCase):
def test_gen_keys(self):
open_priv_wb = MockCall('/keydir{0}keyname.pem'.format(os.sep), 'wb+')
open_pub_wb = MockCall('/keydir{0}keyname.pub'.format(os.sep), 'wb+')
with patch.multiple(os, umask=MagicMock(), chmod=MagicMock(),
access=MagicMock(return_value=True)):
with patch('salt.utils.files.fopen', mock_open()):
open_priv_wb = call('/keydir{0}keyname.pem'.format(os.sep), 'wb+')
open_pub_wb = call('/keydir{0}keyname.pub'.format(os.sep), 'wb+')
with patch('os.path.isfile', return_value=True):
self.assertEqual(crypt.gen_keys('/keydir', 'keyname', 2048), '/keydir{0}keyname.pem'.format(os.sep))
self.assertNotIn(open_priv_wb, salt.utils.files.fopen.mock_calls)
self.assertNotIn(open_pub_wb, salt.utils.files.fopen.mock_calls)
with patch('os.path.isfile', return_value=False):
with patch('salt.utils.files.fopen', mock_open()):
crypt.gen_keys('/keydir', 'keyname', 2048)
salt.utils.files.fopen.assert_has_calls([open_priv_wb, open_pub_wb], any_order=True)
with patch('salt.utils.files.fopen', mock_open()) as m_open, \
patch('os.path.isfile', return_value=True):
result = crypt.gen_keys('/keydir', 'keyname', 2048)
assert result == '/keydir{0}keyname.pem'.format(os.sep), result
assert open_priv_wb not in m_open.calls
assert open_pub_wb not in m_open.calls
with patch('salt.utils.files.fopen', mock_open()) as m_open, \
patch('os.path.isfile', return_value=False):
crypt.gen_keys('/keydir', 'keyname', 2048)
assert open_priv_wb in m_open.calls
assert open_pub_wb in m_open.calls
@patch('os.umask', MagicMock())
@patch('os.chmod', MagicMock())
@ -116,17 +128,23 @@ class CryptTestCase(TestCase):
@patch('os.access', MagicMock(return_value=True))
def test_gen_keys_with_passphrase(self):
key_path = os.path.join(os.sep, 'keydir')
with patch('salt.utils.files.fopen', mock_open()):
open_priv_wb = call(os.path.join(key_path, 'keyname.pem'), 'wb+')
open_pub_wb = call(os.path.join(key_path, 'keyname.pub'), 'wb+')
with patch('os.path.isfile', return_value=True):
self.assertEqual(crypt.gen_keys(key_path, 'keyname', 2048, passphrase='password'), os.path.join(key_path, 'keyname.pem'))
self.assertNotIn(open_priv_wb, salt.utils.files.fopen.mock_calls)
self.assertNotIn(open_pub_wb, salt.utils.files.fopen.mock_calls)
with patch('os.path.isfile', return_value=False):
with patch('salt.utils.files.fopen', mock_open()):
crypt.gen_keys(key_path, 'keyname', 2048)
salt.utils.files.fopen.assert_has_calls([open_priv_wb, open_pub_wb], any_order=True)
open_priv_wb = MockCall(os.path.join(key_path, 'keyname.pem'), 'wb+')
open_pub_wb = MockCall(os.path.join(key_path, 'keyname.pub'), 'wb+')
with patch('salt.utils.files.fopen', mock_open()) as m_open, \
patch('os.path.isfile', return_value=True):
self.assertEqual(crypt.gen_keys(key_path, 'keyname', 2048, passphrase='password'), os.path.join(key_path, 'keyname.pem'))
result = crypt.gen_keys(key_path, 'keyname', 2048,
passphrase='password')
assert result == os.path.join(key_path, 'keyname.pem'), result
assert open_priv_wb not in m_open.calls
assert open_pub_wb not in m_open.calls
with patch('salt.utils.files.fopen', mock_open()) as m_open, \
patch('os.path.isfile', return_value=False):
crypt.gen_keys(key_path, 'keyname', 2048)
assert open_priv_wb in m_open.calls
assert open_pub_wb in m_open.calls
def test_sign_message(self):
key = RSA.importKey(PRIVKEY_DATA)