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))
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))
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))
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)
def test_check_no_subrules(self): rule_def = {'and': {'rules': []}} r = rules.And(rule_def, {}) self.assertFalse(r.check(self.msg))