예제 #1
0
 def test_check_no_match(self):
     rule_def = {'and': {'rules': []}}
     r = rules.And(rule_def, {})
     r1 = mock.Mock()
     r1.check.return_value = False
     r._sub_rules.append(r1)
     r2 = mock.Mock()
     r2.check.return_value = False
     r._sub_rules.append(r2)
     self.assertFalse(r.check(self.msg))
예제 #2
0
 def test_check_short_circuit(self):
     rule_def = {'and': {'rules': []}}
     r = rules.And(rule_def, {})
     r1 = mock.Mock()
     r1.check.return_value = False
     r._sub_rules.append(r1)
     r2 = mock.Mock()
     r2.check.side_effect = AssertionError('r2 should not be called')
     r._sub_rules.append(r2)
     self.assertFalse(r.check(self.msg))
예제 #3
0
 def test_check_pass_second(self):
     rule_def = {'and': {'rules': []}}
     r = rules.And(rule_def, {})
     r1 = mock.Mock()
     r1.check.return_value = True
     r._sub_rules.append(r1)
     r2 = mock.Mock()
     r2.check.return_value = True
     r._sub_rules.append(r2)
     self.assertTrue(r.check(self.msg))
예제 #4
0
 def test_create_recursive(self):
     rule_def = {
         'and': {
             'rules': [{
                 'headers': [{
                     'name': 'to',
                     'substring': '*****@*****.**'
                 }]
             }, {
                 'headers': [{
                     'name': 'cc',
                     'substring': '*****@*****.**'
                 }]
             }],
         },
     }
     r = rules.And(rule_def, {})
     self.assertIsInstance(r._sub_rules[0], rules.Headers)
     self.assertIsInstance(r._sub_rules[1], rules.Headers)
     self.assertEqual(len(r._sub_rules), 2)
예제 #5
0
 def test_check_no_subrules(self):
     rule_def = {'and': {'rules': []}}
     r = rules.And(rule_def, {})
     self.assertFalse(r.check(self.msg))