o
    5h                     @   s   d Z ddlZddlZeeZddlmZ g dZG dd deZ	ddl
mZmZ ed Zed	 ZG d
d deZddl
mZ g dZG dd deZdS )z&passlib.tests -- tests for passlib.pwd    N)TestCase)	UtilsTestGenerateTestStrengthTestc                   @   s   e Zd ZdZdZdd ZdS )r   ztest internal utilitieszpasslib.pwdc                 C   s   ddl m} | |dd | |dd | |dd | |dd | |dd	 | |d
d	 | j|dddd dS )z_self_info_rate()r   )_self_info_rate aaaaaaaaab   abababababababababcd    abcdabcdabcdabcdabcdabcdabcdabcdabcdaaaag@?   )placesN)passlib.pwdr   assertEqualassertAlmostEqual)selfr    r   j/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/passlib/tests/test_pwd.pytest_self_info_rate   s   zUtilsTest.test_self_info_rateN)__name__
__module____qualname____doc__descriptionPrefixr   r   r   r   r   r      s    r   )genworddefault_charsetsascii_62hexc                       sF   e Zd ZdZdZ fddZdddZdd	 Zd
d Zdd Z	  Z
S )WordGeneratorTesttest generation routineszpasslib.pwd.genword()c                    s2   t t|   ddlm} | |d| d d S )Nr   )SequenceGeneratorrngzpwd generator)superr"   setUpr   r$   	patchAttr	getRandom)r   r$   	__class__r   r   r'   D   s
   zWordGeneratorTest.setUpTc                 C   sR   |  t|| |r|du r|}|  tt|| |  td|t| dS )2check result list matches expected count & charsetTr   N)r   lensetjoin)r   resultscountcharsuniquer   r   r   assertResultContentsL   s   z&WordGeneratorTest.assertResultContentsc                 C   s,   t  }| t|d | jtdt dd dS )general behavior	   (?i)unexpected keyword.*badkwdTbadkwdN)r   r   r-   assertRaisesRegex	TypeErrorr   resultr   r   r   test_generalU   s   zWordGeneratorTest.test_generalc                    sZ   t dd}| |dt t td  fddtdD }| |dt | jtt dd dS )'returns' keyword  returnsc                       g | ]}t  qS r   next.0_genr   r   
<listcomp>g       z2WordGeneratorTest.test_returns.<locals>.<listcomp>invalid-typeN)r   r4   r    iterrangeassertRaisesr;   r   r0   r   rI   r   test_returns_   s   

zWordGeneratorTest.test_returnsc                 C   sP   t ddd}| |dt t dddd}| j|dddd | jtt ddd	 d
S )z'charset' & 'chars' optionsr!   r@   )charsetrB      abc)lengthr2   rB      r3   )r2   rS   N)r   r4   r!   rP   r;   rQ   r   r   r   test_charsetm   s
   zWordGeneratorTest.test_charset)T)r   r   r   r   r   r'   r4   r>   rR   rY   __classcell__r   r   r*   r   r"   @   s    
	
r"   )	genphrase)alphabetagammac                   @   s>   e Zd ZdZdZdddZdd Zd	d
 Zdd Zdd Z	dS )PhraseGeneratorTestr#   zpasslib.pwd.genphrase()T c                    sf   |  t|| |r|du r|}|  tt|| ttj fdd|D }|  |t| dS )r,   Tc                 3   s    | ]}|  V  qd S )N)split)rG   elemsepr   r   	<genexpr>   s    z;PhraseGeneratorTest.assertResultContents.<locals>.<genexpr>N)r   r-   r.   	itertoolschainfrom_iterable)r   r0   r1   wordsr3   rd   outr   rc   r   r4      s   z(PhraseGeneratorTest.assertResultContentsc                 C   s2   t  }| t|dd | jtdt dd dS )r5   r`   r   r7   Tr8   N)r[   r   r-   ra   r:   r;   r<   r   r   r   r>      s   z PhraseGeneratorTest.test_generalc                 C   s   t dd}| t|dd t dd}| t|dd t ddd}| t|dd	 t d	d
d}| t|dd	 dS )z'length' & 'entropy' keywordsF   )entropyr`      rT   )rV   0   )rV   rl   r      N)r[   r   r-   ra   r<   r   r   r   test_entropy   s   

z PhraseGeneratorTest.test_entropyc                    s^   t dtd}| |dt t ttd  fddtdD }| |dt | jtt dd dS )r?   i  )rB   ri   c                    rC   r   rD   rF   rI   r   r   rK      rL   z4PhraseGeneratorTest.test_returns.<locals>.<listcomp>rM   rA   N)r[   simple_wordsr4   rN   rO   rP   r;   rQ   r   rI   r   rR      s   z PhraseGeneratorTest.test_returnsc                 C   sP   t tdd}| |dt t dtdd}| j|dtdd | jtt tdd d	S )
z'wordset' & 'words' optionsr@   )ri   rB   rT   )rV   ri   rB   rW   rX   bip39)ri   wordsetN)r[   rq   r4   rP   r;   rQ   r   r   r   test_wordset   s
   z PhraseGeneratorTest.test_wordsetN)Tr`   )
r   r   r   r   r   r4   r>   rp   rR   rt   r   r   r   r   r_      s    


r_   )r   rf   logging	getLoggerr   logpasslib.tests.utilsr   __all__r   r   r   r   r    r!   r"   r[   rq   r_   r   r   r   r   <module>   s    	'B