
    daf                         d Z ddlZddlZddlZ G d dej                        Z G d dej                        Z G d dej                        Zed	k(  r ej                          yy)
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                   (    e Zd ZdZd Zd Zd Zd Zy)Compare_Digest_Testsz%Test secrets.compare_digest function.c           	          dD ]t  }|dz  }|dz  }| j                  t        j                  ||             | j                  t        j                  |j                  d      |j                  d                   v y )N)abcdxyz123d   utf-8)
assertTruesecretscompare_digestencodeselfsr   bs       ,/root/Python-3.12.4/Lib/test/test_secrets.py
test_equalzCompare_Digest_Tests.test_equal   si    ' 	ZA#A#AOOG221a89OOG22188G3DahhwFWXY		Z    c           	         | j                  t        j                  dd             | j                  t        j                  dd             dD ]z  }|dz  dz   }|dz  dz   }| j                  t        j                  ||             | j                  t        j                  |j                  d	      |j                  d	                   | y )
Nabcabcds   abcs   abcd)xmna1b2c3r	   qkr
   )assertFalser   r   r   r   s       r   test_unequalz!Compare_Digest_Tests.test_unequal   s    //v>?//@A& 	[A#A#AW33Aq9:W33AHHW4EqxxPWGXYZ		[r   c                 
   d}|j                  d      }t        |t              sJ t        |t              sJ | j	                  t
        t        j                  ||       | j	                  t
        t        j                  ||       y )Nabcder
   )r   
isinstancestrbytesassertRaises	TypeErrorr   r   )r   r   r   s      r   test_bad_typesz#Compare_Digest_Tests.test_bad_types$   si    HHW!S!!!!U###)W%;%;QB)W%;%;QBr   c                     | j                  t        j                  dd      t               | j                  t        j                  dd      t               y )Nr   xyz)assertIsInstancer   r   bool)r   s    r   	test_boolzCompare_Digest_Tests.test_bool-   s<    g44UEBDIg44UEBDIr   N)__name__
__module____qualname____doc__r   r   r'   r,    r   r   r   r      s    /Z[CJr   r   c                   "    e Zd ZdZd Zd Zd Zy)Random_Testsz*Test wrappers around SystemRandom methods.c                     d}dD ]O  }t        d      D ]?  }t        j                  |      }| j                  d|cxk  xr d|z  k  nc |||fz         A Q y )Nzrandbits(%d) returned %d)            r      )ranger   randbitsr   )r   errmsgnumbitsins        r   test_randbitszRandom_Tests.test_randbits6   sb    +" 	LG1X L$$W-Q 3G 3Vwl5JKL	Lr   c                 x    g d}t        d      D ](  }| j                  t        j                  |      |v        * y )N)   r9                @   
   )r:   r   r   choice)r   itemsr>   s      r   test_choicezRandom_Tests.test_choice>   s4    (r 	<AOOGNN51U:;	<r   c                    t        dd      D ]0  }| j                  t        j                  |      t        |             2 | j	                  t
        t        j                  d       | j	                  t
        t        j                  d       y )Nr9   rH   r   )r:   assertInr   	randbelowr%   
ValueError)r   r>   s     r   test_randbelowzRandom_Tests.test_randbelowD   sd    q" 	:AMM'++A.a9	:*g&7&7;*g&7&7<r   N)r-   r.   r/   r0   r@   rK   rQ   r1   r   r   r3   r3   3   s    4L<=r   r3   c                   (    e Zd ZdZd Zd Zd Zd Zy)Token_TestszTest token functions.c                 ^   t         j                  t         j                  t         j                  fD ]:  }| j	                  |      5  |j
                  }	  |        	  |d        d d d        < t         j                  }| j                  t        t        j                  d             |       | j                  t        t        j                  d             d|z         y # t        $ r | j                  d|z         Y w xY w# t        $ r | j                  d|z         Y w xY w# 1 sw Y   xY w)N)funcz$%s cannot be called with no argumentz%s cannot be called with Noner9   )r   token_bytes	token_hextoken_urlsafesubTestr-   r&   failDEFAULT_ENTROPYassertEquallen)r   rU   namesizes       r   test_token_defaultszToken_Tests.test_token_defaultsO   s   (('*;*;**, 	FD4( 	F}}MFFJ	F 	F	F &&W0067>W..t45qv> ! MIIDtKLM ! FII=DEF	F 	FsH   D#CD C=:D#<C==D# D D#D  D##D,	c           	         dD ]t  }| j                  |      5  | j                  t        j                  |      t               | j                  t        t        j                  |            |       d d d        v y # 1 sw Y   xY w)N)rB   rD      r	   r?   )rY   r*   r   rV   r$   r\   r]   )r   r?   s     r   test_token_byteszToken_Tests.test_token_bytesa   s{      	AA" A%%g&9&9!&<eD  W%8%8%;!<a@A A	AA As   AA;;B	c                 4   dD ]  }| j                  |      5  t        j                  |      }| j                  |t               | j                  t        |      d|z         | j                  t        d |D                     d d d         y # 1 sw Y   xY w)N)rB   r6      Z   rc   r9   c              3   @   K   | ]  }|t         j                  v   y wN)string	hexdigits).0cs     r   	<genexpr>z-Token_Tests.test_token_hex.<locals>.<genexpr>o   s     #EaA)9)9$9#Es   )	rY   r   rW   r*   r#   r\   r]   r   all)r   r?   r   s      r   test_token_hexzToken_Tests.test_token_hexh   s      	GA" G%%a(%%a-  Q1-#E1#E EF	G G	GG Gs   A+BB	c                 F   t         j                  t         j                  z   dz   dD ]k  }| j                  |      5  t	        j
                  |      }| j                  |t               | j                  t        fd|D                     d d d        m y # 1 sw Y   xxY w)Nz-_)rB         L   rc   c              3   &   K   | ]  }|v  
 y wri   r1   )rl   rm   legals     r   rn   z1Token_Tests.test_token_urlsafe.<locals>.<genexpr>x   s     #:1AJ#:s   )
rj   ascii_lettersdigitsrY   r   rX   r*   r#   r   ro   )r   r?   r   rv   s      @r   test_token_urlsafezToken_Tests.test_token_urlsafeq   s    $$v}}4t;  	<A" <))!,%%a-#:#: :;< <	<< <s   ABB 	N)r-   r.   r/   r0   r`   rd   rp   ry   r1   r   r   rS   rS   L   s    ?$AG<r   rS   __main__)
r0   r   unittestrj   TestCaser   r3   rS   r-   mainr1   r   r   <module>r~      si      
!J8,, !JH=8$$ =2,<(## ,<^ zHMMO r   