
    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[        5      (       d   e[        U[        5      (       d   eU R	                  [
        [        R                  X5        U R	                  [
        [        R                  X!5        g )Nabcder   )r   
isinstancestrbytesassertRaises	TypeErrorr   r   )r   r   r   s      r   test_bad_types#Compare_Digest_Tests.test_bad_types$   sk    HHW!S!!!!!U####)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*   r0   __static_attributes__r2   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)   rA                @   
   )rB   r   r   choice)r   itemsrF   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 )NrA   rQ   r   )rB   assertInr   	randbelowr(   
ValueError)r   rF   s     r   test_randbelowRandom_Tests.test_randbelowD   s_    q"AMM'++A.a9 *g&7&7;*g&7&7<r   r2   N)	r3   r4   r5   r6   r7   rH   rT   r[   r8   r2   r   r   r:   r:   3   s    4L<=r   r:   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 NonerA   )r   token_bytes	token_hextoken_urlsafesubTestr3   r)   failDEFAULT_ENTROPYassertEquallen)r   ra   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)rK   rM      r
   rG   )re   r.   r   rb   r'   rh   ri   )r   rG   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)rK   r>      Z   rp   rA   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   !)	re   r   rc   r.   r&   rh   ri   r   all)r   rG   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-_)rK         r_   rp   c              3   ,   >#    U  H	  oT;   v   M     g 7frw   r2   )rz   r{   legals     r   r|   1Token_Tests.test_token_urlsafe.<locals>.<genexpr>x   s     #:1Js   )
rx   ascii_lettersdigitsre   r   rd   r.   r&   r   r~   )r   rG   r   r   s      @r   test_token_urlsafeToken_Tests.test_token_urlsafeq   sz    $$v}}4t; A"))!,%%a-#:#: :; #" !""s   AB
B'	r2   N)
r3   r4   r5   r6   r7   rl   rq   r   r   r8   r2   r   r   r^   r^   L   s    ?$AG<r   r^   __main__)
r7   r   unittestrx   TestCaser   r:   r^   r3   mainr2   r   r   <module>r      sg      
!J8,, !JH=8$$ =2,<(## ,<^ zMMO r   