o _ @sddlZddlZddlZddlZddlZddlZejdkr"ddlZnddlZddl m Z ddl m Z m Z mZmZGdddejZGdd d ejZdS) Nr) DummyJail) CONFIG_DIR asyncserverUtils uni_decodec@seZdZddZddZdS)TestSMTPServercGstjj|g|Rd|_dS)NF)smtpd SMTPServer__init__ready)selfargsrC/usr/lib/python3/dist-packages/fail2ban/tests/action_d/test_smtp.pyr %s zTestSMTPServer.__init__cKs6||_||_||_||_tddt||_d|_dS)Nz\n[\t ] T) peermailfromrcpttosorg_dataresubr datar)rrrrrkwargsrrrprocess_message)s  zTestSMTPServer.process_messageN)__name__ __module__ __qualname__r rrrrrr #s r csdeZdZfddZfddZdddZd d Zd d Zdd dZddZ ddZ ddZ Z S)SMTPActionTestcstjjddttt_tj t dd}tj | d}tjdkr2tj||}nt||}tdd_jjd}|jjd d |d _d _tjtj d fddid_!d j!_"j!#dS)zCall before every test case.zsmtp.py)actionzaction.dz.pyr) localhostrNtestz localhost:%i)hostTactivecsjSN)_activerrrrLsz&SMTPActionTest.setUp..)targetr)$unittestF2BSkipIfCfgMissingsuperr setUprjailospathjoinrbasenamerstripsys version_info importlib machinerySourceFileLoader load_moduleimp load_sourcer r socket getsocknameActionr!r( threadingThreadrloop _loop_threaddaemonstart)r pythonModulepythonModuleNamecustomActionModuleport __class__r)rr05s2   zSMTPActionTest.setUpcs,|jd|_|jtt|dS)zCall after every test case.FN)r closer(rEr4r/r tearDownr)rLrrrOPs  zSMTPActionTest.tearDownrFcs2|r|d}dj_|tfdd|dS)NFcjjSr')r rrr)rrr*[z/SMTPActionTest._exec_and_wait..)r rrwait_for)rdoactiontimeoutshortrr)r_exec_and_waitWs zSMTPActionTest._exec_and_waitcCN||jj||jjd||jjdg|d|jj |jj vdS)Nfail2banrootzSubject: [Fail2Ban] %s: started) rWr!rG assertEqualr rr assertTruer1namerr)rrr testStart]s zSMTPActionTest.testStartcCrX)NrYrZzSubject: [Fail2Ban] %s: stopped) rWr!stopr[r rrr\r1r]rr)rrrtestStopeszSMTPActionTest.testStopcsBdddddd|rdd<jfd d |d |r(tfd d dSjjd jjdgdjjdf} |jj  ddjj dj _ fdd  djj dj _ fdd  djj dj _ fdd  djj dS)Nz 127.0.0.2rz Test fail 1 zTest fail 1 Test Fail2 z"Test fail 1 Test Fail2 Test Fail3 )ipfailuresmatches ipjailmatches ipmatchesr#restoredc jSr'r!banraInforrrr*x z)SMTPActionTest._testBan..)rVcrQr')r rrr)rrr*zrRrYrZz!Subject: [Fail2Ban] %s: banned %sraz %i attemptsrbrccrgr'rhrrjrrr*rlrdcrgr'rhrrjrrr*rlrecrgr'rhrrjrrr*rl) rW assertRaisesAttributeErrorr[r rrr1r]assertInrr!rc)rrfsubjectrrjr_testBanms< zSMTPActionTest._testBancCs |dSr'rqr)rrrtestBans zSMTPActionTest.testBancCs|jdddS)NT)rfrrr)rrrtestNOPByRestoredsz SMTPActionTest.testNOPByRestoredcCs||jj||jjd||jjdgd|j_d|j_d|j_ ||jj||jjd| d|jj|jjf|jj v|t |jjt ddgdS)NrYrZTestztest@example.comz#test@example.com, test2@example.comz From: %s <%s>ztest2@example.com) rWr!rGr[r rrfromnamefromaddrtoaddrr\rsetr)rrr testOptionss zSMTPActionTest.testOptions)rF)F) rrrr0rOrWr^r`rqrsrtrz __classcell__rrrLrr 3s    #r )r2r rBr,rr7r8r9r= dummyjailrutilsrrrr r r TestCaser rrrrs