
    0hh                         S r SSKrSSKrSSKr " S S\R                  5      r " S S\R                  5      r " S S\R                  5      r\S	:X  a  \R                  " 5         gg)
zTest the secrets module.

As most of the functions in secrets are thin wrappers around functions
defined elsewhere, we don't need to test them exhaustively.
    Nc                   0    \ rS rSrSrS rS rS rS rSr	g)	Compare_Digest_Tests   z%Test secrets.compare_digest function.c           	          S Hv  nUS-  nUS-  nU R                  [        R                  " X#5      5        U R                  [        R                  " UR                  S5      UR                  S5      5      5        Mx     g )N)abcdxyz123d   utf-8)
assertTruesecretscompare_digestencodeselfsr   bs       :/opt/python-3.13.8/usr/lib/python3.13/test/test_secrets.py
test_equalCompare_Digest_Tests.test_equal   s`    'A#A#AOOG22189OOG22188G3DahhwFWXY	 (    c           	         U R                  [        R                  " SS5      5        U R                  [        R                  " SS5      5        S H|  nUS-  S-   nUS-  S-   nU R                  [        R                  " X#5      5        U R                  [        R                  " UR                  S	5      UR                  S	5      5      5        M~     g )
Nabcabcds   abcs   abcd)xmna1b2c3r
   qkr   )assertFalser   r   r   r   s       r   test_unequal!Compare_Digest_Tests.test_unequal   s    //v>?//@A&A#A#AW33A9:W33AHHW4EqxxPWGXYZ	 'r   c                     SnUR                  S5      nU R                  [        [        R                  X5        U R                  [        [        R                  X!5        g )Nabcder   )r   assertRaises	TypeErrorr   r   )r   r   r   s      r   test_bad_types#Compare_Digest_Tests.test_bad_types$   sG    HHW 	)W%;%;QB)W%;%;QBr   c                     U R                  [        R                  " SS5      [        5        U R                  [        R                  " SS5      [        5        g )Nr   xyz)assertIsInstancer   r   bool)r   s    r   	test_boolCompare_Digest_Tests.test_bool-   s<    g44UEBDIg44UEBDIr    N)
__name__
__module____qualname____firstlineno____doc__r   r!   r'   r-   __static_attributes__r/   r   r   r   r      s    /Z[CJr   r   c                   *    \ rS rSrSrS rS rS rSrg)Random_Tests3   z*Test wrappers around SystemRandom methods.c                     SnS HW  n[        S5       HE  n[        R                  " U5      nU R                  SUs=:*  =(       a    SU-  :  Os  XU4-  5        MG     MY     g )Nzrandbits(%d) returned %d)            r      )ranger   randbitsr   )r   errmsgnumbitsins        r   test_randbitsRandom_Tests.test_randbits6   sU    +"G1X$$W-Q 3 3G 3Vl5JK  #r   c                     / SQn[        S5       H+  nU R                  [        R                  " U5      U;   5        M-     g )N)   r>                @   
   )r?   r   r   choice)r   itemsrC   s      r   test_choiceRandom_Tests.test_choice>   s/    (rAOOGNN51U:; r   c                    [        SS5       H2  nU R                  [        R                  " U5      [        U5      5        M4     U R	                  [
        [        R                  S5        U R	                  [
        [        R                  S5        g )Nr>   rN   r   )r?   assertInr   	randbelowr%   
ValueError)r   rC   s     r   test_randbelowRandom_Tests.test_randbelowD   s_    q"AMM'++A.a9 *g&7&7;*g&7&7<r   r/   N)	r0   r1   r2   r3   r4   rE   rQ   rX   r5   r/   r   r   r7   r7   3   s    4L<=r   r7   c                   0    \ rS rSrSrS rS rS rS rSr	g)	Token_TestsL   zTest token functions.c                 r   [         R                  [         R                  [         R                  4 H8  nU R	                  US9   UR
                  n U" 5          U" S 5        S S S 5        M:     [         R                  nU R                  [        [         R                  " S 5      5      U5        U R                  [        [         R                  " S 5      5      SU-  5        g ! [         a    U R                  SU-  5         Nf = f! [         a    U R                  SU-  5         Nf = f! , (       d  f       GM  = f)N)funcz$%s cannot be called with no argumentz%s cannot be called with Noner>   )r   token_bytes	token_hextoken_urlsafesubTestr0   r&   failDEFAULT_ENTROPYassertEquallen)r   r^   namesizes       r   test_token_defaultsToken_Tests.test_token_defaultsO   s   (('*;*;**,D4(}}MFFJ )(, &&W0067>W..t45qv> ! MIIDtKLM ! FII=DEF )(sH   D&CDC?<D&>C??D&D# D&"D##D&&
D6	c           	         S Ht  nU R                  US9   U R                  [        R                  " U5      [        5        U R                  [        [        R                  " U5      5      U5        S S S 5        Mv     g ! , (       d  f       M  = f)N)rH   rJ      r
   rD   )rb   r+   r   r_   bytesre   rf   )r   rD   s     r   test_token_bytesToken_Tests.test_token_bytesa   sd     A"%%g&9&9!&<eD  W%8%8%;!<a@ #" !""s   AA<<
B	c                 @   S H  nU R                  US9   [        R                  " U5      nU R                  U[        5        U R                  [        U5      SU-  5        U R                  [        S U 5       5      5        S S S 5        M     g ! , (       d  f       M  = f)N)rH   r;      Z   rm   r>   c              3   F   #    U  H  o[         R                  ;   v   M     g 7fN)string	hexdigits).0cs     r   	<genexpr>-Token_Tests.test_token_hex.<locals>.<genexpr>o   s     #E1a)9)9$91s   !)	rb   r   r`   r+   strre   rf   r   all)r   rD   r   s      r   test_token_hexToken_Tests.test_token_hexh   sx     A"%%a(%%a-  Q1-#E1#E EF	 #" !""s   A,B
B	c                 T  ^ [         R                  [         R                  -   S-   mS Hk  nU R                  US9   [        R
                  " U5      nU R                  U[        5        U R                  [        U4S jU 5       5      5        S S S 5        Mm     g ! , (       d  f       M  = f)Nz-_)rH         r\   rm   c              3   ,   >#    U  H	  oT;   v   M     g 7fru   r/   )rx   ry   legals     r   rz   1Token_Tests.test_token_urlsafe.<locals>.<genexpr>x   s     #:1Js   )
rv   ascii_lettersdigitsrb   r   ra   r+   r|   r   r}   )r   rD   r   r   s      @r   test_token_urlsafeToken_Tests.test_token_urlsafeq   sz    $$v}}4t; A"))!,%%a-#:#: :; #" !""s   AB
B'	r/   N)
r0   r1   r2   r3   r4   ri   ro   r~   r   r5   r/   r   r   r[   r[   L   s    ?$AG<r   r[   __main__)
r4   r   unittestrv   TestCaser   r7   r[   r0   mainr/   r   r   <module>r      sg      
!J8,, !JH=8$$ =2,<(## ,<^ zMMO r   