def testCheckLength(self):
        self.assertTrue(lengthCheck(domain=getDefaultDomain(), message=self.message1))

        self.assertFalse(lengthCheck(domain=getDefaultDomain(), message=self.message1, minLength=64))
        self.assertTrue(lengthCheck(domain=getDefaultDomain(), message=self.message1, minLength=10))

        self.assertTrue(lengthCheck(domain=getDefaultDomain(), message=self.message1, maxLength=64))
        self.assertFalse(lengthCheck(domain=getDefaultDomain(), message=self.message1, maxLength=10))
    def setUp(self):
        getDefaultDomain().set('testStorage', DomainMemoryStorage(storage=MemoryStorage(cleanupInterval=0)))

        self.message1 = TransitMessage(serialized={ 'text' : u'мама мыла раму папы', 'ip': '192.168.140.4'}).getMessage(getDefaultDomain())
        self.message2 = TransitMessage(serialized={ 'text' : u'папа'}).getMessage(getDefaultDomain())
        self.message3 = TransitMessage(serialized={ 'text' : u'привет всем в чате!', 'from': 15}).getMessage(getDefaultDomain())
        self.message4 = TransitMessage(serialized={ 'text' : u'и тебе привет!', 'from': 16, 'ip': '192.168.140.4'}).getMessage(getDefaultDomain())
        startUpTestTimer(1000)
Beispiel #3
0
    def setUp(self):
        model = BayesModel()
        model.train(u"мама мыла раму", True)
        model.train(u"папа пошел гулять", False)
        getDefaultDomain().set('testModel', model)

        self.message1 = TransitMessage(serialized={ 'text' : u'мама'}).getMessage(getDefaultDomain())
        self.message2 = TransitMessage(serialized={ 'text' : u'папа'}).getMessage(getDefaultDomain())
    def testCountIPMessages(self):
        d = defer.succeed(None)

        for i in xrange(15):
            d.addCallback(lambda _: userFrequencyCheck(domain=getDefaultDomain(), message=self.message4, attribute="ip", storage="testStorage", count=16, timeout=10). \
                addCallback(self.assertTrue))

        d.addCallback(lambda _: userFrequencyCheck(domain=getDefaultDomain(), message=self.message4, attribute="ip", storage="testStorage", count=16, timeout=10). \
            addCallback(self.assertFalse)).addCallback(lambda _: advanceTestTimer(10)). \
        addCallback(lambda _: userFrequencyCheck(domain=getDefaultDomain(), message=self.message4, attribute="ip", storage="testStorage", count=16, timeout=10). \
            addCallback(self.assertTrue))

        return d
Beispiel #5
0
    def setUp(self):
        getDefaultDomain().set('testStorage', DomainMemoryStorage(storage=MemoryStorage(cleanupInterval=0)))

        self.message1 = TransitMessage(serialized={ 'text' : u'мама мыла раму папы'}).getMessage(getDefaultDomain())
        self.message2 = TransitMessage(serialized={ 'text' : u'папа'}).getMessage(getDefaultDomain())
        self.message3 = TransitMessage(serialized={ 'text' : u'привет всем в чате!'}).getMessage(getDefaultDomain())
        self.message4 = TaggedMessage(TransitMessage(serialized={ 'text' : u'и тебе привет!',}).getMessage(getDefaultDomain()))
        self.message4.addTag('good')
        self.message4.addTag('bad')

        startUpTestTimer(1000)

        self.log = MessageLog(storage='testStorage')
        getDefaultDomain().set('testLog', self.log)
 def testSetRules(self):
     firewall = MessageFirewall()
     message = TaggedMessage([])
     firewall.setRules("stop as NEW")
     return firewall.analyze(message, getDefaultDomain()).addCallback(
         lambda result: self.assertEquals("NEW", result)
     )
Beispiel #7
0
    def testDefaultDomain(self):
        domain = getDefaultDomain()

        self.assert_(IDomain.providedBy(domain))
        self.assertEqual(None, domain.parent())
        # у домена по умолчанию не может быть явных детей, т.к. он не допускает итерацию
        return domain.children().addCallback(self.assertEqual, {})
    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)
        )
Beispiel #10
0
    def setUp(self):
        startUpTestTimer(100)
        getDefaultDomain().set('testStorage', DomainMemoryStorage(storage=MemoryStorage(cleanupInterval=0)))
        self.log = MessageLog(storage='testStorage')
        getDefaultDomain().set('testLog', self.log)

        self.message1 = TransitMessage(serialized={ 'text' : u'мама'}).getMessage(getDefaultDomain())
        self.message2 = TransitMessage(serialized={ 'text' : u'папа'}).getMessage(getDefaultDomain())
