U
    h                     @   s   d Z ddlZddlZeeZddlmZ dddg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 dddgZG dd deZdS )z&passlib.tests -- tests for passlib.pwd    N)TestCase	UtilsTestZGenerateTestZ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 Zaaaaaaaaab   ZababababababababZabcd   Z abcdabcdabcdabcdabcdabcdabcdabcdZabcdaaaag@?   )ZplacesN)passlib.pwdr   assertEqualZassertAlmostEqual)selfr    r   <./venv/lib/python3.8/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   )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   Z	patchAttrZ	getRandom)r   r   	__class__r   r   r   D   s
    zWordGeneratorTest.setUpTc                 C   sR   |  t|| |r4|dk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Z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                    s   g | ]}t  qS r   next.0_genr   r   
<listcomp>g   s     z2WordGeneratorTest.test_returns.<locals>.<listcomp>invalid-typeN)r   r)   r   iterrangeassertRaisesr/   r   r%   r   r<   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   r4   )charsetr6      abc)lengthr'   r6      r(   )r'   rE   N)r   r)   r   rB   r/   rC   r   r   r   test_charsetm   s
    zWordGeneratorTest.test_charset)T)r   r   r   r   r   r   r)   r2   rD   rK   __classcell__r   r   r   r   r   @   s   
	
r   )	genphraseZalphaZbetaZ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|| |r4|dkr |}|  tt|| ttj fdd|D }|  |t| dS )r!   Tc                 3   s   | ]}|  V  qd S )N)split)r:   elemsepr   r   	<genexpr>   s     z;PhraseGeneratorTest.assertResultContents.<locals>.<genexpr>N)r   r"   r#   	itertoolschainfrom_iterable)r   r%   r&   wordsr(   rS   outr   rR   r   r)      s    z(PhraseGeneratorTest.assertResultContentsc                 C   s2   t  }| t|dd | jtdt dd dS )r*   rO   r	   r,   Tr-   N)rM   r   r"   rP   r.   r/   r0   r   r   r   r2      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   )entropyrO      rF   )rH   0   )rH   r[   r	      N)rM   r   r"   rP   r0   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 )r3   i  )r6   rX   c                    s   g | ]}t  qS r   r7   r9   r<   r   r   r>      s     z4PhraseGeneratorTest.test_returns.<locals>.<listcomp>r?   r5   N)rM   simple_wordsr)   r@   rA   rB   r/   rC   r   r<   r   rD      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' optionsr4   )rX   r6   rF   )rH   rX   r6   rI   rJ   Zbip39)rX   ZwordsetN)rM   r`   r)   rB   r/   rC   r   r   r   test_wordset   s
    z PhraseGeneratorTest.test_wordsetN)TrO   )
r   r   r   r   r   r)   r2   r_   rD   ra   r   r   r   r   rN      s   


rN   )r   rU   ZloggingZ	getLoggerr   logZpasslib.tests.utilsr   __all__r   r
   r   r   r   r   r   rM   r`   rN   r   r   r   r   <module>   s     
	'B
