ó ö 5Xc@€sìdZddlmZddlmZddlZddlmZddlm Z ddl m Z ddl m Z mZmZmZdd l mZdd lmZeeƒZd d „Zd e fd„ƒYZde fd„ƒYZdS(s@tests for passlib.apache -- (c) Assurance Technologies 2008-2011iÿÿÿÿ(twith_statement(t getLoggerN(tapache(tMissingBackendError(tirange(tTestCasetget_filetset_filetensure_mtime_changed(tu(tto_bytesi cC€sBtjj|ƒ}tjj|ƒ|}tj|||fƒdS(s)backdate file's mtime by specified amountN(tostpathtgetatimetgetmtimetutime(R toffsettatimetmtime((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pytbackdate_file_mtimestHtpasswdFileTestcB€sàeZdZdZdZdZdZdZdZdZ dZ d „Z d „Z d „Z d „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(stest HtpasswdFile classt HtpasswdFilestuser2:2CHkkwa2AtqGs user3:{SHA}3ipNV1GrBtxPmHFC21fCbVCSXIo= user4:pass4 user1:$apr1$t4tc7jTh$GPIWVUo8sQKJlUdV8V5vu0 s4user3:{SHA}3ipNV1GrBtxPmHFC21fCbVCSXIo= user4:pass4 syuser2:pass2x user3:{SHA}3ipNV1GrBtxPmHFC21fCbVCSXIo= user4:pass4 user1:$apr1$t4tc7jTh$GPIWVUo8sQKJlUdV8V5vu0 user5:pass5 suseræ:2CHkkwa2AtqGs suseræ:2CHkkwa2AtqGs suser1:pass1 user1:pass2 s user2:2CHkkwa2AtqGs user3:{SHA}3ipNV1GrBtxPmHFC21fCbVCSXIo= user4:pass4 user1:$apr1$t4tc7jTh$GPIWVUo8sQKJlUdV8V5vu0 user5:$2a$12$yktDxraxijBZ360orOyCOePFGhuis/umyPNJoL5EbsLk.s6SWdrRO user6:$5$rounds=110000$cCRp/xUUGVgwR4aP$p0.QKFS5qLNRqw1/47lXYiAcgIjJK.WjCO8nrEKuUK. cC€st|jƒ}t||jƒtj|ƒ}|j|jƒ|jƒ|j|j|ƒ|j|j ƒ|d|_|j|j|dƒ|j |j ƒtj|dt ƒ}|j|jƒdƒ|j|j|ƒ|j |j ƒ|j dƒtj|dt ƒ}WdQX|j|jƒdƒ|j|j|ƒ|j |j ƒtj|ƒ|jttj|ƒdS(stest constructor autoloadtxtnewts ``autoload=False`` is deprecatedtautoloadN(tmktempRt sample_01RRt assertEqualt to_stringR t assertTrueRt assertFalsetTruetassertWarningListtFalseR tremovet assertRaisestIOError(tselfR tht((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyttest_00_constructor_autoloadBs(   cC€sn|jƒ}t||jƒtjj|ƒ}|j|jƒ|jƒ|j|jdƒ|j |j ƒdS(N( RRRRRt from_pathRRR tNoneRR(R&R R'((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyttest_00_from_pathds  cC€sŠtjj|jƒ}|j|jdƒƒ|j|jdƒƒ|j|jdƒƒ|j|jƒ|j ƒ|j t |jdƒdS(s test delete()tuser1tuser2tuser5suser:N( RRt from_stringRRtdeleteRRRt sample_02R$t ValueError(R&R'((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyttest_01_deletels cC€s|jƒ}d}t||ƒtj|ƒ}|jdƒ|jt|ƒ|ƒtj|dtƒ}|jdƒ|jt|ƒdƒdS(Nsuser1:pass1 user2:pass2 R,tautosaves user2:pass2 (RRRRR0RRR (R&R tsampleR'((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyttest_01_delete_autosavews    cC€s>tjj|jddƒ}|j|jddƒƒ|j|jddƒƒ|j|jƒ|j ƒ|j dƒ tjj|jddƒ}Wd QX|j|jddƒƒ|j|jddƒƒ|j|jƒ|j ƒ|j t |jd d ƒ|j d ƒ|j dd ƒWd QX|j|jdd ƒƒd S(stest set_password()tdefault_schemet plaintextR-tpass2xR.tpass5s``default`` is deprecatedtdefaultNsuser:tpasssupdate\(\) is deprecatedttest(RRR/RRt set_passwordRRRt sample_03R!R$R2tupdatetcheck_password(R&R'((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyttest_02_set_password„s !cC€s™|jƒ}d}t||ƒtj|ƒ}|jddƒ|jt|ƒ|ƒtj|dddtƒ}|jddƒ|jt|ƒdƒdS(Ns user1:pass1 R,tpass2R7R8R4s user1:pass2 (RRRRR>RRR (R&R R5R'((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyttest_02_set_password_autosave›s  cC€sÀd„}|j|dƒdƒ|j|dƒdƒ|jt|dƒ|j|dƒtjdƒ|j|dƒtjdƒ|j|dƒtjdƒ|j|dƒtjdƒdS( s%test set_password() -- default_schemecS€s;tjd|ƒ}|jddƒ|jj|jdƒƒS(NR7R,tpass1(RRR>tcontexttidentifytget_hash(tschemeR'((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pytcheck«st sha256_cryptt des_crypttxxxtportabletportable_apache_22thost_apache_22N(RR$tKeyErrorRthtpasswd_defaultsR*(R&RJ((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyt#test_02_set_password_default_scheme¨s cC€sqtjj|jƒ}|jddƒ|jdƒ|jddƒ|jt|jƒƒdddddgƒdS( s test users()R.R:tuser3tpass3R,R-tuser4N( RRR/RR>R0Rtsortedtusers(R&R'((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyt test_03_users¿s  cC€sPtjj|jƒ}|jt|jddƒ|j|jddƒdkƒx”t ddƒD]ƒ}t |ƒ}yH|j|jd|d|ƒƒ|j|jd|dƒt kƒWq]t k rß|dkrÙq]n‚q]Xq]W|jt |jddƒ|jd gd ƒ7|j|jd d ƒƒ|j|jd d ƒƒWdQXdS(stest check_password()itpass9tuser9ituserR<t5suser:sverify\(\) is deprecatediR,RERCN(RRR/t sample_05R$t TypeErrorRARR*RtstrR"RR2R!tverifyR(R&R'ti((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyttest_04_check_passwordÇs  !'   cC€s_|jƒ}t|dƒt|dƒtj|ddƒ}|j|jƒdƒ|jddƒ|jƒ|j|jƒdƒt||j ƒ|jƒ|j|jƒ|j ƒ|jdd ƒ|j ƒ|j|jƒ|j ƒtjƒ}|j t |j ƒ|j t |jƒt||j ƒtjƒ}|j |ƒ|j|jddƒƒd S( s test load()RiR7R8R,REs user1:pass1 R.R:N(RRRRRRRR>tload_if_changedRtloadR$t RuntimeErrort sample_dupRRA(R&R thathbthc((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyt test_05_loadás*         cC€sÄ|jƒ}t||jƒtj|ƒ}|jdƒ|jdƒ|jƒ|jt|ƒ|j ƒtjddƒ}|j ddƒ|j t |jƒ|j|ƒ|jt|ƒdƒdS(s test save()R,R-R7R8REs user1:pass1 N( RRRRRR0tsaveRRR1R>R$Rf(R&R R'Ri((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyt test_06_saves     cC€sç|jttjddƒtjj|jdddtƒ}|j|jƒt dƒgƒ|j dƒ tjj|jddƒ}WdQX|j|jƒdgƒtjj|j dd dtƒ}|j|jƒt dƒgƒdS( stest 'encoding' kwdtencodingsutf-16sutf-8treturn_unicodes user\u00e6s``encoding=None`` is deprecatedNsuseræslatin-1( R$R2RRR/tsample_04_utf8R RRXR R!R*tsample_04_latin1(R&R'((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyttest_07_encodingss !cC€s“tjj|jƒ}|j|jdƒdƒ|j|jdƒdƒ|j|jdƒdƒ|jdƒ|j|jdƒdƒWdQXdS(stest get_hash()RTs!{SHA}3ipNV1GrBtxPmHFC21fCbVCSXIo=RVtpass4R.sfind\(\) is deprecatedN( RRR/RRRHR*R!tfind(R&R'((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyttest_08_get_hash0s cC€sTtjj|jƒ}|j|jƒ|jƒtjƒ}|j|jƒdƒdS(stest to_stringRN(RRR/RRR(R&R'((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyttest_09_to_string:s cC€s/tjddtdtddƒ}t|ƒdS(NtfakepathR4RRnslatin-1(RRR trepr(R&R'((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyt test_10_reprEs!cC€s6|jttjjdƒ|jttjjdƒdS(Nsrealm:user1:pass1 spass1 (R$R2RRR/(R&((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyttest_11_malformedIscC€s#|jttjjdddƒdS(NRR (R$R_RRR/R*(R&((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyttest_12_from_stringOscC€s tdƒ}tjj|ƒ}|jt|jƒƒdddddgƒ|jddƒ|jt|jƒƒdddddgƒ|jdd ƒ|jt|jƒƒddddddgƒ|jdƒ|jt|jƒƒdddddgƒtd ƒ}|j|j ƒ|ƒd S( swhitespace & comment handlings` user2:pass2 user4:pass4 user7:pass7 user1:pass1 # legacy users #user6:pass6 user5:pass5 R,R-RVR.tuser7talthash4tuser6talthash6sd user2:pass2 user4:althash4 user1:pass1 # legacy users #user6:pass6 user5:pass5 user6:althash6 N( R RRR/RRWRXtset_hashR0R(R&tsourceR'ttarget((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyttest_13_whitespaceTs ++. + (t__name__t __module__t__doc__tdescriptionPrefixRR1R?RpRqRgR^R(R+R3R6RBRDRSRYRcRkRmRrRuRvRyRzR{Rƒ(((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyRs6 "      %     tHtdigestFileTestcB€s§eZdZdZdZdZdZdZdZd„Z d„Z d „Z d „Z d „Z d „Zd „Zd„Zd„Zd„Zd„Zd„Zd„ZRS(stest HtdigestFile classt HtdigestFiles´user2:realm:549d2a5f4659ab39a80dac99e159ab19 user3:realm:a500bb8c02f6a9170ae46af10c898744 user4:realm:ab7b5d5f28ccc7666315f508c7358519 user1:realm:2a6cf53e7d8f8cf39d946dc880b14128 sZuser3:realm:a500bb8c02f6a9170ae46af10c898744 user4:realm:ab7b5d5f28ccc7666315f508c7358519 sáuser2:realm:5ba6d8328943c23c64b50f8b29566059 user3:realm:a500bb8c02f6a9170ae46af10c898744 user4:realm:ab7b5d5f28ccc7666315f508c7358519 user1:realm:2a6cf53e7d8f8cf39d946dc880b14128 user5:realm:03c55fdc6bf71552356ad401bdb9af19 s0useræ:realmæ:549d2a5f4659ab39a80dac99e159ab19 s.useræ:realmæ:549d2a5f4659ab39a80dac99e159ab19 cC€s–|jƒ}t||jƒtj|ƒ}|j|jƒ|jƒtj|dtƒ}|j|jƒdƒtj |ƒ|j t tj|ƒdS(stest constructor autoloadRRN( RRRRR‰RRR R R#R$R%(R&R R'((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyR(£s  cC€sÈtjj|jƒ}|j|jddƒƒ|j|jddƒƒ|j|jddƒƒ|j|jddƒƒ|j|jƒ|j ƒ|j t |jddƒ|j t |jdd ƒd S( s test delete()R,trealmR-R.RTtrealm5suser:R\srealm:N( RR‰R/RRR0RRRR1R$R2(R&R'((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyR3µscC€sÎ|jƒ}t||jƒtj|ƒ}|j|jddƒƒ|j|jddƒƒ|j|jddƒƒ|jt |ƒ|jƒt |_ |j|jddƒƒ|jt |ƒ|j ƒdS(NR,RŠRTR‹R.R-( RRRRR‰RR0RRRR R4R1(R&R R'((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyR6Äs  cC€sitjj|jƒ}|j|jdddƒƒ|j|jdddƒƒ|j|jƒ|j ƒ|j t |jddƒd|_ |jddƒ|j dddƒ|j t|jddd ƒ|j t|jd d dd ƒ|j t|jd d d ƒ|j t|jd dd d ƒ|jdƒ|jdddƒWdQX|j|j ddƒƒdS(s test update()R-RŠR9R.R:RUtrealm2suser:R<R iR\srealm:trsupdate\(\) is deprecatedR=N(RR‰R/RRR>RRRR?R$R_t default_realmRAR2R!R@(R&R'((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyRBÒs   cC€s“tjj|jƒ}|jdddƒ|jddƒ|jdddƒ|jt|jdƒƒdddddgƒ|j t |jd ƒd S( s test users()R.RŠR:RTRUR,R-RViN( RR‰R/RR>R0RRWRXR$R_(R&R'((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyRYîs .c C€s¥tjj|jƒ}|jt|jdddƒ|jt|jdddƒ|j|jdddƒd ƒxjt ddƒD]Y}t |ƒ}|j |jd|dd|ƒƒ|j|jd|ddƒt ƒq|W|jt|jddƒd|_ |j |jdd ƒƒ|j|jddƒd ƒ|jd gd ƒ=|j |jddd ƒƒ|j|jddd ƒƒWd QX|jt|jdddƒd S(stest check_password()iRŠR:R\R.iR<R,REsverify\(\) is deprecatediRCNsuser:(RR‰R/RR$R_RAtassertIsR*RR`RR"RŽR!RaRR2(R&R'Rb((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyRcøs  $' "cC€s¢|jƒ}t|dƒt|dƒtj|ƒ}|j|jƒdƒ|jdddƒ|jƒ|j|jƒdƒt||j ƒ|jƒ|j|jƒ|j ƒ|jdddƒ|j ƒ|j|jƒ|j ƒtjƒ}|j t |j ƒ|j t |jƒtjƒ}|j |ƒ|j|jƒ|j ƒt |ƒt|dƒ|jd ƒ|j d tƒWd QX|j|jƒdƒd S( s test load()RiR,RŠREs-user1:realm:2a6cf53e7d8f8cf39d946dc880b14128 R.R:s!load\(force=False\) is deprecatedtforceN(RRRRR‰RRR>RdRReR$RfRR!R"(R&R RhRiRj((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyRks2           cC€sÍ|jƒ}t||jƒtj|ƒ}|jddƒ|jddƒ|jƒ|jt|ƒ|j ƒtjƒ}|j dddƒ|j t |jƒ|j|ƒ|jt|ƒ|j ƒƒdS(s test save()R,RŠR-REN(RRRRR‰R0RlRRR1R>R$RfR(R&R R'Ri((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyRm:s    cC€stjj|jƒ}|j|jdƒdƒ|j|jƒdgƒ|j|jdƒdƒ|j|jƒgƒ|j|jƒdƒdS(stest realms() & delete_realm()RiRŠiRN(RR‰R/RRt delete_realmtrealmsR(R&R'((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyttest_07_realmsPs cC€sŸtjj|jƒ}|j|jddƒdƒ|j|jddƒdƒ|j|jddƒdƒ|jdƒ!|j|jddƒdƒWdQXdS( stest get_hash()RTRŠt a500bb8c02f6a9170ae46af10c898744RVt ab7b5d5f28ccc7666315f508c7358519R.sfind\(\) is deprecatedN( RR‰R/RRRHR*R!Rt(R&R'((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyRu[s cC€sí|jttjddƒtjj|jdddtƒ}|j|jƒt dƒgƒ|j|j t dƒƒt dƒgƒtjj|j dddtƒ}|j|jƒt dƒgƒ|j|j t dƒƒt dƒgƒdS( stest encoding parameterRnsutf-16sutf-8Ros realm\u00e6s user\u00e6slatin-1N( R$R2RR‰R/RpR RR’R RXRq(R&R'((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyttest_09_encodingses!(!cC€sTtjj|jƒ}|j|jƒ|jƒtjƒ}|j|jƒdƒdS(stest to_string()RN(RR‰R/RRR(R&R'((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyttest_10_to_stringts cC€s6|jttjjdƒ|jttjjdƒdS(Nsrealm:user1:pass1:other s user1:pass1 (R$R2RR‰R/(R&((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyRzs(R„R…R†R‡RR1R?RpRqR(R3R6RBRYRcRkRmR“RuR–R—Rz(((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyRˆŠs(      )   (R†t __future__RtloggingRR tpasslibRt passlib.excRtpasslib.utils.compatRtpasslib.tests.utilsRRRRR t passlib.utilsR R„tlogRRRˆ(((s=/usr/lib/python2.7/site-packages/passlib/tests/test_apache.pyts "  ÿl