
    K}bg                         d Z ddlZddlZ ej        e          ZddlmZ g dZ G d de          Z	ddl
mZmZ ed         Zed	         Z G d
 de          Zddl
mZ g dZ G d de          ZdS )z&passlib.tests -- tests for passlib.pwd    N)TestCase)	UtilsTestGenerateTestStrengthTestc                       e Zd ZdZdZd ZdS )r   ztest internal utilitieszpasslib.pwdc                    ddl m} |                      |d          d           |                      |d          d           |                      |d          d           |                      |d          d           |                      |d          d	           |                      |d
          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	   s     i/home/e360mart.nyusoft.in/public_html/e360mart_env/lib/python3.11/site-packages/passlib/tests/test_pwd.pytest_self_info_ratezUtilsTest.test_self_info_rate   s    //////,,a000111555..22222A66600!44444a888z::F1MMMMM    N)__name__
__module____qualname____doc__descriptionPrefixr    r   r   r   r      s4        !!%N N N N Nr   r   )genworddefault_charsetsascii_62hexc                   @     e Zd ZdZdZ fdZd	dZd Zd Zd Z	 xZ
S )
WordGeneratorTesttest generation routineszpasslib.pwd.genword()c                     t          t          |                                            ddlm} |                     |d|                     d                     d S )Nr   )SequenceGeneratorrngzpwd generator)superr'   setUpr   r*   	patchAttr	getRandom)r   r*   	__class__s     r   r-   zWordGeneratorTest.setUpD   sh    &&,,... 	211111(%~~o66	8 	8 	8 	8 	8r   Tc                 B   |                      t          |          |           |r6|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uniques        r   assertResultContentsz&WordGeneratorTest.assertResultContentsL   s    Wu--- 	8~~SW..777RWWW--..E

;;;;;r   c                     t                      }|                     t          |          d           |                     t          dt           d           dS )general behavior	   (?i)unexpected keyword.*badkwdTbadkwdN)r"   r   r3   assertRaisesRegex	TypeErrorr   results     r   test_generalzWordGeneratorTest.test_generalU   sP     Va((( 	y*JG\`aaaaar   c                 <   t          d          }|                     |dt                     t          t                    fdt	          d          D             }|                     |dt                     |                     t          t           d           dS )'returns' keyword  returnsc                 .    g | ]}t                    S r!   next.0_gens     r   
<listcomp>z2WordGeneratorTest.test_returns.<locals>.<listcomp>g       222499222r   invalid-typeN)r"   r:   r$   iterrangeassertRaisesrB   r   r6   rQ   s     @r   test_returnszWordGeneratorTest.test_returns_   s     $'''!!'4::: d###2222eDkk222!!'4::: 	)WnEEEEEr   c                     t          dd          }|                     |dt                     t          ddd          }|                     |ddd           |                     t          t           dd	           d
S )z'charset' & 'chars' optionsr%   rH   )charsetrJ      abc)lengthr8   rJ      r9   )r8   r[   N)r"   r:   r%   rW   rB   r   r6   s     r   test_charsetzWordGeneratorTest.test_charsetm   s     %666!!'4555 %>>>!!'4r!BBB 	)WE5IIIIIr   )T)r   r   r   r   r    r-   r:   rE   rY   rb   __classcell__)r0   s   @r   r'   r'   @   s        ""/8 8 8 8 8< < < <b b bF F FJ J J J J J Jr   r'   )	genphrase)alphabetagammac                   6    e Zd ZdZdZddZd Zd Zd Zd	 Z	d
S )PhraseGeneratorTestr(   zpasslib.pwd.genphrase()T c                 t   |                      t          |          |           |r6|du r|}|                      t          t          |                    |           t          t          j                            fd|D                                 }|                      |t          |                     dS )r2   Tc              3   B   K   | ]}|                               V  d S )N)split)rO   elemseps     r   	<genexpr>z;PhraseGeneratorTest.assertResultContents.<locals>.<genexpr>   s-      /T/TD

3/T/T/T/T/T/Tr   N)r   r3   r4   	itertoolschainfrom_iterable)r   r6   r7   wordsr9   ro   outs        ` r   r:   z(PhraseGeneratorTest.assertResultContents   s    Wu--- 	8~~SW..777)////T/T/T/TG/T/T/TTTUUc%jj)))))r   c                     t                      }|                     t          |                    d                    d           |                     t
          dt           d           dS )r<   rj   r   r>   Tr?   N)rd   r   r3   rm   rA   rB   rC   s     r   rE   z PhraseGeneratorTest.test_general   s^     V\\#..//333 	y*JI^bcccccr   c                 :   t          d          }|                     t          |                    d                    d           t          d          }|                     t          |                    d                    d           t          dd          }|                     t          |                    d                    d	           t          d	d
          }|                     t          |                    d                    d	           dS )z'length' & 'entropy' keywordsF   )entropyrj      r\   )r^   0   )r^   ry   r      N)rd   r   r3   rm   rC   s     r   test_entropyz PhraseGeneratorTest.test_entropy   s     2&&&V\\#..//333 !$$$V\\#..//333 !R000V\\#..//333 !R000V\\#..//33333r   c                 T   t          dt                    }|                     |dt                     t          t          t                    fdt	          d          D             }|                     |dt                     |                     t          t           d           dS )rG   i  )rJ   rt   c                 .    g | ]}t                    S r!   rL   rN   s     r   rR   z4PhraseGeneratorTest.test_returns.<locals>.<listcomp>   rS   r   rT   rI   N)rd   simple_wordsr:   rU   rV   rW   rB   rX   s     @r   rY   z PhraseGeneratorTest.test_returns   s     D===!!'4>>> L9992222eDkk222!!'4>>> 	)YGGGGGr   c                 $   t          t          d          }|                     |dt                     t          dt          d          }|                     |dt          d           |                     t          t           t          d           d	S )
z'wordset' & 'words' optionsrH   )rt   rJ   r\   )r^   rt   rJ   r_   r`   bip39)rt   wordsetN)rd   r   r:   rW   rB   ra   s     r   test_wordsetz PhraseGeneratorTest.test_wordset   s     ,===!!'4>>> 1L$GGG!!'4d!KKK 	)YlGTTTTTr   N)Trj   )
r   r   r   r   r    r:   rE   r}   rY   r   r!   r   r   ri   ri      s{        ""1* * * *d d d4 4 4&H H HU U U U Ur   ri   )r   rq   logging	getLoggerr   logpasslib.tests.utilsr   __all__r   r   r"   r#   r$   r%   r'   rd   r   ri   r!   r   r   <module>r      sT   , ,
     'g'11 ) ( ( ( ( (  N N N N N N N NN 2 1 1 1 1 1 1 1J'u9J 9J 9J 9J 9J 9J 9J 9JD " ! ! ! ! !)))DU DU DU DU DU( DU DU DU DU DUr   