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)
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
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) )
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) )
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())
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']))
def tearDown(self): getDefaultDomain().delete('testMODEL')
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())
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))
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"))
def tearDown(self): tearDownTestTimer() getDefaultDomain().delete('testStorage') getDefaultDomain().delete('testLog')
def tearDown(self): getDefaultDomain().delete('testVALUE') getDefaultDomain().delete('testOBJECT')
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) )
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) )
def setUp(self): self.message5 = TransitMessage(serialized={ 'text' : u'!!!!!!!!!!!!!!!!!!!!!!', 'from': 16}).getMessage(getDefaultDomain()) self.message6 = TransitMessage(serialized={ 'text' : u'покажи сиськи! покажи сиськи! покажи сиськи! покажи сиськи! покажи сиськи! покажи сиськи! покажи сиськи! покажи сиськи!', 'from': 16}).getMessage(getDefaultDomain())
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())
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)])