Beispiel #11
0
    def setUp(self):
        startUpTestTimer(100)
        getDefaultDomain().set('testStorage', DomainMemoryStorage(storage=MemoryStorage(cleanupInterval=0)))
        self.log = MessageLog(storage='testStorage')
        getDefaultDomain().set('testLog', self.log)

        self.message1 = TransitMessage(serialized={ 'text' : u'мама'}).getMessage(getDefaultDomain())
        self.message2 = TransitMessage(serialized={ 'text' : u'папа'}).getMessage(getDefaultDomain())

        self.c = MessageLogFetchCommand()
        self.c.params.getUnserialized({'partner' : None, 'log' : 'testLog'})

        return self.log.put(message=self.message1, when=90).addCallback(lambda _: self.log.put(message=self.message2, when=95, tags=['aaa']))
Beispiel #12
0
 def tearDown(self):
     getDefaultDomain().delete('testMODEL')
Beispiel #13
0
 def setUp(self):
     self.c = FakeModelCommand()
     self.model = BayesModel()
     getDefaultDomain().set('testMODEL', self.model)
 def checkIt(rootDomain):
     self.assert_(isinstance(rootDomain, BaseDomain))
     self.assert_(rootDomain.parent() is getDefaultDomain())
Beispiel #15
0
 def testAnalyzeMessage(self):
     self.assertFalse(messageFloodCheck(domain=getDefaultDomain(), message=self.message5))
     self.assertTrue(messageFloodCheck(domain=getDefaultDomain(), message=self.message5, minLength=30))
     self.assertFalse(messageFloodCheck(domain=getDefaultDomain(), message=self.message6))
 def testHasAttribute(self):
     self.assertFalse(hasAttribute(domain=getDefaultDomain(), message=self.message1, attribute='from'))
     self.assertTrue(hasAttribute(domain=getDefaultDomain(), message=self.message3, attribute='from'))
 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))
Beispiel #18
0
 def testNoLog(self):
     return defer.maybeDeferred(messageLogPut, log="__noSUCHLOG__", domain=getDefaultDomain(), message=self.message1).addCallback(lambda _: self.assert_(False)) \
             .addErrback(lambda failure: failure.trap("spamfighter.core.commands.errors.AttributeKeyException"))
Beispiel #19
0
 def tearDown(self):
     tearDownTestTimer()
     getDefaultDomain().delete('testStorage')
     getDefaultDomain().delete('testLog')
Beispiel #20
0
 def tearDown(self):
     getDefaultDomain().delete('testVALUE')
     getDefaultDomain().delete('testOBJECT')
Beispiel #21
0
 def setUp(self):
     getDefaultDomain().set('testVALUE', 33)
     getDefaultDomain().set('testOBJECT', TestObject())
 def testAnalyze1(self):
     firewall = MessageFirewall()
     message = Message([])
     return firewall.analyze(message, getDefaultDomain()).addCallback(
         lambda result: self.assertEquals("UNKNOWN", 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)
     )
Beispiel #24
0
 def setUp(self):
     getDefaultDomain().set('testModel', BayesModel())
 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)
     )
Beispiel #26
0
 def setUp(self):
     self.message5 = TransitMessage(serialized={ 'text' : u'!!!!!!!!!!!!!!!!!!!!!!', 'from': 16}).getMessage(getDefaultDomain())
     self.message6 = TransitMessage(serialized={ 'text' : u'покажи сиськи! покажи сиськи! покажи сиськи! покажи сиськи! покажи сиськи! покажи сиськи! покажи сиськи! покажи сиськи!', 'from': 16}).getMessage(getDefaultDomain())
Beispiel #27
0
 def testNotALog(self):
     return defer.maybeDeferred(messageLogPut, log="messageDomain", domain=getDefaultDomain(), message=self.message1).addCallback(lambda _: self.assert_(False)) \
             .addErrback(lambda failure: failure.trap("spamfighter.core.commands.errors.NotAMessageLogError"))
 def testFrequencyCheckOneUser(self):
     return messageFrequencyCheck(domain=getDefaultDomain(), message=self.message3, storage="testStorage", timeout=10, count=2). \
             addCallback(self.assertTrue)
 def setUp(self):
     self.message = TaggedMessage([])
     self.pack = FirewallMessagePack(self.message, getDefaultDomain())
Beispiel #30
0
 def testPut2(self):
     return defer.maybeDeferred(messageLogPut, log="testLog", domain=getDefaultDomain(), message=self.message1, tag='oops').addCallback(lambda _: self.log.fetch()) \
             .addCallback(self.assertEquals, [LogEntry(when=100, tags=['oops'], message=TransitMessage(message=self.message1), id=1)])