def integration_tests_1(): input_data = InputData("test_return_make_none_1") input_data.add(Specs.redhat_release, RHEL7) yield input_data, None input_data = InputData("test_return_make_none_2") input_data.add(Specs.redhat_release, RHEL7) yield input_data, MAKE_NONE_RESULT
def integration_tests_3(): input_data = InputData("test_return_skip_exception_1") input_data.add(Specs.redhat_release, RHEL7) yield input_data, None input_data = InputData("test_return_skip_exception_2") input_data.add(Specs.redhat_release, RHEL7) yield input_data, None
def test_integration_tests(): comp = insights_heartbeat.is_insights_heartbeat input_data = InputData(name="Match: no kernel") input_data.add(Specs.hostname, insights_heartbeat.HOST) expected = make_fail(insights_heartbeat.ERROR_KEY) run_test(comp, input_data, expected) input_data = InputData(name="No Match: bad hostname") input_data.add(Specs.hostname, NON_MATCHING_HOSTNAME) run_test(comp, input_data, None)
def test_integration_2(run_rule): input_data = InputData("test_return_none_2_1") input_data.add(Specs.redhat_release, RHEL7) result = run_rule(returns_none.report_none, input_data) assert result is None input_data = InputData("test_return_none_2_2") input_data.add(Specs.redhat_release, RHEL7) result = run_rule(returns_none.report_none, input_data, return_make_none=True) assert result == MAKE_NONE_RESULT
def test_integration_3(run_rule): input_data = InputData("test_return_skip_exception_2_1") input_data.add(Specs.redhat_release, RHEL7) result = run_rule(returns_none.report_skip_exception, input_data) assert result is None input_data = InputData("test_return_skip_exception_2_2") input_data.add(Specs.redhat_release, RHEL7) result = run_rule(returns_none.report_skip_exception, input_data, return_make_none=True) assert result is None
def integration_test(): input_data = InputData("no_bash_bug") input_data.add(Specs.installed_rpms, CURRENT_VERSION) expected = make_pass("BASH_BUG", bash=CURRENT_VERSION, found=NOT_FOUND) yield input_data, expected input_data = InputData("is_bash_bug") input_data.add(Specs.installed_rpms, BUG_VERSION) expected = make_fail("BASH_BUG", bash=BUG_VERSION, found=FOUND) yield input_data, expected
def integration_test(): input_data = InputData("test_fedora") input_data.add(Specs.redhat_release, FEDORA) expected = make_response("IS_FEDORA", product="Fedora") yield input_data, expected input_data = InputData("test_rhel") input_data.add(Specs.redhat_release, RHEL) expected = make_response("IS_NOT_FEDORA", product="Red Hat Enterprise Linux Server") yield input_data, expected
def integration_tests(): # Test that should pass data = InputData("localhost_in_hosts") data.add('hosts', HOSTS_WITH_LOCALHOST) yield data, [] # Test that should fail data = InputData("localhost_not_in_hosts") data.add('hosts', HOSTS_WITHOUT_LOCALHOST) expected = make_response(localhost_in_hosts.ERROR_KEY, message=localhost_in_hosts.MESSAGE, hosts_defined=set({ 'fte.example.com', 'nonlocal.example.com', 'nonlocal2.fte.example.com' })) yield data, [expected]
def integration_tests(): """ InputData acts as the data source for the parsers so that they may execute and then be used as input to the rule. So this is essentially and end-to-end test of the component chain. """ input_data = InputData("GOOD_CONFIG") input_data.add(Specs.sshd_config, GOOD_CONFIG) input_data.add(Specs.installed_rpms, OPENSSH_RPM) yield input_data, None input_data = InputData("BAD_CONFIG") input_data.add(Specs.sshd_config, BAD_CONFIG) input_data.add(Specs.installed_rpms, OPENSSH_RPM) errors = { 'AuthenticationMethods': 'badkey', 'LogLevel': 'normal', 'PermitRootLogin': '******', 'Protocol': '1' } expected = make_response(sshd_secure.ERROR_KEY, errors=errors, openssh=EXPECTED_OPENSSH) yield input_data, expected input_data = InputData("DEFAULT_CONFIG") input_data.add(Specs.sshd_config, DEFAULT_CONFIG) input_data.add(Specs.installed_rpms, OPENSSH_RPM) errors = { 'AuthenticationMethods': 'default', 'LogLevel': 'default', 'PermitRootLogin': '******' } expected = make_response(sshd_secure.ERROR_KEY, errors=errors, openssh=EXPECTED_OPENSSH) yield input_data, expected
def _run_rule(name, rule, input_data): """ Fixture for rule integration testing Use this fixture to create an integration test for your rule plugin. Sample code:: def test_myrule(run_rule): input_data = {'spec': Specs.installed_rpms, 'data': RPMS_DATA} expected = make_fail(ERROR_KEY, bad_data=data_expected) results = run_rule('my test name', my_rule, input_data) assert results == expected Arguments: name (str): Name to identify this test in output. rule (object): Your rule function object. data (list or dict): List of dict of each data spec your rule requires to trigger. If a single input data spec then a dict can be passed instead. Each dict must include both ``spec`` and ``data`` keys, and may optionally include ``path`` if necessary for the spec. Return: results of call to make_pass, make_fail, etc., or None Raises: KeyError: Raises if either spec or data keywords are not present. """ idata = InputData(name) input_data = input_data if isinstance(input_data, list) else [input_data] for d in input_data: if 'path' in d: idata.add(d['spec'], d['data'], path=d['path']) else: idata.add(d['spec'], d['data']) return run_test(rule, idata)
def integration_test(): input_data = InputData("test_fedora") input_data.add(Specs.redhat_release, FEDORA) input_data.add(Specs.hostname, TEST_HOSTNAME) expected = make_pass("IS_FEDORA", hostname=TEST_HOSTNAME, product="Fedora") yield input_data, expected input_data = InputData("test_rhel") input_data.add(Specs.redhat_release, RHEL) input_data.add(Specs.hostname, TEST_HOSTNAME) expected = make_fail("IS_NOT_FEDORA", hostname=TEST_HOSTNAME, product="Red Hat Enterprise Linux Server") yield input_data, expected
def test_valid_selinux(): for first, second, policy_type, selinux_type in MATCHING: second = second.format(policy_type) input_data = InputData() input_data.add('sestatus', SESTATUS_OK) input_data.add('installed-rpms', first + '\n' + second) input_data.add('selinux-config', SELINUX_CONFIG.format(selinux_type)) response = integrate(input_data, rule.report) assert response == [] tests.append((input_data, response))
def integration_test_no_hit(): data = InputData("test1") data.add(Specs.installed_rpms, INSTALLED_TUNED_HIT) expected = make_fail(tuned_not_applying_profiles.ERROR_KEY, installed_package='tuned-2.11.0-5.el7', kcs=tuned_not_applying_profiles.KCS) yield data, expected data = InputData("test2") data.add(Specs.installed_rpms, INSTALLED_TUNED_FDP_HIT) expected = make_fail(tuned_not_applying_profiles.ERROR_KEY, installed_package='tuned-2.11.0-5.el7fdp', kcs=tuned_not_applying_profiles.KCS) yield data, expected data = InputData("test3") data.add(Specs.installed_rpms, INSTALLED_TUNED_NOT_HIT) yield data, None data = InputData("test4") data.add(Specs.installed_rpms, INSTALLED_TUNED_FDP_NOT_HIT) yield data, None
def test_nonmatching_selinux(): for first, second, policy_type, selinux_type in NON_MATCHING: second = second.format(policy_type) input_data = InputData() input_data.add('sestatus', SESTATUS_OK) input_data.add('installed-rpms', first + '\n' + second) input_data.add('selinux-config', SELINUX_CONFIG.format(selinux_type)) response = integrate(input_data, rule.report) assert 'policy_rpm' in response[0] assert 'policy_type_rpm' in response[0] assert 'policy_type' in response[0] assert response[0]['policy_rpm'] == first[:first.rfind('.')] assert response[0]['policy_type_rpm'] == second[:second.rfind('.')] assert response[0]['policy_type'] == policy_type tests.append((input_data, response))
def test_rules_fixture(run_rule): input_data = InputData('test_pass') input_data.add(UNAME['spec'], UNAME['data']) input_data.add(RPMS['spec'], RPMS['data'], path=RPMS['path']) expected = make_pass('PASS', bash_ver='bash-4.1.23-6.fc29', uname_ver='2.6.32') results = run_rule(rules_fixture_plugin.report, input_data) assert results == expected input_data = InputData('test_fail') input_data.add(RPMS['spec'], RPMS['data'], path=RPMS['path']) expected = make_fail('FAIL', bash_ver='bash-4.1.23-6.fc29', path=RPMS['path']) results = run_rule(rules_fixture_plugin.report, input_data) assert results == expected input_data = InputData('test_ret_none') results = run_rule(rules_fixture_plugin.report, input_data) assert results is None
def generate_inputs(things): for kernel in things: uname_line = UNAME_TEMPLATE % kernel i = InputData() i.add(Specs.uname, uname_line) yield (kernel, i)
def integration_test_no_hit(): good_env = InputData("good_environment_no_hit_1") good_env.add(Specs.systemctl_list_units, CONTENT_SYSTEMCTL_LIST_UNITS_NOT_HIT) good_env.add(Specs.installed_rpms, CONTENT_INSTALLED_RPMS_HIT) good_env.add(Specs.sysctl, CONTENT_SYSCTL_COMMAND_HIT) good_env.add(Specs.redhat_release, RHEL7) yield good_env, None good_env = InputData("good_environment_no_hit_2") good_env.add(Specs.systemctl_list_units, CONTENT_SYSTEMCTL_LIST_UNITS_HIT) good_env.add(Specs.installed_rpms, CONTENT_INSTALLED_RPMS_NOT_HIT) good_env.add(Specs.sysctl, CONTENT_SYSCTL_COMMAND_HIT) good_env.add(Specs.redhat_release, RHEL7) yield good_env, None good_env = InputData("good_environment_no_hit_3") good_env.add(Specs.systemctl_list_units, CONTENT_SYSTEMCTL_LIST_UNITS_HIT) good_env.add(Specs.installed_rpms, CONTENT_INSTALLED_RPMS_HIT) good_env.add(Specs.sysctl, CONTENT_SYSCTL_COMMAND_NOT_HIT) good_env.add(Specs.redhat_release, RHEL7) yield good_env, None good_env = InputData("good_environment_no_hit_4") good_env.add(Specs.systemctl_list_units, CONTENT_SYSTEMCTL_LIST_UNITS_HIT) good_env.add(Specs.installed_rpms, CONTENT_INSTALLED_RPMS_HIT) good_env.add(Specs.sysctl, CONTENT_SYSCTL_COMMAND_HIT) good_env.add(Specs.redhat_release, RHEL6) yield good_env, None
def integration_test_hit(): bad_env = InputData("bad_environment_hit_1") bad_env.add(Specs.systemctl_list_units, CONTENT_SYSTEMCTL_LIST_UNITS_HIT) bad_env.add(Specs.installed_rpms, CONTENT_INSTALLED_RPMS_HIT) bad_env.add(Specs.sysctl, CONTENT_SYSCTL_COMMAND_HIT) bad_env.add(Specs.redhat_release, RHEL7) expected = make_fail(ocp_tuned_regression.ERROR_KEY, tuned_version='tuned-2.11.0-5.el7') yield bad_env, expected bad_env = InputData("bad_environment_hit_2") bad_env.add(Specs.systemctl_list_units, CONTENT_SYSTEMCTL_LIST_UNITS_HIT) bad_env.add(Specs.installed_rpms, CONTENT_INSTALLED_RPMS_HIT2) bad_env.add(Specs.sysctl, CONTENT_SYSCTL_COMMAND_HIT) bad_env.add(Specs.redhat_release, RHEL7) expected = make_fail(ocp_tuned_regression.ERROR_KEY, tuned_version='tuned-2.11.0-5.el7fdp') yield bad_env, expected
def integration_tests(): # Test that should pass data = InputData("good_test_1") data.add('messages', MESSAGES) data.add('rsyslog.conf', RSYSLOG_CONF_DEFAULT_LIMITS) yield data, [] data = InputData("good_test_2") data.add('messages', MESSAGES_WITH_FEW_DROPS) data.add('rsyslog.conf', RSYSLOG_CONF_DEFAULT_LIMITS) yield data, [] # Test that should fail data = InputData("bad_default_limit_high_drops") data.add('messages', MESSAGES_WITH_MANY_DROPS) data.add('rsyslog.conf', RSYSLOG_CONF_DEFAULT_LIMITS) expected = make_response( rsyslog_dropping_messages.ERROR_KEY, drops_by_process={'55082': { 'count': 725, 'max': 245, 'lines': 3 }}, current_interval=5, current_limit=200, new_limit=245, new_config="$SysLogRateLimitBurst {m}".format(m=245), ) yield data, [expected] data = InputData("bad_low_limit_high_drops") data.add('messages', MESSAGES_WITH_MANY_DROPS) data.add('rsyslog.conf', RSYSLOG_CONF_LOW_BURST) expected = make_response( rsyslog_dropping_messages.ERROR_KEY, drops_by_process={'55082': { 'count': 725, 'max': 245, 'lines': 3 }}, current_interval=5, current_limit=10, new_limit=245, new_config="$SysLogRateLimitBurst {m}".format(m=245), ) yield data, [expected] data = InputData("bad_low_limit_few_drops") data.add('messages', MESSAGES_WITH_FEW_DROPS) data.add('rsyslog.conf', RSYSLOG_CONF_LOW_BURST) expected = make_response( rsyslog_dropping_messages.ERROR_KEY, drops_by_process={'sshd': { 'count': 23, 'max': 12, 'lines': 2 }}, current_interval=5, current_limit=10, new_limit=12, new_config="$SysLogRateLimitBurst {m}".format(m=12), ) yield data, [expected]
def test_noselinux(): for first, second, policy_type, selinux_type in MATCHING + NON_MATCHING + INVALID: second = second.format(policy_type) input_data = InputData() input_data.add('sestatus', SESTATUS_DISABLED) input_data.add('installed-rpms', first + '\n' + second) input_data.add('selinux-config', SELINUX_CONFIG.format(selinux_type)) response = integrate(input_data, rule.report) assert response == [] tests.append((input_data, response)) input_data = InputData() input_data.add('sestatus', SESTATUS_PERMISSIVE) input_data.add('installed-rpms', first + '\n' + second) input_data.add('selinux-config', SELINUX_CONFIG.format(selinux_type)) response = integrate(input_data, rule) assert response == [] tests.append((input_data, response))
def integration_test_no_hit(): data = InputData("test1") data.add(Specs.redhat_release, RHEL7) data.add(Specs.ps_aux, CONTENT_PS_AUX_HIT) data.add(Specs.systemctl_list_units, LIST_UNITS_FIREWALLD_RUNNING) data.add(Specs.installed_rpms, CONTENT_INSTALLED_RPMS_HIT) expected = make_fail(ocp_firewalld_enabled.ERROR_KEY, firewalld_service=True, version="4.1.9") yield data, expected data = InputData("test2") data.add(Specs.redhat_release, RHEL6) data.add(Specs.ps_aux, CONTENT_PS_AUX_HIT) data.add(Specs.systemctl_list_units, LIST_UNITS_FIREWALLD_RUNNING) data.add(Specs.installed_rpms, CONTENT_INSTALLED_RPMS_HIT) yield data, None data = InputData("test3") data.add(Specs.redhat_release, RHEL7) data.add(Specs.ps_aux, CONTENT_PS_AUX_NOT_HIT) data.add(Specs.systemctl_list_units, LIST_UNITS_FIREWALLD_RUNNING) data.add(Specs.installed_rpms, CONTENT_INSTALLED_RPMS_HIT) yield data, None data = InputData("test4") data.add(Specs.redhat_release, RHEL7) data.add(Specs.ps_aux, CONTENT_PS_AUX_HIT) data.add(Specs.systemctl_list_units, LIST_UNITS_FIREWALLD_NOT_RUNNING) data.add(Specs.installed_rpms, CONTENT_INSTALLED_RPMS_HIT) yield data, None data = InputData("test5") data.add(Specs.redhat_release, RHEL7) data.add(Specs.ps_aux, CONTENT_PS_AUX_HIT) data.add(Specs.systemctl_list_units, LIST_UNITS_FIREWALLD_RUNNING) data.add(Specs.installed_rpms, CONTENT_INSTALLED_RPMS_NOT_HIT) yield data, None data = InputData("test6") data.add(Specs.redhat_release, RHEL7) data.add(Specs.ps_aux, CONTENT_PS_AUX_NOT_HIT) data.add(Specs.systemctl_list_units, LIST_UNITS_FIREWALLD_NOT_RUNNING) data.add(Specs.installed_rpms, CONTENT_INSTALLED_RPMS_NOT_HIT) yield data, None
def integration_tests(): data = InputData("Hit test 1") data.add(Specs.redhat_release, RHEL7) data.add(Specs.systemctl_list_units, CONTENT_SYSTEMCTL_LIST_UNITS_HIT) data.add(Specs.sysctl, CONTENT_SYSCTL_COMMAND_HIT) data.add(Specs.messages, CONTENT_MESSAGES_HIT) expected = make_info(ocp_elasticsearch_crashbackoff.ERROR_KEY, kcs=ocp_elasticsearch_crashbackoff.KCS, checked_sysctl="vm.max_map_count=65530") yield data, expected data = InputData("No Hit test 1") data.add(Specs.redhat_release, RHEL6) data.add(Specs.systemctl_list_units, CONTENT_SYSTEMCTL_LIST_UNITS_HIT) data.add(Specs.sysctl, CONTENT_SYSCTL_COMMAND_HIT) data.add(Specs.messages, CONTENT_MESSAGES_HIT) yield data, None data = InputData("No Hit test 2") data.add(Specs.redhat_release, RHEL7) data.add(Specs.systemctl_list_units, CONTENT_SYSTEMCTL_LIST_UNITS_NOT_HIT) data.add(Specs.sysctl, CONTENT_SYSCTL_COMMAND_HIT) data.add(Specs.messages, CONTENT_MESSAGES_HIT) yield data, None data = InputData("No Hit test 3") data.add(Specs.redhat_release, RHEL7) data.add(Specs.systemctl_list_units, CONTENT_SYSTEMCTL_LIST_UNITS_HIT) data.add(Specs.sysctl, CONTENT_SYSCTL_COMMAND_NOT_HIT) data.add(Specs.messages, CONTENT_MESSAGES_HIT) yield data, None data = InputData("No Hit test 4") data.add(Specs.redhat_release, RHEL7) data.add(Specs.systemctl_list_units, CONTENT_SYSTEMCTL_LIST_UNITS_HIT) data.add(Specs.sysctl, CONTENT_SYSCTL_COMMAND_HIT) data.add(Specs.messages, CONTENT_MESSAGES_NOT_HIT) yield data, None
def integration_test_hit(): bad_env = InputData("bad_environment_hit_1") bad_env.add(Specs.systemctl_list_units, CONTENT_SYSTEMCTL_LIST_UNITS_HIT) bad_env.add(Specs.installed_rpms, CONTENT_INSTALLED_RPMS_750_HIT) bad_env.add(Specs.messages, CONTENT_MESSAGE_HIT1) bad_env.add(Specs.redhat_release, RHEL7) expected = make_fail( ocp_systemd_dbus_regression.ERROR_KEY, systemd_version=['systemd-219-57.el7', 'systemd-219-67.el7']) yield bad_env, expected bad_env = InputData("bad_environment_hit_2") bad_env.add(Specs.systemctl_list_units, CONTENT_SYSTEMCTL_LIST_UNITS_HIT) bad_env.add(Specs.installed_rpms, CONTENT_INSTALLED_RPMS_750_HIT) bad_env.add(Specs.messages, CONTENT_MESSAGE_HIT2) bad_env.add(Specs.redhat_release, RHEL7) expected = make_fail( ocp_systemd_dbus_regression.ERROR_KEY, systemd_version=['systemd-219-57.el7', 'systemd-219-67.el7']) yield bad_env, expected bad_env = InputData("bad_environment_hit_3") bad_env.add(Specs.systemctl_list_units, CONTENT_SYSTEMCTL_LIST_UNITS_HIT) bad_env.add(Specs.installed_rpms, CONTENT_INSTALLED_RPMS_750_HIT) bad_env.add(Specs.messages, CONTENT_MESSAGE_HIT3) bad_env.add(Specs.redhat_release, RHEL7) expected = make_fail( ocp_systemd_dbus_regression.ERROR_KEY, systemd_version=['systemd-219-57.el7', 'systemd-219-67.el7']) yield bad_env, expected bad_env = InputData("bad_environment_hit_4") bad_env.add(Specs.systemctl_list_units, CONTENT_SYSTEMCTL_LIST_UNITS_HIT) bad_env.add(Specs.installed_rpms, CONTENT_INSTALLED_RPMS_750_HIT) bad_env.add(Specs.messages, CONTENT_MESSAGE_HIT4) bad_env.add(Specs.redhat_release, RHEL7) expected = make_fail( ocp_systemd_dbus_regression.ERROR_KEY, systemd_version=['systemd-219-57.el7', 'systemd-219-67.el7']) yield bad_env, expected bad_env = InputData("bad_environment_hit_5") bad_env.add(Specs.systemctl_list_units, CONTENT_SYSTEMCTL_LIST_UNITS_HIT) bad_env.add(Specs.installed_rpms, CONTENT_INSTALLED_RPMS_750_HIT) bad_env.add(Specs.messages, CONTENT_MESSAGE_HIT5) bad_env.add(Specs.redhat_release, RHEL7) expected = make_fail( ocp_systemd_dbus_regression.ERROR_KEY, systemd_version=['systemd-219-57.el7', 'systemd-219-67.el7']) yield bad_env, expected bad_env = InputData("bad_environment_hit_6") bad_env.add(Specs.systemctl_list_units, CONTENT_SYSTEMCTL_LIST_UNITS_HIT) bad_env.add(Specs.installed_rpms, CONTENT_INSTALLED_RPMS_760_HIT) bad_env.add(Specs.messages, CONTENT_MESSAGE_HIT1) bad_env.add(Specs.redhat_release, RHEL7) expected = make_fail( ocp_systemd_dbus_regression.ERROR_KEY, systemd_version=['systemd-219-62.el7', 'systemd-219-62.el7_6.9']) yield bad_env, expected bad_env = InputData("bad_environment_hit_7") bad_env.add(Specs.systemctl_list_units, CONTENT_SYSTEMCTL_LIST_UNITS_HIT) bad_env.add(Specs.installed_rpms, CONTENT_INSTALLED_RPMS_760_HIT) bad_env.add(Specs.messages, CONTENT_MESSAGE_HIT2) bad_env.add(Specs.redhat_release, RHEL7) expected = make_fail( ocp_systemd_dbus_regression.ERROR_KEY, systemd_version=['systemd-219-62.el7', 'systemd-219-62.el7_6.9']) yield bad_env, expected bad_env = InputData("bad_environment_hit_8") bad_env.add(Specs.systemctl_list_units, CONTENT_SYSTEMCTL_LIST_UNITS_HIT) bad_env.add(Specs.installed_rpms, CONTENT_INSTALLED_RPMS_760_HIT) bad_env.add(Specs.messages, CONTENT_MESSAGE_HIT3) bad_env.add(Specs.redhat_release, RHEL7) expected = make_fail( ocp_systemd_dbus_regression.ERROR_KEY, systemd_version=['systemd-219-62.el7', 'systemd-219-62.el7_6.9']) yield bad_env, expected bad_env = InputData("bad_environment_hit_9") bad_env.add(Specs.systemctl_list_units, CONTENT_SYSTEMCTL_LIST_UNITS_HIT) bad_env.add(Specs.installed_rpms, CONTENT_INSTALLED_RPMS_760_HIT) bad_env.add(Specs.messages, CONTENT_MESSAGE_HIT4) bad_env.add(Specs.redhat_release, RHEL7) expected = make_fail( ocp_systemd_dbus_regression.ERROR_KEY, systemd_version=['systemd-219-62.el7', 'systemd-219-62.el7_6.9']) yield bad_env, expected bad_env = InputData("bad_environment_hit_10") bad_env.add(Specs.systemctl_list_units, CONTENT_SYSTEMCTL_LIST_UNITS_HIT) bad_env.add(Specs.installed_rpms, CONTENT_INSTALLED_RPMS_760_HIT) bad_env.add(Specs.messages, CONTENT_MESSAGE_HIT5) bad_env.add(Specs.redhat_release, RHEL7) expected = make_fail( ocp_systemd_dbus_regression.ERROR_KEY, systemd_version=['systemd-219-62.el7', 'systemd-219-62.el7_6.9']) yield bad_env, expected