def testSetRules(self): firewall = MessageFirewall() message = TaggedMessage([]) firewall.setRules("stop as NEW") return firewall.analyze(message, getDefaultDomain()).addCallback( lambda result: self.assertEquals("NEW", result) )
def testDebug(self): firewall = MessageFirewall( "do ruleTrue() mark xxx\nif not xxx do ruleFalse() mark zzz\nskip to 100\n200: stop as C\n100: if yyyy stop as D\nif xx stop as A\nstop as B" ) message = TaggedMessage([]) def logCallback(log): self.fwLog = log return firewall.analyze(message, getDefaultDomain(), debug=True, logCallback=logCallback).addCallback( lambda _: self.assertEquals( [ "[ENTER]: do ruleTrue() mark xxx", "Result: True", "[ENTER]: if not xxx do ruleFalse() mark zzz", "Result: False", "Tagged message with tags: ['zzz'], current tags are: ['zzz']", "[ENTER]: skip to 100", "Skipping to 100", "Labels for skip don't match 100 != 200", "Stopped skip to at label 100", "[ENTER]: 100: if yyyy stop as D", "[ENTER]: if xx stop as A", "[ENTER]: stop as B", "Stopping firewall with result: B", ], self.fwLog, ) )
def testPickling(self): import pickle fw = MessageFirewall() self.assertEquals("", pickle.loads(pickle.dumps(fw)).getRules()) fw.setRules("stop as OK") self.assertEquals("stop as OK", pickle.loads(pickle.dumps(fw)).getRules())
def testAnalyze5(self): firewall = MessageFirewall("10: do ruleTrue()\nskip to 10") message = TaggedMessage([]) def checkSkipFall(failure): failure.trap(errors.SkipToFallthroughError) return ( firewall.analyze(message, getDefaultDomain()) .addCallback(lambda _: self.assert_(False)) .addErrback(checkSkipFall) )
def testCompile(self): firewall = MessageFirewall() self.assertEqual( [ SkipFirewallStatement(skip_label=345, if_tags=None, if_inverted=False, label=None), DoFirewallStatement( func_name="ruleTrue", func_args={"a": 3, "b": "ddd"}, markers=["spam"], if_tags=["analyzed", "skipped"], if_inverted=False, label=None, ), StopFirewallStatement(stop_marker="SPAM", if_tags=["a", "b", "c"], if_inverted=True, label=345), ], firewall.compile( firewall.parse( 'skip to 345\nif analyzed, skipped do ruleTrue(a=3, b="ddd") mark spam\n345: if not a, b, c stop as SPAM' ) ), )
class FirewallRulesSetCommandTestCase(unittest.TestCase): """ Тест на L{spamfighter.api.message.firewall.FirewallRulesSetCommand}. """ def setUp(self): self.c = FirewallRulesSetCommand() self.firewall = MessageFirewall() getDefaultDomain().set('testFIREWALL', self.firewall) def tearDown(self): getDefaultDomain().delete('testFIREWALL') def testRun(self): self.c.params.getUnserialized({'partner' : None, 'firewall' : 'testFIREWALL', 'rules' : 'stop as TEST'}) return self.c.run().addCallback(lambda _: self.assertEquals('stop as TEST', self.firewall.getRules())) def testRun(self): self.c.params.getUnserialized({'partner' : None, 'firewall' : 'testFIREWALL', 'rules' : 'YYYY'}) return self.c.run().addCallback(lambda _: self.assert_(False)).addErrback(lambda failure: failure.trap('spamfighter.core.commands.errors.FirewallSyntaxError'))
def testSyntaxCheck(self): firewall = MessageFirewall() firewall.syntaxCheck("stop as Y") self.assertRaises(SyntaxError, firewall.syntaxCheck, "XXXX")
def testGetRules(self): firewall = MessageFirewall() self.assertEquals("", firewall.getRules()) firewall = MessageFirewall("stop as X") self.assertEquals("stop as X", firewall.getRules())
def testAnalyze7(self): firewall = MessageFirewall("do ruleTrue() mark xxx\nif xx stop as A\nstop as B") message = TaggedMessage([]) return firewall.analyze(message, getDefaultDomain()).addCallback(lambda result: self.assertEquals("B", result))
def testAnalyze6(self): firewall = MessageFirewall("skip to 20\nstop as OK\n20: stop as SPAM") message = TaggedMessage([]) return firewall.analyze(message, getDefaultDomain()).addCallback( lambda result: self.assertEquals("SPAM", result) )
def testAnalyze4(self): firewall = MessageFirewall("do ruleTrue() mark spammed\nif spammed stop as SPAM") message = TaggedMessage([]) return firewall.analyze(message, getDefaultDomain()).addCallback( lambda result: self.assertEquals("UNKNOWN", result) )
def testAnalyze1(self): firewall = MessageFirewall() message = Message([]) return firewall.analyze(message, getDefaultDomain()).addCallback( lambda result: self.assertEquals("UNKNOWN", result) )
def setUp(self): self.c = FirewallRulesSetCommand() self.firewall = MessageFirewall() getDefaultDomain().set('testFIREWALL', self.firewall)
def setUp(self): self.c = FirewallRulesCheckCommand() self.firewall = MessageFirewall('stop as SPAM') getDefaultDomain().set('testFIREWALL', self.firewall)