a fWc@sdZddlZddlZeeZddlmZgdZGdddeZ ddl m Z m Z e dZ e d ZGd d d eZdd l mZgd ZGdddeZdS)z&passlib.tests -- tests for passlib.pwdN)TestCase) UtilsTestZ GenerateTestZ StrengthTestc@seZdZdZdZddZdS)rztest internal utilitiesz passlib.pwdcCsddlm}||dd||dd||dd||dd||dd ||d d |j|d d d ddS)z_self_info_rate()r)_self_info_rateZaaaaaaaaabZababababababababZabcdZ abcdabcdabcdabcdabcdabcdabcdabcdZabcdaaaag@?)ZplacesN) passlib.pwdr assertEqualZassertAlmostEqual)selfrr :/usr/lib/python3.9/site-packages/passlib/tests/test_pwd.pytest_self_info_rates zUtilsTest.test_self_info_rateN)__name__ __module__ __qualname____doc__descriptionPrefixrr r r rrsr)genworddefault_charsetsascii_62hexcsFeZdZdZdZfddZdddZdd Zd d Zd d Z Z S)WordGeneratorTesttest generation routineszpasslib.pwd.genword()cs2tt|ddlm}||d|ddS)Nr)SequenceGeneratorrngz pwd generator)superrsetUpr rZ patchAttrZ getRandom)r r __class__r rrDs  zWordGeneratorTest.setUpTcCsR|t|||r4|dur |}|tt|||td|t|dS)2check result list matches expected count & charsetTrN)r lensetjoin)r resultscountcharsuniquer r rassertResultContentsLs z&WordGeneratorTest.assertResultContentscCs,t}|t|d|jtdtdddS)general behavior (?i)unexpected keyword.*badkwdTZbadkwdN)rr r"assertRaisesRegex TypeErrorr resultr r r test_generalUszWordGeneratorTest.test_generalcsZtdd}||dtttdfddtdD}||dt|jttdddS)'returns' keywordreturnscsg|] }tqSr next.0_genr r gz2WordGeneratorTest.test_returns.. invalid-typeN)rr)riterrange assertRaisesr/r r%r r<r test_returns_s   zWordGeneratorTest.test_returnscCsPtddd}||dttdddd}|j|dddd|jttddd d S) z'charset' & 'chars' optionsrr4)charsetr6abc)lengthr'r6r()r'rFN)rr)rrCr/rDr r r test_charsetms  zWordGeneratorTest.test_charset)T) rrrrrrr)r2rErL __classcell__r r rrr@s   r) genphrase)ZalphaZbetaZgammac@s>eZdZdZdZdddZddZd d Zd d Zd dZ dS)PhraseGeneratorTestrzpasslib.pwd.genphrase()T csf|t|||r4|dur |}|tt||ttjfdd|D}||t|dS)r!Tc3s|]}|VqdS)N)split)r:elemsepr r r?z;PhraseGeneratorTest.assertResultContents..N)r r"r# itertoolschain from_iterable)r r%r&wordsr(rToutr rSrr)sz(PhraseGeneratorTest.assertResultContentscCs2t}|t|dd|jtdtdddS)r*rPr r,Tr-N)rNr r"rQr.r/r0r r rr2sz PhraseGeneratorTest.test_generalcCstdd}|t|ddtdd}|t|ddtddd}|t|dd td d d}|t|dd d S) z'length' & 'entropy' keywordsF)entropyrPrG)rI0)rIr\r N)rNr r"rQr0r r r test_entropys    z PhraseGeneratorTest.test_entropycs^tdtd}||dttttdfddtdD}||dt|jttdddS)r3i)r6rYcsg|] }tqSr r7r9r<r rr>r?z4PhraseGeneratorTest.test_returns..r@r5N)rN simple_wordsr)rArBrCr/rDr r<rrEs   z PhraseGeneratorTest.test_returnscCsPttdd}||dttdtdd}|j|dtdd|jtttddd S) z'wordset' & 'words' optionsr4)rYr6rG)rIrYr6rJrKZbip39)rYZwordsetN)rNrar)rCr/rDr r r test_wordsets  z PhraseGeneratorTest.test_wordsetN)TrP) rrrrrr)r2r`rErbr r r rrOs  rO)rrVZloggingZ getLoggerrlogZpasslib.tests.utilsr__all__rr rrrrrrNrarOr r r rs  'B