def test_call_success(self, mkdtemp, exist): ''' Test execution of Salt functions in chroot. ''' # Success test exist.return_value = True mkdtemp.return_value = '/chroot/tmp01' utils_mock = { 'thin.gen_thin': MagicMock(return_value='/salt-thin.tgz'), 'files.rm_rf': MagicMock(), 'json.find_json': MagicMock(return_value={'return': 'result'}) } salt_mock = { 'archive.tar': MagicMock(return_value=''), 'config.option': MagicMock(), 'cmd.run_chroot': MagicMock(return_value={ 'retcode': 0, 'stdout': '', }), } with patch.dict(chroot.__utils__, utils_mock), \ patch.dict(chroot.__salt__, salt_mock): self.assertEqual(chroot.call('/chroot', 'test.ping'), 'result') utils_mock['thin.gen_thin'].assert_called_once() salt_mock['config.option'].assert_called() salt_mock['archive.tar'].assert_called_once() salt_mock['cmd.run_chroot'].assert_called_once() utils_mock['files.rm_rf'].assert_called_once()
def test_call_fails_untar(self, mkdtemp, exist): ''' Test execution of Salt functions in chroot. ''' # Fail the tar command exist.return_value = True mkdtemp.return_value = '/chroot/tmp01' utils_mock = { 'thin.gen_thin': MagicMock(return_value='/salt-thin.tgz'), 'files.rm_rf': MagicMock(), } salt_mock = { 'cmd.run': MagicMock(return_value='Error'), 'config.option': MagicMock(), } with patch.dict(chroot.__utils__, utils_mock), \ patch.dict(chroot.__salt__, salt_mock): self.assertEqual(chroot.call('/chroot', 'test.ping'), { 'result': False, 'comment': 'Error' }) utils_mock['thin.gen_thin'].assert_called_once() salt_mock['config.option'].assert_called() salt_mock['cmd.run'].assert_called_once() utils_mock['files.rm_rf'].assert_called_once()
def test_call_fails_salt_thin(self, mkdtemp, exist): """ Test execution of Salt functions in chroot. """ # Fail the inner command exist.return_value = True mkdtemp.return_value = "/chroot/tmp01" utils_mock = { "thin.gen_thin": MagicMock(return_value="/salt-thin.tgz"), "files.rm_rf": MagicMock(), "json.find_json": MagicMock(side_effect=ValueError()), } salt_mock = { "cmd.run": MagicMock(return_value=""), "config.option": MagicMock(), "cmd.run_chroot": MagicMock(return_value={ "retcode": 1, "stdout": "", "stderr": "Error" }), } with patch.dict(chroot.__utils__, utils_mock), patch.dict(chroot.__salt__, salt_mock): self.assertEqual( chroot.call("/chroot", "test.ping"), { "result": False, "retcode": 1, "comment": { "stdout": "", "stderr": "Error" }, }, ) utils_mock["thin.gen_thin"].assert_called_once() salt_mock["config.option"].assert_called() salt_mock["cmd.run"].assert_called_once() salt_mock["cmd.run_chroot"].assert_called_with( "/chroot", [ "python{}".format(sys.version_info[0]), "/tmp01/salt-call", "--metadata", "--local", "--log-file", "/tmp01/log", "--cachedir", "/tmp01/cache", "--out", "json", "-l", "quiet", "--", "test.ping", ], ) utils_mock["files.rm_rf"].assert_called_once()
def test_call_fails_untar(self, mkdtemp, exist): """ Test execution of Salt functions in chroot. """ # Fail the tar command exist.return_value = True mkdtemp.return_value = "/chroot/tmp01" utils_mock = { "thin.gen_thin": MagicMock(return_value="/salt-thin.tgz"), "files.rm_rf": MagicMock(), } salt_mock = { "cmd.run": MagicMock(return_value="Error"), "config.option": MagicMock(), } with patch.dict(chroot.__utils__, utils_mock), patch.dict(chroot.__salt__, salt_mock): self.assertEqual( chroot.call("/chroot", "test.ping"), { "result": False, "comment": "Error" }, ) utils_mock["thin.gen_thin"].assert_called_once() salt_mock["config.option"].assert_called() salt_mock["cmd.run"].assert_called_once() utils_mock["files.rm_rf"].assert_called_once()
def test_call_success_parameters(self, mkdtemp, exist): ''' Test execution of Salt functions in chroot with parameters. ''' # Success test exist.return_value = True mkdtemp.return_value = '/chroot/tmp01' utils_mock = { 'thin.gen_thin': MagicMock(return_value='/salt-thin.tgz'), 'files.rm_rf': MagicMock(), 'json.find_json': MagicMock(return_value={'return': 'result'}) } salt_mock = { 'cmd.run': MagicMock(return_value=''), 'config.option': MagicMock(), 'cmd.run_chroot': MagicMock(return_value={ 'retcode': 0, 'stdout': '', }), } with patch.dict(chroot.__utils__, utils_mock), \ patch.dict(chroot.__salt__, salt_mock): self.assertEqual(chroot.call('/chroot', 'module.function', key='value'), 'result') utils_mock['thin.gen_thin'].assert_called_once() salt_mock['config.option'].assert_called() salt_mock['cmd.run'].assert_called_once() salt_mock['cmd.run_chroot'].assert_called_with( '/chroot', ['python{}'.format(sys.version_info[0]), '/tmp01/salt-call', '--metadata', '--local', '--log-file', '/tmp01/log', '--cachedir', '/tmp01/cache', '--out', 'json', '-l', 'quiet', '--', 'module.function', 'key=value']) utils_mock['files.rm_rf'].assert_called_once()
def test_call_success_parameters(self, mkdtemp, exist): """ Test execution of Salt functions in chroot with parameters. """ # Success test exist.return_value = True mkdtemp.return_value = "/chroot/tmp01" utils_mock = { "thin.gen_thin": MagicMock(return_value="/salt-thin.tgz"), "files.rm_rf": MagicMock(), "json.find_json": MagicMock(return_value={"return": "result"}), } salt_mock = { "cmd.run": MagicMock(return_value=""), "config.option": MagicMock(), "cmd.run_chroot": MagicMock(return_value={ "retcode": 0, "stdout": "" }), } with patch.dict(chroot.__utils__, utils_mock), patch.dict(chroot.__salt__, salt_mock): self.assertEqual( chroot.call("/chroot", "module.function", key="value"), "result") utils_mock["thin.gen_thin"].assert_called_once() salt_mock["config.option"].assert_called() salt_mock["cmd.run"].assert_called_once() salt_mock["cmd.run_chroot"].assert_called_with( "/chroot", [ "python{}".format(sys.version_info[0]), "/tmp01/salt-call", "--metadata", "--local", "--log-file", "/tmp01/log", "--cachedir", "/tmp01/cache", "--out", "json", "-l", "quiet", "--", "module.function", "key=value", ], ) utils_mock["files.rm_rf"].assert_called_once()
def test_call_fails_salt_thin(self, mkdtemp, exist): ''' Test execution of Salt functions in chroot. ''' # Fail the inner command exist.return_value = True mkdtemp.return_value = '/chroot/tmp01' utils_mock = { 'thin.gen_thin': MagicMock(return_value='/salt-thin.tgz'), 'files.rm_rf': MagicMock(), 'json.find_json': MagicMock(return_value={'return': {}}) } salt_mock = { 'cmd.run': MagicMock(return_value=''), 'config.option': MagicMock(), 'cmd.run_chroot': MagicMock(return_value={ 'retcode': 1, 'stderr': 'Error', }), } with patch.dict(chroot.__utils__, utils_mock), \ patch.dict(chroot.__salt__, salt_mock): self.assertEqual(chroot.call('/chroot', 'test.ping'), { 'result': False, 'comment': "Can't parse container command output" }) utils_mock['thin.gen_thin'].assert_called_once() salt_mock['config.option'].assert_called() salt_mock['cmd.run'].assert_called_once() salt_mock['cmd.run_chroot'].assert_called_with( '/chroot', [ 'python{}'.format(sys.version_info[0]), '/tmp01/salt-call', '--metadata', '--local', '--log-file', '/tmp01/log', '--cachedir', '/tmp01/cache', '--out', 'json', '-l', 'quiet', '--', 'test.ping' ]) utils_mock['files.rm_rf'].assert_called_once()