Esempio n. 1
0
    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")
Esempio n. 2
0
    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()