a ze@sbddlZddlZddlZGdddejZGdddejZGdddejZedkr^edS) Nc@s,eZdZddZddZddZddZd S) Compare_Digest_Testsc CsNdD]D}|d}|d}|t|||t|d|dqdS)N)aZbcdZxyz123dutf-8) assertTruesecretscompare_digestencodeselfsrbrE/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_secrets.py test_equals zCompare_Digest_Tests.test_equalc Csz|tdd|tdddD]L}|dd}|dd}|t|||t|d |d q(dS) NabcZabcdsabcsabcd)xZmnZa1b2c3rqkr)Z assertFalserrr r rrr test_unequals  z!Compare_Digest_Tests.test_unequalcCs6d}|d}|ttj|||ttj||dS)NZabcder)r assertRaises TypeErrorrr)r rr rrrtest_bad_types$s z#Compare_Digest_Tests.test_bad_typescCs,|tddt|tddtdS)NrZxyz)assertIsInstancerrbool)r rrr test_bool-szCompare_Digest_Tests.test_boolN)__name__ __module__ __qualname__rrrrrrrrrs  rc@s$eZdZddZddZddZdS) Random_TestscCsVd}dD]H}tdD]:}t|}|d|kos zRandom_Tests.test_choicecCsJtddD]}|t|t|q |ttjd|ttjddS)Nr$r0r)r%ZassertInr randbelowr ValueError)r r'rrrtest_randbelowDszRandom_Tests.test_randbelowN)rrrr)r3r7rrrrr3src@s,eZdZddZddZddZddZd S) Token_Testsc CstjtjtjfD]}|j|dp|j}z |Wn tyR|d|Yn0z |dWn ty|d|Yn0Wdq1s0Yqtj}| t td|| t tdd|dS)N)funcz$%s cannot be called with no argumentz%s cannot be called with Noner$) r token_bytes token_hex token_urlsafesubTestrrZfailZDEFAULT_ENTROPY assertEquallen)r r9namesizerrrtest_token_defaultsOs     4zToken_Tests.test_token_defaultsc CsbdD]X}|j|d8|t|t|tt||Wdq1sR0YqdS)N)r*r,rr()r=rrr:bytesr>r?)r r(rrrtest_token_bytesaszToken_Tests.test_token_bytesc Cs|dD]r}|j|dRt|}||t|t|d||tdd|DWdq1sl0YqdS)N)r*r!ZrDr$css|]}|tjvVqdSN)string hexdigits.0crrr oz-Token_Tests.test_token_hex..) r=rr;rstrr>r?rallr r(r rrrtest_token_hexhs   zToken_Tests.test_token_hexc s|tjtjddD]b}|j|dBt|}||t|t fdd|DWdq1sl0YqdS)Nz-_)r* LrDc3s|]}|vVqdSrIrrLZlegalrrrOxrPz1Token_Tests.test_token_urlsafe..) rJ ascii_lettersdigitsr=rr<rrQrrRrSrrXrtest_token_urlsafeqs   zToken_Tests.test_token_urlsafeN)rrrrBrFrTr[rrrrr8Ls r8__main__) rZunittestrJZTestCaserrr8rmainrrrrs$/