def test_sqlite_parameters_for_snap_not_checked(self, mock_mul_dev, mock_exit): js = SnapAdmin() js.args.file = os.path.join(os.path.dirname(__file__), 'configs', 'main_1.yml') js.args.snap = True js.args.pre_snapfile = "mock_snap" js.start_process() self.assertEqual(js.db, self.db)
def test_sqlite_parameters_for_snap(self, mock_mul_dev, mock_exit): js = SnapAdmin() js.args.file = os.path.join(os.path.dirname(__file__), 'configs', 'main_2.yml') js.args.snap = True js.args.pre_snapfile = "mock_snap" self.db['store_in_sqlite'] = True self.db['db_name'] = 'jbb.db' js.start_process() self.assertEqual(js.db, self.db)
def test_check_mail_password( self, mock_path, mock_notify, mock_pass, mock_compare, mock_arg): js = SnapAdmin() js.args.file = os.path.join(os.path.dirname(__file__), 'configs', 'main_mail_2.yml') js.args.check = True js.args.pre_snapfile = "mock_snap" mock_path.return_value = os.path.join(os.path.dirname(__file__), 'configs') js.start_process() self.assertTrue(mock_pass.called) self.assertTrue(mock_notify.called)
def test_sqlite_parameters_for_check_chksqlite(self, mock_mul_dev, mock_arg): js = SnapAdmin() js.args.file = os.path.join(os.path.dirname(__file__), 'configs', 'main_5.yml') js.args.check = True js.args.pre_snapfile = "mock_snap" self.db['store_in_sqlite'] = False self.db['check_from_sqlite'] = True self.db['db_name'] = 'jbb.db' self.db['first_snap_id'] = 0 self.db['second_snap_id'] = 1 js.start_process() self.assertEqual(js.db, self.db)
def test_start_process_complete_flow_with_port_in_file(self, mock_connect, mock_path): # Testcase to check complete call flow till connect when data passed in command line as files # with port present in file js = SnapAdmin() js.args.snapcheck = True js.args.file = "main_with_port.yml" js.args.pre_snapfile = "pre" js.args.post_snapfile = "post" mock_path.return_value = os.path.join(os.path.dirname(__file__), 'configs') js.start_process() expected_calls_made = [call('1.1.1.1', 'abc', 'xyz', 'pre', ANY, ANY, ANY, port=44)] self.assertTrue(mock_connect.called) mock_connect.assert_has_calls(expected_calls_made, any_order=True)
def test_operation_diff(self, mock_compare, arg_exit): js = SnapAdmin() js.args.file = os.path.join(os.path.dirname(__file__), 'configs', 'main_1.yml') config_file = open(js.args.file, 'r') config_data = yaml.load(config_file, Loader=yaml.FullLoader) js.args.diff = True js.args.pre_snapfile = "mock_snap1" js.args.post_snapfile = "mock_snap2" js.start_process() mock_compare.assert_called_once_with( '1.1.1.1', config_data, js.args.pre_snapfile, None, 'diff')
def test_conditional_mail_5(self, mock_path, mock_notify, mock_pass, mock_compare, mock_arg): js = SnapAdmin() js.args.file = os.path.join(os.path.dirname(__file__), 'configs', 'main_mail_wrong.yml') js.args.check = True js.args.snap = False js.args.snapcheck = False js.args.pre_snapfile = "mock_snap" js.args.post_snapfile = "mock_snap2" mock_path.return_value = os.path.join(os.path.dirname(__file__), 'configs') mock_compare.return_value = MagicMock(result='Passed') js.start_process() self.assertFalse(mock_notify.called) self.assertFalse(mock_pass.called) self.assertTrue(mock_compare.called)
def test_snap_mail(self, mock_logger, mock_notify, mock_pass, mock_compare, mock_arg): argparse.ArgumentParser.parse_args = MagicMock() argparse.ArgumentParser.parse_args.return_value = argparse.Namespace(check=False, diff=False, file=None, hostname=None, login=None, passwd=None, port=None, post_snapfile=None, pre_snapfile=None, snap=False, snapcheck=False, verbosity=None, version=False) js = SnapAdmin() js.args.file = os.path.join(os.path.dirname(__file__), 'configs', 'main_mail.yml') js.args.snap = True js.args.pre_snapfile = "mock_snap" js.start_process() self.assertFalse(mock_notify.called)
def test_start_process_complete_flow_cmd_line_files_group_based(self, mock_connect, mock_path): # Testcase to check complete call flow till connect when data passed in command line as files # with multiple devices in the yml file but group based js = SnapAdmin() js.args.snapcheck = True js.args.file = "main1.yml" js.args.pre_snapfile = "pre" js.args.post_snapfile = "post" mock_path.return_value = os.path.join(os.path.dirname(__file__), 'configs') js.start_process() expected_calls_made = [call('1.1.1.3', 'abc', 'def', 'pre', ANY, ANY, ANY), call('1.1.1.4', 'abc', 'def', 'pre', ANY, ANY, ANY), call('1.1.1.5', 'abc', 'def', 'pre', ANY, ANY, ANY), ] self.assertTrue(mock_connect.called) mock_connect.assert_has_calls(expected_calls_made, any_order=True)
def test_start_process_complete_flow_with_port_as_arg(self, mock_connect, mock_path): # Testcase to check complete call flow till connect when data passed in command line as files # with port present in file and in argument. Port in argument should have higher importance js = SnapAdmin() js.args.snapcheck = True js.args.file = "main2_with_port.yml" js.args.pre_snapfile = "pre" js.args.post_snapfile = "post" mock_path.return_value = os.path.join(os.path.dirname(__file__), 'configs') js.args.port = 55 js.start_process() expected_calls_made = [call('1.1.1.3', 'abc', 'def', 'pre', ANY, ANY, ANY, port=55), call('1.1.1.4', 'abc', 'def', 'pre', ANY, ANY, ANY, port=55), call('1.1.1.5', 'abc', 'def', 'pre', ANY, ANY, ANY, port=55), ] self.assertTrue(mock_connect.called) mock_connect.assert_has_calls(expected_calls_made, any_order=True)
def test_operation_snapcheck( self, mock_log, mock_snap, mock_check, mock_dev, mock_arg): js = SnapAdmin() js.args.snapcheck = True js.args.file = os.path.join(os.path.dirname(__file__), 'configs', 'main_1.yml') config_file = open(js.args.file, 'r') config_data = yaml.load(config_file, Loader=yaml.FullLoader) js.args.pre_snapfile = "mock_snap" js.start_process() self.assertTrue(mock_snap.called) self.assertTrue(mock_dev.called) mock_check.assert_called_once_with( '1.1.1.1', config_data, js.args.pre_snapfile, None, 'snapcheck')
def test_operation_snapcheck_local_config( self, mock_log, mock_snap, mock_check, mock_dev): js = SnapAdmin() js.args.snapcheck = True js.args.file = os.path.join(os.path.dirname(__file__), 'configs', 'main_local_snapcheck.yml') config_file = open(js.args.file, 'r') config_data = yaml.load(config_file, Loader=yaml.FullLoader) js.args.pre_snapfile = "mock_snap" js.start_process() self.assertTrue(js.args.local) self.assertFalse(mock_dev.called) self.assertFalse(mock_snap.called) # we check whether get_test was called, indirectly checking whether compare_tests was called. expected_calls_made = [call('1.1.1.1', config_data, 'PRE', None, 'snapcheck'), call('1.1.1.1', config_data, 'PRE_42', None, 'snapcheck'), call('1.1.1.1', config_data, 'PRE_314', None, 'snapcheck') ] mock_check.assert_has_calls(expected_calls_made, any_order=True)