§
    HŠtj  ã                   óæ   — 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     úT/var/www/html/CA-Chatbot/venv/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Ô1°1Ñ5Ô5Ð5à×Ò˜˜¨Ñ.Ô.°Ñ2Ô2Ð2Ø×Ò˜˜¨Ñ2Ô2°AÑ6Ô6Ð6à×Ò˜˜¨Ñ0Ô0°!Ñ4Ô4Ð4Ø×Ò˜˜¨Ñ4Ô4°aÑ8Ô8Ð8Ø×Ò˜˜¨zÑ:Ô:¸FÈ1ÐÑ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Ø×Ò�˜RŸWšW WÑ-Ô-Ñ.Ô.µ°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Ð*JÍGÐ\`ÐÑ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˜‘9”9Ð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Ð2¥e¨D¡k¤kÐ2Ñ2Ô2ˆØ×!Ò! '¨4µÑ:Ô:Ð:ð 	×Ò�)¥W°nÐÑ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ð 	×Ò�)¥W°EÀ5ÐÑ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Ð/TÀD°·
²
¸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Ð/TÈGÐ/TÑ/TÔ/TÑTÔTÑUÔUˆØ×Ò˜�c %™jœjÑ)Ô)Ð)Ð)Ð)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Ð*JÍIÐ^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' keywordséF   )Ú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Ð2¥e¨D¡k¤kÐ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µÑ>Ô>Ð>õ  1­LÀ$ÐGÑGÔGˆØ×!Ò! '¨4µÀdÐ!ÑKÔKÐKð 	×Ò�)¥YµlÈGÐÑ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   