Пример #1
0
    def assert_rule_valid(self, rule, exp_updated_rule=None,
                          exclude_keys=None):
        """Asserts that a rule passes validation.

        :param rule: Rule to validate.
        :param exp_updated_rule: Expected canonical version of the rule, after
               validation.
        :param exclude_keys: Set of keys to exclude from negation.
        """
        if exp_updated_rule is None:
            exp_updated_rule = copy.deepcopy(rule)
        rule = self.add_neg_pfx(rule, exclude_keys=exclude_keys)
        exp_updated_rule = self.add_neg_pfx(exp_updated_rule,
                                            exclude_keys=exclude_keys)

        rule_copy = copy.deepcopy(rule)
        issues = []
        common._validate_rules({"inbound_rules": [rule_copy],
                                "outbound_rules": []}, issues)
        self.assertFalse(issues, "Rule should have no issues, got %s" % issues)
        self.assertEqual(rule_copy, exp_updated_rule)

        rule_copy = copy.deepcopy(rule)
        common._validate_rules({"inbound_rules": [],
                                "outbound_rules": [rule_copy]}, issues)
        self.assertFalse(issues, "Rule should have no issues (outbound), "
                                 "got %s" % issues)
        self.assertEqual(rule_copy, exp_updated_rule)
Пример #2
0
 def assert_rule_issue(self, rule, exp_issue_re, exclude_keys=None):
     """Asserts that a rule fails validation with an issue matching
     the regex.
     :param rule: The rule to validate.
     :param str exp_issue_re: Regex to match the issues against.
     :param exclude_keys: set of keys to exclude from negation.
     """
     rule = self.add_neg_pfx(rule, exclude_keys=exclude_keys)
     issues = []
     common._validate_rules({"inbound_rules": [rule],
                             "outbound_rules": []}, issues)
     self.assertTrue(issues, "Rule should have had issues")
     for issue in issues:
         if re.match(exp_issue_re, issue):
             break
     else:
         self.fail("No issue in %s matched regex %s" %
                   (issues, exp_issue_re))
Пример #3
0
 def assert_rule_issue(self, rule, exp_issue_re, exclude_keys=None):
     """Asserts that a rule fails validation with an issue matching
     the regex.
     :param rule: The rule to validate.
     :param str exp_issue_re: Regex to match the issues against.
     :param exclude_keys: set of keys to exclude from negation.
     """
     rule = self.add_neg_pfx(rule, exclude_keys=exclude_keys)
     issues = []
     common._validate_rules({
         "inbound_rules": [rule],
         "outbound_rules": []
     }, issues)
     self.assertTrue(issues, "Rule should have had issues")
     for issue in issues:
         if re.match(exp_issue_re, issue):
             break
     else:
         self.fail("No issue in %s matched regex %s" %
                   (issues, exp_issue_re))
Пример #4
0
    def assert_rule_valid(self,
                          rule,
                          exp_updated_rule=None,
                          exclude_keys=None):
        """Asserts that a rule passes validation.

        :param rule: Rule to validate.
        :param exp_updated_rule: Expected canonical version of the rule, after
               validation.
        :param exclude_keys: Set of keys to exclude from negation.
        """
        if exp_updated_rule is None:
            exp_updated_rule = copy.deepcopy(rule)
        rule = self.add_neg_pfx(rule, exclude_keys=exclude_keys)
        exp_updated_rule = self.add_neg_pfx(exp_updated_rule,
                                            exclude_keys=exclude_keys)

        rule_copy = copy.deepcopy(rule)
        issues = []
        common._validate_rules(
            {
                "inbound_rules": [rule_copy],
                "outbound_rules": []
            }, issues)
        self.assertFalse(issues, "Rule should have no issues, got %s" % issues)
        self.assertEqual(rule_copy, exp_updated_rule)

        rule_copy = copy.deepcopy(rule)
        common._validate_rules(
            {
                "inbound_rules": [],
                "outbound_rules": [rule_copy]
            }, issues)
        self.assertFalse(
            issues, "Rule should have no issues (outbound), "
            "got %s" % issues)
        self.assertEqual(rule_copy, exp_updated_rule)