def testJailActionBrokenDef(self): jail = JailReader('brokenactiondef', basedir=os.path.join('testcases','config')) self.assertTrue(jail.read()) self.assertFalse(jail.getOptions()) self.assertTrue(jail.isEnabled()) self.assertTrue(self._is_logged('Error in action definition joho[foo')) self.assertTrue(self._is_logged('Caught exception: While reading action joho[foo we should have got 1 or 2 groups. Got: 0'))
def testJailActionFilterMissing(self): jail = JailReader('missingbitsjail', basedir=os.path.join('testcases','config')) self.assertTrue(jail.read()) self.assertFalse(jail.getOptions()) self.assertTrue(jail.isEnabled()) self.assertTrue(self._is_logged("Found no accessible config files for 'filter.d/catchallthebadies' under testcases/config")) self.assertTrue(self._is_logged('Unable to read the filter'))
def testJailActionEmpty(self): jail = JailReader('emptyaction', basedir=os.path.join('testcases','config')) self.assertTrue(jail.read()) self.assertTrue(jail.getOptions()) self.assertTrue(jail.isEnabled()) self.assertTrue(self._is_logged('No filter set for jail emptyaction')) self.assertTrue(self._is_logged('No actions were defined for emptyaction'))
def testStockSSHJail(self): jail = JailReader('ssh-iptables', basedir='config') # we are running tests from root project dir atm self.assertTrue(jail.read()) self.assertTrue(jail.getOptions()) self.assertFalse(jail.isEnabled()) self.assertEqual(jail.getName(), 'ssh-iptables') jail.setName('ssh-funky-blocker') self.assertEqual(jail.getName(), 'ssh-funky-blocker')
def testGlob(self): d = tempfile.mkdtemp(prefix="f2b-temp") # Generate few files # regular file open(os.path.join(d, 'f1'), 'w').close() # dangling link os.symlink('nonexisting', os.path.join(d, 'f2')) # must be only f1 self.assertEqual(JailReader._glob(os.path.join(d, '*')), [os.path.join(d, 'f1')]) # since f2 is dangling -- empty list self.assertEqual(JailReader._glob(os.path.join(d, 'f2')), [])
def testGlob(self): d = tempfile.mkdtemp(prefix="f2b-temp") # Generate few files # regular file f1 = os.path.join(d, 'f1') open(f1, 'w').close() # dangling link f2 = os.path.join(d, 'f2') os.symlink('nonexisting',f2) # must be only f1 self.assertEqual(JailReader._glob(os.path.join(d, '*')), [f1]) # since f2 is dangling -- empty list self.assertEqual(JailReader._glob(f2), []) self.assertTrue(self._is_logged('File %s is a dangling link, thus cannot be monitored' % f2)) self.assertEqual(JailReader._glob(os.path.join(d, 'nonexisting')), []) os.remove(f1) os.remove(f2) os.rmdir(d)
def testFailModelRead(self): """ Test that the client can successfully read a fail model and send it to the server """ #Naive way to reach "testcases/files" #TODO: Look at other tests and see how thay do that. I suspect #that it all happens in fail2ban-testcases from os.path import dirname test_dir = dirname(__file__) fail_model_jail = JailReader("ats-ddos-model") fail_model_jail.setBaseDir(test_dir + "/files") fail_model_jail.read() fail_model_jail.getOptions()
def testSplitAction(self): action = "mail-whois[name=SSH]" expected = ['mail-whois', {'name': 'SSH'}] result = JailReader.splitAction(action) self.assertEqual(expected, result) self.assertEqual(['mail.who_is', {}], JailReader.splitAction("mail.who_is")) self.assertEqual(['mail.who_is', {'a':'cat', 'b':'dog'}], JailReader.splitAction("mail.who_is[a=cat,b=dog]")) self.assertEqual(['mail--ho_is', {}], JailReader.splitAction("mail--ho_is")) self.assertEqual(['mail--ho_is', {}], JailReader.splitAction("mail--ho_is['s']")) self.assertTrue(self._is_logged("Invalid argument ['s'] in ''s''")) self.assertEqual(['mail', {'a': ','}], JailReader.splitAction("mail[a=',']")) self.assertRaises(ValueError, JailReader.splitAction ,'mail-how[')
def testSplitAction(self): action = "mail-whois[name=SSH]" expected = ['mail-whois', {'name': 'SSH'}] result = JailReader.splitAction(action) self.assertEquals(expected, result)
def testSplitAction(self): action = "mail-whois[name=SSH]" expected = ['mail-whois', {'name': 'SSH'}] result = JailReader.splitAction(action) self.assertEqual(expected, result)