def test_valid_rule(self): """ Checks that rules are parsed correctly """ config = RawConfigParser() config.add_section("rule1") config.set("rule1", "check", "valid_checker") config.set("rule1", "check.param_true", "true") config.set("rule1", "check.param_number", "1337") config.set("rule1", "check.param_str", '"foobar"') config.set("rule1", "check.param_obj", '{"foo":"bar"}') config.set("rule1", "check.param_arr", '[true, 1337, ["foobar"]]') config.set("rule1", "filter_pattern", "foo") config.set("rule1", "filter_field", "bar") config.set("rule1", "filter_collection", "baz") config.set("rule1", "holdingpen", "true") config.add_section("rule2") config.set("rule2", "check", "other_checker") rule1 = load_rule(config, PLUGINS_MOCK, "rule1") rule2 = load_rule(config, PLUGINS_MOCK, "rule2") self.assertEqual(rule1["check"], "valid_checker") self.assertTrue(rule1["checker_params"]["param_true"]) self.assertEqual(rule1["checker_params"]["param_number"], 1337) self.assertEqual(rule1["checker_params"]["param_str"], "foobar") self.assertEqual(rule1["checker_params"]["param_obj"], {"foo": "bar"}) self.assertEqual(rule1["checker_params"]["param_arr"], [True, 1337, ["foobar"]]) self.assertEqual(rule1["filter_pattern"], "foo") self.assertEqual(rule1["filter_field"], "bar") self.assertEqual(rule1["filter_collection"], "baz") self.assertEqual(rule1["holdingpen"], True) self.assertEqual(rule2["check"], "other_checker")
def test_invalid_rule(self): """ Makes sure the parser raises an error with invalid rules """ config = RawConfigParser() # Create sections in the config file for rule_name, options, _ in INVALID_RULES: config.add_section(rule_name) for option_name, val in options.items(): config.set(rule_name, option_name, val) # Test invalid sections that should fail to parse for rule_name, _, exception in INVALID_RULES: try: load_rule(config, PLUGINS_MOCK, rule_name) self.fail() except RulesParseError, ex: if str(ex).find(exception) < 0: self.fail()