| import os |
| |
| from unittest import mock |
| |
| from cfg_checker.common.settings import pkg_dir |
| from tests.mocks import _fake_kube_config_path |
| from tests.test_base import CfgCheckerTestBase |
| |
| |
| os.environ['MCP_TYPE_FORCE'] = 'SALT' |
| _env_name = 'local' |
| _env_file = os.path.join(pkg_dir, 'etc', _env_name + '.env') |
| |
| |
| class TestCliCommands(CfgCheckerTestBase): |
| def setUp(self): |
| # force env type to salt |
| os.environ['MCP_TYPE_FORCE'] = 'SALT' |
| |
| def tearDown(self): |
| del os.environ['MCP_TYPE_FORCE'] |
| |
| def test_do_cli_main_command(self): |
| _module_name = 'cfg_checker.cfg_check' |
| _m = self._try_import(_module_name) |
| with self.save_arguments(): |
| with self.redirect_output(): |
| with self.assertRaises(SystemExit) as ep: |
| import sys |
| sys.argv = ["fake.py", "reclass", "list", "-p", "/tmp"] |
| _m.cfg_check.config_check_entrypoint() |
| |
| self.assertEqual( |
| ep.exception.code, |
| 0, |
| "'mcp-checker reclass list -p /tmp' command failed" |
| ) |
| |
| def test_do_cli_main_command_debug(self): |
| _module_name = 'cfg_checker.cfg_check' |
| _m = self._try_import(_module_name) |
| with self.save_arguments(): |
| with self.redirect_output(): |
| with self.assertRaises(SystemExit) as ep: |
| import sys |
| sys.argv = [ |
| "fake.py", |
| "-d", |
| "reclass", |
| "list", |
| "-p", |
| "/tmp" |
| ] |
| _m.cfg_check.config_check_entrypoint() |
| |
| self.assertEqual( |
| ep.exception.code, |
| 0, |
| "mcp-checker command failes" |
| ) |
| |
| def test_cli_main_unknown_argument(self): |
| _module_name = 'cfg_checker.cfg_check' |
| _m = self._try_import(_module_name) |
| with self.redirect_output(): |
| with self.assertRaises(SystemExit) as ep: |
| import sys |
| sys.argv.append("reclass") |
| sys.argv.append("list") |
| _m.cfg_check.config_check_entrypoint() |
| |
| self.assertEqual( |
| ep.exception.code, |
| 1, |
| "Unknown argument not handled" |
| ) |
| |
| def test_do_cli_module_command(self): |
| _module_name = 'cfg_checker.cli.command' |
| _m = self._try_import(_module_name) |
| _command = "reclass" |
| with self.save_arguments(): |
| with self.redirect_output(): |
| with self.assertRaises(SystemExit) as ep: |
| import sys |
| sys.argv = ["fake.py", "list", "-p", "/tmp"] |
| _m.cli.command.cli_command( |
| "Fake Reclass Comparer", |
| _command |
| ) |
| |
| self.assertEqual( |
| ep.exception.code, |
| 0, |
| "Cli command execution failed" |
| ) |
| |
| def test_do_cli_module_command_with_error(self): |
| _module_name = 'cfg_checker.cli.command' |
| _m = self._try_import(_module_name) |
| _command = "reclass" |
| with self.save_arguments(): |
| with self.redirect_output(): |
| with self.assertRaises(SystemExit) as ep: |
| import sys |
| sys.argv = ["fake.py", "list", "-p", "/notexistingfolder"] |
| _m.cli.command.cli_command( |
| "Fake Reclass Comparer", |
| _command |
| ) |
| |
| self.assertEqual( |
| ep.exception.code, |
| 1, |
| "Cli command execution failed" |
| ) |
| |
| def test_cli_module_unknown_command(self): |
| _module_name = 'cfg_checker.cli.command' |
| _m = self._try_import(_module_name) |
| _fake_args = mock.MagicMock(name="FakeArgsClass") |
| _command = "unknowncommand" |
| _config = None |
| with self.redirect_output(): |
| _r_value = _m.cli.command.execute_command( |
| _fake_args, |
| _command, |
| _config |
| ) |
| |
| self.assertEqual( |
| _r_value, |
| 1, |
| "Unknown command 'type' not handled" |
| ) |
| |
| def test_cli_module_no_type(self): |
| _module_name = 'cfg_checker.cli.command' |
| _m = self._try_import(_module_name) |
| _type = {} |
| _command = "unknowncommand" |
| _config = None |
| with self.redirect_output(): |
| _r_value = _m.cli.command.execute_command(_type, _command, _config) |
| |
| self.assertEqual( |
| _r_value, |
| 1, |
| "Unknown command not handled" |
| ) |
| |
| def test_cli_module_unknown_type(self): |
| _module_name = 'cfg_checker.cli.command' |
| _m = self._try_import(_module_name) |
| _fake_args = mock.MagicMock(name="FakeArgsClass") |
| _fake_args.kube_config = _fake_kube_config_path |
| _fake_args.env_name = _env_name |
| _fake_args.env_config = _env_file |
| _command = "reclass" |
| |
| from cfg_checker.common.settings import CheckerConfiguration |
| _config = CheckerConfiguration(_fake_args) |
| |
| with self.redirect_output(): |
| _r_value = _m.cli.command.execute_command( |
| _fake_args, |
| _command, |
| _config |
| ) |
| |
| self.assertEqual( |
| _r_value, |
| 1, |
| "Unknown command not handled" |
| ) |
| |
| def test_cli_module_unknown_argument(self): |
| _module_name = 'cfg_checker.cli.command' |
| _m = self._try_import(_module_name) |
| _command = "reclass" |
| with self.redirect_output(): |
| with self.assertRaises(SystemExit) as ep: |
| _m.cli.command.cli_command( |
| "Fake Reclass Comparer", |
| _command |
| ) |
| |
| self.assertEqual( |
| ep.exception.code, |
| 1, |
| "Unknown argument not handled" |
| ) |