a
    ¼3j  ć                   @   sf   d Z ddlZddlZddlZG dd dejZG dd dejZG dd dejZed	krbe 	”  dS )
zTest 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                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )ŚCompare_Digest_Testsz%Test secrets.compare_digest function.c              	   C   sN   dD ]D}|d }|d }|   t ||”” |   t | d”| d””” qd S )N)ŚaZbcdZxyz123éd   śutf-8)Ś
assertTrueŚsecretsŚcompare_digestŚencode©ŚselfŚsr   Śb© r   śM/www/server/python_manager/versions/3.9.10/lib/python3.9/test/test_secrets.pyŚ
test_equal   s
    zCompare_Digest_Tests.test_equalc              	   C   sz   |   t dd”” |   t dd”” dD ]L}|d d }|d d }|   t ||”” |   t | d	”| d	””” q(d S )
NŚabcZabcds   abcs   abcd)ŚxZmnZa1b2c3r   ŚqŚkr   )ZassertFalser   r   r	   r
   r   r   r   Śtest_unequal   s    z!Compare_Digest_Tests.test_unequalc                 C   sR   d}|  d”}t|tsJ t|ts*J |  ttj||” |  ttj||” d S )NZabcder   )r	   Ś
isinstanceŚstrŚbytesŚassertRaisesŚ	TypeErrorr   r   )r   r   r   r   r   r   Śtest_bad_types$   s    
z#Compare_Digest_Tests.test_bad_typesc                 C   s,   |   t dd”t” |   t dd”t” d S )Nr   Zxyz)ŚassertIsInstancer   r   Śbool)r   r   r   r   Ś	test_bool-   s    zCompare_Digest_Tests.test_boolN)Ś__name__Ś
__module__Ś__qualname__Ś__doc__r   r   r   r   r   r   r   r   r      s
   
	r   c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	ŚRandom_Testsz*Test wrappers around SystemRandom methods.c                 C   sV   d}dD ]H}t dD ]:}t |”}|  d|  ko<d| k n  |||f ” qqd S )Nzrandbits(%d) returned %d)é   é   é   é   r   é   )Śranger   Zrandbitsr   )r   ŚerrmsgZnumbitsŚiŚnr   r   r   Śtest_randbits6   s
    
zRandom_Tests.test_randbitsc                 C   s.   g d¢}t dD ]}|  t |”|v ” qd S )N)é   r(   é   é   é   é    é@   é
   )r)   r   r   Śchoice)r   Śitemsr+   r   r   r   Śtest_choice>   s    zRandom_Tests.test_choicec                 C   sJ   t ddD ]}|  t |”t |” q
|  ttjd” |  ttjd” d S )Nr(   r4   r   é’’’’)r)   ZassertInr   Ś	randbelowr   Ś
ValueError)r   r+   r   r   r   Śtest_randbelowD   s    zRandom_Tests.test_randbelowN)r   r    r!   r"   r-   r7   r;   r   r   r   r   r#   3   s   r#   c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )ŚToken_TestszTest token functions.c              
   C   sÜ   t jt jt jfD ]}| j|dp |j}z
|  W n  tyR   |  d| ” Y n0 z|d  W n  ty   |  d| ” Y n0 W d    q1 s0    Y  qt j}|  	t
t  d ”|” |  	t
t  d ”d| ” d S )N)Śfuncz$%s cannot be called with no argumentz%s cannot be called with Noner(   )r   Śtoken_bytesŚ	token_hexŚtoken_urlsafeŚsubTestr   r   ZfailZDEFAULT_ENTROPYŚassertEqualŚlen)r   r=   ŚnameŚsizer   r   r   Śtest_token_defaultsO   s     ’
4zToken_Tests.test_token_defaultsc              	   C   sb   dD ]X}| j |d8 |  t |”t” |  tt |”|” W d    q1 sR0    Y  qd S )N)r.   r0   é   r   ©r,   )rA   r   r   r>   r   rB   rC   )r   r,   r   r   r   Śtest_token_bytesa   s    zToken_Tests.test_token_bytesc              	   C   s|   dD ]r}| j |dR t |”}|  |t” |  t|d| ” |  tdd |D ” W d    q1 sl0    Y  qd S )N)r.   r%   é   éZ   rH   r(   c                 s   s   | ]}|t jv V  qd S ©N)ŚstringŚ	hexdigits©Ś.0Ścr   r   r   Ś	<genexpr>o   ó    z-Token_Tests.test_token_hex.<locals>.<genexpr>)	rA   r   r?   r   r   rB   rC   r   Śall©r   r,   r   r   r   r   Śtest_token_hexh   s    
zToken_Tests.test_token_hexc              	      s|   t jt j d  dD ]b}| j|dB t |”}|  |t” |  t	 fdd|D ” W d    q1 sl0    Y  qd S )Nz-_)r.   é   é   éL   rH   c                 3   s   | ]}| v V  qd S rL   r   rO   ©Zlegalr   r   rR   x   rS   z1Token_Tests.test_token_urlsafe.<locals>.<genexpr>)
rM   Śascii_lettersŚdigitsrA   r   r@   r   r   r   rT   rU   r   rZ   r   Śtest_token_urlsafeq   s    
zToken_Tests.test_token_urlsafeN)r   r    r!   r"   rF   rI   rV   r]   r   r   r   r   r<   L   s
   	r<   Ś__main__)
r"   r   ZunittestrM   ZTestCaser   r#   r<   r   Śmainr   r   r   r   Ś<module>   s   $/