From 0141a6dbe77888e41c863ed61c7d407b3c526983 Mon Sep 17 00:00:00 2001 From: Yaroslav Halchenko Date: Fri, 27 Dec 2013 01:29:02 -0500 Subject: [PATCH] TST: add few more rudimentary tests for Regex to complete its coverage --- fail2ban-testcases | 1 + testcases/servertestcase.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/fail2ban-testcases b/fail2ban-testcases index c1191d0e..8034a4c6 100755 --- a/fail2ban-testcases +++ b/fail2ban-testcases @@ -153,6 +153,7 @@ else: # pragma: no cover #tests.addTest(unittest.makeSuite(servertestcase.StartStop)) tests.addTest(unittest.makeSuite(servertestcase.Transmitter)) tests.addTest(unittest.makeSuite(servertestcase.JailTests)) +tests.addTest(unittest.makeSuite(servertestcase.RegexTests)) tests.addTest(unittest.makeSuite(actiontestcase.ExecuteAction)) tests.addTest(unittest.makeSuite(actionstestcase.ExecuteActions)) # FailManager diff --git a/testcases/servertestcase.py b/testcases/servertestcase.py index 9a4dff11..34d5af0d 100644 --- a/testcases/servertestcase.py +++ b/testcases/servertestcase.py @@ -25,6 +25,7 @@ __copyright__ = "Copyright (c) 2004 Cyril Jaquier" __license__ = "GPL" import unittest, socket, time, tempfile, os, sys +from server.failregex import Regex, FailRegex, RegexException from server.server import Server, logSys from server.jail import Jail from common.exceptions import UnknownJailException @@ -561,3 +562,30 @@ class JailTests(unittest.TestCase): longname = "veryveryverylongname" jail = Jail(longname) self.assertEqual(jail.getName(), longname) + +class RegexTests(unittest.TestCase): + + def testInit(self): + # Should raise an Exception upon empty regex + self.assertRaises(RegexException, Regex, '') + self.assertRaises(RegexException, Regex, ' ') + self.assertRaises(RegexException, Regex, '\t') + + def testStr(self): + # .replace just to guarantee uniform use of ' or " in the %r + self.assertEqual(str(Regex('a')).replace('"', "'"), "Regex('a')") + # Class name should be proper + self.assertTrue(str(FailRegex('')).startswith("FailRegex(")) + + def testHost(self): + self.assertRaises(RegexException, FailRegex, '') + # Testing obscure case when host group might be missing in the matched pattern, + # e.g. if we made it optional. + fr = FailRegex('%%?') + self.assertFalse(fr.hasMatched()) + fr.search("%%") + self.assertTrue(fr.hasMatched()) + self.assertRaises(RegexException, fr.getHost) + + +