a
    Oʞ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)	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abababababababababcd   Z abcdabcdabcdabcdabcdabcdabcdabcdZabcdaaaag@?   )ZplacesN)passlib.pwdr   assertEqualZassertAlmostEqual)selfr    r   Q/wd/webapps/venvs/v2025_4um/lib/python3.9/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   Z	patchAttrZ	getRandom)r   r   	__class__r   r   r   D   s
    zWordGeneratorTest.setUpTc                 C   sR   |  t|| |r4|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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       z2WordGeneratorTest.test_returns.<locals>.<listcomp>invalid-typeN)r   r*   r   iterrangeassertRaisesr0   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   r5   )charsetr7      abc)lengthr(   r7      r)   )r(   rG   N)r   r*   r   rD   r0   rE   r   r   r   test_charsetm   s
    zWordGeneratorTest.test_charset)T)r   r   r   r   r   r   r*   r3   rF   rM   __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|| |r4|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)r;   elemsepr   r   	<genexpr>   r@   z;PhraseGeneratorTest.assertResultContents.<locals>.<genexpr>N)r   r#   r$   	itertoolschainfrom_iterable)r   r&   r'   wordsr)   rX   outr   rW   r   r*      s    z(PhraseGeneratorTest.assertResultContentsc                 C   s2   t  }| t|dd | jtdt dd dS )r+   rT   r
   r-   Tr.   N)rO   r   r#   rU   r/   r0   r1   r   r   r   r3      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   )entropyrT      rH   )rJ   0   )rJ   r`   r
      N)rO   r   r#   rU   r1   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 )r4   i  )r7   r]   c                    s   g | ]}t  qS r   r8   r:   r=   r   r   r?      r@   z4PhraseGeneratorTest.test_returns.<locals>.<listcomp>rA   r6   N)rO   simple_wordsr*   rB   rC   rD   r0   rE   r   r=   r   rF      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' optionsr5   )r]   r7   rH   )rJ   r]   r7   rK   rL   Zbip39)r]   ZwordsetN)rO   re   r*   rD   r0   rE   r   r   r   test_wordset   s
    z PhraseGeneratorTest.test_wordsetN)TrT   )
r   r   r   r   r   r*   r3   rd   rF   rf   r   r   r   r   rS      s   


rS   )r   rZ   logging	getLoggerr   logZpasslib.tests.utilsr   __all__r   r   r   r   r   r   r   rO   re   rS   r   r   r   r   <module>   s   	'B