From ef7f3230ecc3c07d73074d0889df9cac973d1f06 Mon Sep 17 00:00:00 2001 From: sebres Date: Wed, 3 Dec 2014 10:54:32 +0100 Subject: [PATCH] added a test case for upgrade database from v2 (additionally to existing v1); --- fail2ban/tests/databasetestcase.py | 27 +++++++++++++++++++++++++++ fail2ban/tests/files/database_v2.db | Bin 0 -> 16384 bytes 2 files changed, 27 insertions(+) create mode 100644 fail2ban/tests/files/database_v2.db diff --git a/fail2ban/tests/databasetestcase.py b/fail2ban/tests/databasetestcase.py index 48f8b3b3..0d775320 100644 --- a/fail2ban/tests/databasetestcase.py +++ b/fail2ban/tests/databasetestcase.py @@ -112,6 +112,33 @@ class DatabaseTest(LogCaptureTestCase): self.assertRaises(NotImplementedError, self.db.updateDb, Fail2BanDb.__version__ + 1) os.remove(self.db._dbBackupFilename) + def testUpdateDb2(self): + if Fail2BanDb is None: # pragma: no cover + return + shutil.copyfile( + os.path.join(TEST_FILES_DIR, 'database_v2.db'), self.dbFilename) + self.db = Fail2BanDb(self.dbFilename) + self.assertEqual(self.db.getJailNames(), set(['pam-generic'])) + self.assertEqual(self.db.getLogPaths(), set(['/var/log/auth.log'])) + bans = self.db.getBans() + self.assertEqual(len(bans), 2) + # compare first ticket completely: + ticket = FailTicket("1.2.3.7", 1417595494, [ + u'Dec 3 09:31:08 f2btest test:auth[27658]: pam_unix(test:auth): authentication failure; logname= uid=0 euid=0 tty=test ruser= rhost=1.2.3.7', + u'Dec 3 09:31:32 f2btest test:auth[27671]: pam_unix(test:auth): authentication failure; logname= uid=0 euid=0 tty=test ruser= rhost=1.2.3.7', + u'Dec 3 09:31:34 f2btest test:auth[27673]: pam_unix(test:auth): authentication failure; logname= uid=0 euid=0 tty=test ruser= rhost=1.2.3.7' + ]) + ticket.setAttempt(3) + self.assertEqual(bans[0], ticket) + # second ban found also: + self.assertEqual(bans[1].getIP(), "1.2.3.8") + # updated ? + self.assertEqual(self.db.updateDb(Fail2BanDb.__version__), Fail2BanDb.__version__) + # further update should fail: + self.assertRaises(NotImplementedError, self.db.updateDb, Fail2BanDb.__version__ + 1) + # clean: + os.remove(self.db._dbBackupFilename) + def testAddJail(self): if Fail2BanDb is None: # pragma: no cover return diff --git a/fail2ban/tests/files/database_v2.db b/fail2ban/tests/files/database_v2.db new file mode 100644 index 0000000000000000000000000000000000000000..8954c8b5a458d535f48a9dce04d4838a8f82faaf GIT binary patch literal 16384 zcmeI2&1)M+6u@_O)+>L+Ngz>|qC+PZC0bCdkF~Y3f}pCkcHPJ_v1LdIMy#Y&w5dK^ z?K-5C23#NdFBJMeltQ709CGO`&_hl=<`N1fJ>-&8FP)iPeXK3T>cOrQMzGrXc=P7X zZ~XR+-g@V5&a@3wZM7S^jTBDc0N_4Dh~u~fzOLe{^O?g1p;N(k&{rN-OmMgU;-`o( z{D;U~c5cJOSvw=Z2wWV2OX579jQA$=%ZsDVW?}@!fB*zM;2r;e%fYu}U=cHc5nu$) zmB3{I2B-J+#;u1&(`cLJSv(uS&d>b+T(L9djKEkBxB`Qq&;11_{y*d3v#~Ib8NmoJ z0wWQ~f~jC+6ZScCUPN~L?n!+ZI*T0Y&B6; zH|qy&<2J(Qo2K3{(&)gfq@&1iZnphRnrd$!SVlXI+O?Ktr(N3?!pLjQa(u8giRk}g z&GHayl#8%t55sZcl6_OYJ1T)8o2(X|zNik{WF?l0CI>AY+|v;5zPk31&E2z&qpPUim{|9`{5Hy^;_*b*24Mqn6$>o78N zDn-chf5ULGc1B?037nb#BftMe@R|d!`9=Om{&)B@{Bz=0%@*Jx@C6X18#ln7t(WQs z`H3Gd>CJ4ZSK?QOJiO^%CZIPtQM!uk}Yuj>-_eqij4kJ|6Bdp4z zU(lm~HibxX1{Jh>1(e^y*KRI{cJmu|ceOAwn#7VyM{Q3atF2{ra|INWWhhE%32gq)@AHUdSTXl*cC05+d?mlfpRXWY=h0 z7*)--W!KH7(WorDO?BO}t7hHUZ&_VyJ4QysXl-j-+gQ(|JKBA!Tt?g4nzpUwSG66~ z!yu!rJj!Z04KrTN?5t+87=i5|OHp%kMDN(xZA4Y|&u^1!Y;!W{P!8j50 zk@(MJmxq5dzxOx|t1tqSOW?W?6#Dlz=)fN&!FEq;U|3ajR(VliO7{+HK^s+CAiUkg!9FA#-0|za&bZ`a!ujki;i< z^p(@2-QKPWQV%1n=+N(@;r9D^8g7Yxa!q@}EuEDNIT>!veK)e&X2WPzv0OKQ zRMBl6eYvxh{|^yX&P?M|js))01(K<)A~}N4(u`+)y-u<^TBD~GIXxpvpZLKpRY9XE zIUSI~tVcn&i;O3g5RsENXGKZ&gRgqSiSA-Y$J}Wh-Ttm3(&8Qm%5y$x#SadrPHb71 zoV$7R9=(J-Js%bOx)2}nXP&>#8TSKs_cxV=C4 lJMF6D|HmAB2aiXcg2^!gjKG8un1cb(c^1sVz>Mqv{{jH^J%0cI literal 0 HcmV?d00001