
     h                         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y)z&passlib.tests -- tests for passlib.pwd    N)TestCase)	UtilsTestGenerateTestStrengthTestc                       e Zd ZdZdZd Zy)r   ztest internal utilitieszpasslib.pwdc                 d   ddl m} | j                   |d      d       | j                   |d      d       | j                   |d      d       | j                   |d      d       | j                   |d      d	       | j                   |d
      d	       | j                   |d      dd       y)z_self_info_rate()r   )_self_info_rate aaaaaaaaab   abababababababababcd    abcdabcdabcdabcdabcdabcdabcdabcdabcdaaaag@?   )placesN)passlib.pwdr	   assertEqualassertAlmostEqual)selfr	   s     X/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/passlib/tests/test_pwd.pytest_self_info_ratezUtilsTest.test_self_info_rate   s    /,a0115.22A60!44a8z:F1M    N)__name__
__module____qualname____doc__descriptionPrefixr    r   r   r   r      s    !%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                 z    t         t        |           ddlm} | j                  |d| j                  d             y )Nr   )SequenceGeneratorrngzpwd generator)superr'   setUpr   r*   	patchAttr	getRandom)r   r*   	__class__s     r   r-   zWordGeneratorTest.setUpD   s3    ,. 	2(%~~o6	8r   c                     | j                  t        |      |       |r*|du r|}| j                  t        t        |            |       | j                  t        dj                  |            t        |             y)2check result list matches expected count & charsetTr
   N)r   lensetjoin)r   resultscountcharsuniques        r   assertResultContentsz&WordGeneratorTest.assertResultContentsL   s`    Wu-~SW.7RWWW-.E
;r   c                     t               }| j                  t        |      d       | j                  t        dt         d       y)general behavior	   (?i)unexpected keyword.*badkwdTbadkwdN)r"   r   r3   assertRaisesRegex	TypeErrorr   results     r   test_generalzWordGeneratorTest.test_generalU   s:     Va( 	y*JG\`ar   c                    t        d      }| j                  |dt               t        t              }t	        d      D cg c]  }t        |       }}| j                  |dt               | j                  t        t         d       yc c}w )'returns' keyword  returnsinvalid-typeN)r"   r:   r$   iterrangenextassertRaisesrB   r   r6   gen_s       r   test_returnszWordGeneratorTest.test_returns_   su     $'!!'4: d#&+Dk24922!!'4: 	)WnE	 3s   B	c                     t        dd      }| j                  |dt               t        ddd      }| j                  |ddd       | j                  t        t         dd	       y
)z'charset' & 'chars' optionsr%   rH   )charsetrJ      abc)lengthr8   rJ      r9   )r8   rU   N)r"   r:   r%   rO   rB   r   r6   s     r   test_charsetzWordGeneratorTest.test_charsetm   sb     %6!!'45 %>!!'4r!B 	)WE5Ir   )T)r   r   r   r   r    r-   r:   rE   rS   r\   __classcell__)r0   s   @r   r'   r'   @   s(    "/8<bFJr   r'   )	genphrase)alphabetagammac                   4    e Zd ZdZdZd	dZd Zd Zd Zd Z	y)
PhraseGeneratorTestr(   zpasslib.pwd.genphrase()c                 ,   | j                  t        |      |       |r*|du r|}| j                  t        t        |            |       t        t        j                  j                  fd|D                    }| j                  |t        |             y)r2   Tc              3   @   K   | ]  }|j                          y w)N)split).0elemseps     r   	<genexpr>z;PhraseGeneratorTest.assertResultContents.<locals>.<genexpr>   s     /TD

3/Ts   N)r   r3   r4   	itertoolschainfrom_iterable)r   r6   r7   wordsr9   ri   outs        ` r   r:   z(PhraseGeneratorTest.assertResultContents   sr    Wu-~SW.7)/////TG/TTUc%j)r   c                     t               }| j                  t        |j                  d            d       | j	                  t
        dt         d       y)r<    r   r>   Tr?   N)r^   r   r3   rf   rA   rB   rC   s     r   rE   z PhraseGeneratorTest.test_general   sD     V\\#./3 	y*JI^bcr   c                    t        d      }| j                  t        |j                  d            d       t        d      }| j                  t        |j                  d            d       t        dd      }| j                  t        |j                  d            d	       t        d	d
      }| j                  t        |j                  d            d	       y)z'length' & 'entropy' keywordsF   )entropyrq      rV   )rX   0   )rX   rt   r      N)r^   r   r3   rf   rC   s     r   test_entropyz PhraseGeneratorTest.test_entropy   s     2&V\\#./3 !$V\\#./3 !R0V\\#./3 !R0V\\#./3r   c                 0   t        dt              }| j                  |dt               t        t        t              }t	        d      D cg c]  }t        |       }}| j                  |dt               | j                  t        t         d       yc c}w )rG   i  )rJ   rn   rK   rI   N)r^   simple_wordsr:   rL   rM   rN   rO   rB   rP   s       r   rS   z PhraseGeneratorTest.test_returns   sy     D=!!'4> L9&+Dk24922!!'4> 	)YG	 3s   Bc                     t        t        d      }| j                  |dt               t        dt        d      }| j                  |dt        d       | j                  t        t         t        d       y	)
z'wordset' & 'words' optionsrH   )rn   rJ   rV   )rX   rn   rJ   rY   rZ   bip39)rn   wordsetN)r^   rz   r:   rO   rB   r[   s     r   test_wordsetz PhraseGeneratorTest.test_wordset   sb     ,=!!'4> 1L$G!!'4d!K 	)YlGTr   N)Trq   )
r   r   r   r   r    r:   rE   rx   rS   r~   r!   r   r   rc   rc      s'    "1*d4&HUr   rc   )r   rk   logging	getLoggerr   logpasslib.tests.utilsr   __all__r   r   r"   r#   r$   r%   r'   r^   rz   rc   r!   r   r   <module>r      s    ,
  'g''1 )N NN 2J'u9J 9JD ")DU( DUr   