o ;s*b@sddlZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z ddl mZdd lmZmZejd krFdd lmZmZndd lmZmZd d ZejdkraGdddeZdSdS)Nwrapstimeout)SSLError) CallingMap) DummyJail)IPAddr)LogCaptureTestCase CONFIG_DIR)) HTTPErrorURLErrorcstfdd}|S)zYHelper to decorate tests to skip in case of timeout/http-errors like "502 bad gateway". c sxz |g|RWSttttfy;}z"t|ts0dt|vr0t|dr/|jdkr0|jdkr0t d|d}~ww)Nz timed outcodeizSkip test because of %s) rrrr isinstancestrhasattrrunittestSkipTest)selfargsefE/usr/lib/python3/dist-packages/fail2ban/tests/action_d/test_badips.pywrapper(sz&skip_if_not_available..wrapperr)rrrrrskip_if_not_available%sr)rcseZdZdZdZdZefddZfddZeddZ ed d Z ed d Z ed dZ eddZ eddZZS)BadIPsActionTest)TNNc stt|tjt|_|jj dt j t dd}tjdrLtjs>tjs2|jj|t_tjjt_|jj|tjjtjjrGdnddt_tjds[tdtjd |jjj d |d dd d tjjrkdnddd|jjd |_dS)zCall before every test case.testzaction.dz badips.pyrrrz.Skip test because service is not available: %sbadipsssh2wr <)category banactionagescorer)initOptsN)superr!setUprF2BSkipIfNoNetworkr jailactionsaddospathjoinr available modAction pythonModule_load_python_moduleAction isAvailablefastraction)rpythonModuleName __class__rrr0:s,       zBadIPsActionTest.setUpcs&|jjr |jjtt|dS)zCall after every test case.N)r@_timercancelr/r!tearDownrrBrrrF\s zBadIPsActionTest.tearDowncCs\|j}|d||t|dk|tt|jdd|tt|jddd|j_dS)Nr& r*zinvalid-categorymail) r@ getCategoriesassertIn assertTruelen assertRaises ValueErrorsetattr bancategory)r categoriesrrr testCategorycs     zBadIPsActionTest.testCategorycCs(|tt|jddd|j_d|j_dS)Nr-r 3)rNrOrPr@r-rGrrr testScoress zBadIPsActionTest.testScorecCs |tt|jddd|j_dS)Nr+zinvalid-actionr")rNrOrPr@r+rGrrr testBanactionys   zBadIPsActionTest.testBanactioncCs<|tt|jdd|tt|jddd|j_d|j_dS)N updateperiodiri900)rNrOrPr@rXrGrrrtestUpdateperiods   z!BadIPsActionTest.testUpdateperiodcCsZ|j|t|jjdkdt|jj|jjf|j|t|jjdkdS)NrHz%s is fewer as 10: %rr)r@startrLrM _bannedipsstoprGrrr testStartStops  zBadIPsActionTest.testStartStopcCsntdtdi}|j||jddd|d|j_d|d<|tj j |jj||jdd dd d dS) Nipz 192.0.2.1zbadips.com: banT)waitz0f2b-this-category-dont-available-test-suite-onlyz IP is invalidzinvalid categoryF)r`all) rr r@ban assertLoggedpruneLog _categoryrNr!r;r)raInforrr testBanIPs zBadIPsActionTest.testBanIP)__name__ __module__ __qualname__r9r;r:rr0rFrSrVrWrZr^rh __classcell__rrrBrr!4s& !     r!)r6rsys functoolsrsocketrsslractiontestcaser dummyjailr servertestcaser utilsr r version_info urllib.errorrrrr!rrrrs"