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 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 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)
     )