§
    HŠtj$  ã                   ó  — d Z ddlmZ ddlmZ ddlZddlZddlmZm	Z	m
Z
 ddlmZmZmZmZmZ ddlmc mZ ddlmZ  ee¦  «        Z G d„ d	ej        ¦  «        Z G d
„ dej        ¦  «        ZdZ G d„ de¦  «        ZdS )z>tests for passlib.hash -- (c) Assurance Technologies 2003-2009é    )Úwith_statement)Ú	getLoggerN)ÚhashÚregistryÚexc)Úregister_crypt_handlerÚregister_crypt_handler_pathÚget_crypt_handlerÚlist_crypt_handlersÚ_unload_handler_name)ÚTestCasec                   ó   — e Zd Zd ZdS )Údummy_0N©Ú__name__Ú
__module__Ú__qualname__Úname© ó    úY/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/passlib/tests/test_registry.pyr   r      ó   € € € € € Ø€D€D€Dr   r   c                   ó   — e Zd ZdZdS )Úalt_dummy_0r   Nr   r   r   r   r   r      r   r   r   é   c                   óF   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
ˆ xZS )	ÚRegistryTestzpasslib.registryc                 óô   •‡‡— t          t          | ¦  «                             ¦   «          t          t          j        ¦  «        Št          t          j        ¦  «        Šˆˆfd„}|                      |¦  «         d S )Nc                  óü   •— t           j                             ¦   «          t           j                             ‰¦  «         t           j                             ¦   «          t           j                             ‰ ¦  «         d S )N)r   Ú
_locationsÚclearÚupdateÚ	_handlers)ÚhandlersÚ	locationss   €€r   Úrestorez#RegistryTest.setUp.<locals>.restore0   sa   ø€ ÝÔ×%Ò%Ñ'Ô'Ð'ÝÔ×&Ò& yÑ1Ô1Ð1ÝÔ×$Ò$Ñ&Ô&Ð&ÝÔ×%Ò% hÑ/Ô/Ð/Ð/Ð/r   )Úsuperr   ÚsetUpÚdictr   r    r#   Ú
addCleanup)Úselfr&   r$   r%   Ú	__class__s     @@€r   r(   zRegistryTest.setUp*   s{   øøø€ Ý�l˜DÑ!Ô!×'Ò'Ñ)Ô)Ð)õ �Ô,Ñ-Ô-ˆ	Ý�Ô*Ñ+Ô+ˆð	0ð 	0ð 	0ð 	0ð 	0ð 	0ð
 	�Š˜Ñ Ô Ð Ð Ð r   c                 óÞ  — t          t          ¦  «         t          t          ¦  «         |                      t          t
          t          d¦  «         t          t          dd¦  «        }t          ¦   «         }|t          _        |                      t          j        |¦  «         |€0t          `|  	                    t          t          d¦  «        ¦  «         n,|t          _        |                      t          j        |¦  «          G d„ dt          j        ¦  «        }|t          _        |                      t          d¦  «        |¦  «         |                      t          t           t          d|¦  «         dS )ztest passlib.hash proxy objectÚfooeyÚ
__loader__Nc                   ó   — e Zd ZdZdS )ú-RegistryTest.test_hash_proxy.<locals>.dummy_1Údummy_1Nr   r   r   r   r2   r1   P   ó   € € € € € ØˆDˆDˆDr   r2   Údummy_1x)Údirr   ÚreprÚassertRaisesÚAttributeErrorÚgetattrÚobjectr/   ÚassertIsÚassertFalseÚhasattrÚuhÚStaticHandlerr2   r
   Ú
ValueErrorÚsetattr)r+   ÚoldÚtestr2   s       r   Útest_hash_proxyzRegistryTest.test_hash_proxy7   s.  € õ 	�D‰	Œ	ˆ	õ 	�T‰
Œ
ˆ
ð 	×Ò�.­'µ4¸ÑAÔAÐAõ •d˜L¨$Ñ/Ô/ˆÝ‰xŒxˆØ�ŒØ�Š•d”o tÑ,Ô,Ð,Øˆ;Ý�Ø×Ò�W¥T¨<Ñ8Ô8Ñ9Ô9Ð9Ð9à!�DŒOØ�MŠM�$œ/¨3Ñ/Ô/Ð/ð	ð 	ð 	ð 	ð 	•bÔ&ñ 	ô 	ð 	à�ŒØ�ŠÕ'¨	Ñ2Ô2°GÑ<Ô<Ð<ð 	×Ò�*¥g­t°ZÀÑIÔIÐIÐIÐIr   c                 óÎ  — t           j        }|                      d|v¦  «         |                      t	          t
          d¦  «        ¦  «         |                      t          t          dd¦  «         |                      t          t          dt          dz   ¦  «         |                      t          t          dt          dz   ¦  «         t          dt          ¦  «         |                      dt          ¦   «         v ¦  «         |                      dt          d¬¦  «        v¦  «         |                      t
          j        t          ¦  «         |                      dt          d¬¦  «        v ¦  «         t          d¦  «         t          dt          dz   ¦  «         |                      t
          j        t          ¦  «         t          d¦  «         t          dt          ¦  «         |                      t          t           d¦  «         t          d	t          ¦  «         |                      t          t           d	¦  «         t          d	¦  «         t"          j                             d
d¦  «         t          dd
¦  «         t)          j        ¦   «         5  t)          j        ddt.          ¦  «         t!          d¦  «        }ddd¦  «         n# 1 swxY w Y   ddlm} |                      ||j        ¦  «         dS )z"test register_crypt_handler_path()r   z.test_registryz:dummy_0:xxxz:dummy_0.xxxT)Úloaded_onlyz:alt_dummy_0Údummy_xr   z passlib.tests._test_bad_registerNÚ	dummy_badÚignoreÚ
xxxxxxxxxxr   )Ú_test_bad_register)r   r    Ú
assertTruer<   r=   r   r7   r@   r	   r   r   r;   r   Úunload_handler_namer   Ú	TypeErrorr
   ÚsysÚmodulesÚpopÚwarningsÚcatch_warningsÚfilterwarningsÚDeprecationWarningÚpasslib.testsrK   Úalt_dummy_bad)r+   ÚpathsÚhÚtbrs       r   Ú test_register_crypt_handler_pathz-RegistryTest.test_register_crypt_handler_pathX   s×  € õ Ô#ˆð 	�Š˜	¨Ð.Ñ/Ô/Ð/Ø×Ò�¥ yÑ1Ô1Ñ2Ô2Ð2ð 	×Ò�*Õ&AØ#Ð%5ñ	7ô 	7ð 	7à×Ò�*Õ&AØ#¥X°Ñ%>ñ	@ô 	@ð 	@à×Ò�*Õ&AØ#¥X°Ñ%>ñ	@ô 	@ð 	@õ 	$ I­xÑ8Ô8Ð8Ø�Š˜	Õ%8Ñ%:Ô%:Ð:Ñ;Ô;Ð;Ø�Š˜	Õ)<ÈÐ)NÑ)NÔ)NÐNÑOÔOÐOØ�Š•d”l¥GÑ,Ô,Ð,Ø�Š˜	Õ%8ÀTÐ%JÑ%JÔ%JÐJÑKÔKÐKÝ˜IÑ&Ô&Ð&õ 	$ I­x¸.Ñ/HÑIÔIÐIØ�Š•d”l¥KÑ0Ô0Ð0Ý˜IÑ&Ô&Ð&õ 	$ I­xÑ8Ô8Ð8Ø×Ò�)Õ%6¸	ÑBÔBÐBõ 	$ Mµ8Ñ<Ô<Ð<Ø×Ò�*Õ&7¸ÑGÔGÐGÝ˜MÑ*Ô*Ð*õ 	Œ�ŠÐ:¸DÑAÔAÐAÝ# KÐ1SÑTÔTÐTÝÔ$Ñ&Ô&ð 	/ð 	/ÝÔ# H¨lÕ<NÑOÔOÐOÝ! +Ñ.Ô.ˆAð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/ð 	<Ð;Ð;Ð;Ð;Ð;Ø�Š�a˜Ô*Ñ+Ô+Ð+Ð+Ð+s   Ê+J9Ê9J=Ë J=c                 ó€  — |                       t          t          i ¦  «         |                       t          t          t	          dt
          j        ft          d¬¦  «        ¦  «        ¦  «         |                       t          t          t	          dt
          j        ft          d¬¦  «        ¦  «        ¦  «         |                       t          t          t	          dt
          j        ft          d¬¦  «        ¦  «        ¦  «         |                       t          t          t	          dt
          j        ft          d¬¦  «        ¦  «        ¦  «         |                       t          t          t	          dt
          j        ft          d¬¦  «        ¦  «        ¦  «          G d„ d	t
          j        ¦  «        } G d
„ dt
          j        ¦  «        }|                      d	t          ¦   «         v¦  «         t          |¦  «         t          |¦  «         |  
                    t          d	¦  «        |¦  «         |                       t          t          |¦  «         |  
                    t          d	¦  «        |¦  «         t          |d¬¦  «         |  
                    t          d	¦  «        |¦  «         |                      d	t          ¦   «         v ¦  «         dS )ztest register_crypt_handler()ÚxN)r   ÚAB_CDzab-cdÚab__cdÚdefaultc                   ó   — e Zd ZdZdS )ú9RegistryTest.test_register_crypt_handler.<locals>.dummy_1r2   Nr   r   r   r   r2   rb   “   r3   r   r2   c                   ó   — e Zd ZdZdS )ú:RegistryTest.test_register_crypt_handler.<locals>.dummy_1br2   Nr   r   r   r   Údummy_1brd   –   r3   r   re   T)Úforce)r7   rN   r   r@   Útyper>   r?   r)   rL   r   r;   r
   ÚKeyError)r+   r2   re   s      r   Útest_register_crypt_handlerz(RegistryTest.test_register_crypt_handlerˆ   sr  € ð 	×Ò�)Õ%;¸RÑ@Ô@Ð@à×Ò�*Õ&<½dÀ3ÍÔIYÐH[Õ]aÐgkÐ]lÑ]lÔ]lÑ>mÔ>mÑnÔnÐnØ×Ò�*Õ&<½dÀ3ÍÔIYÐH[Õ]aÐgnÐ]oÑ]oÔ]oÑ>pÔ>pÑqÔqÐqØ×Ò�*Õ&<½dÀ3ÍÔIYÐH[Õ]aÐgnÐ]oÑ]oÔ]oÑ>pÔ>pÑqÔqÐqØ×Ò�*Õ&<½dÀ3ÍÔIYÐH[Õ]aÐgoÐ]pÑ]pÔ]pÑ>qÔ>qÑrÔrÐrØ×Ò�*Õ&<½dÀ3ÍÔIYÐH[Õ]aÐgpÐ]qÑ]qÔ]qÑ>rÔ>rÑsÔsÐsð	ð 	ð 	ð 	ð 	•bÔ&ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	•rÔ'ñ 	ô 	ð 	ð 	�Š˜	Õ)<Ñ)>Ô)>Ð>Ñ?Ô?Ð?å˜wÑ'Ô'Ð'Ý˜wÑ'Ô'Ð'Ø�ŠÕ'¨	Ñ2Ô2°GÑ<Ô<Ð<à×Ò�(Õ$:¸HÑEÔEÐEØ�ŠÕ'¨	Ñ2Ô2°GÑ<Ô<Ð<å˜x¨tÐ4Ñ4Ô4Ð4Ø�ŠÕ'¨	Ñ2Ô2°HÑ=Ô=Ð=à�Š˜	Õ%8Ñ%:Ô%:Ð:Ñ;Ô;Ð;Ð;Ð;r   c                 ó$  —  G d„ dt           j        ¦  «        }|                      t          t          d¦  «         |                      t	          dd¦  «        d¦  «         t          |¦  «         |                      t	          d¦  «        |¦  «         t          j        ¦   «         5  t          j	        ddt          ¦  «         |                      t	          d¦  «        |¦  «         t          dt          ¦  «         |                      t	          d¦  «        t          ¦  «         ddd¦  «         n# 1 swxY w Y   d	d
lm} d|j        d<   dD ]G}|                      t          t          |¦  «         |                      t	          |d¦  «        d¦  «         ŒHdS )ztest get_crypt_handler()c                   ó   — e Zd ZdZdS )ú4RegistryTest.test_get_crypt_handler.<locals>.dummy_1r2   Nr   r   r   r   r2   rl   ª   r3   r   r2   NrI   zMhandler names should be lower-case, and use underscores instead of hyphens:.*zDUMMY-1r   zDUMMY-0r   )r   ÚdummyÚ_fake)rn   Ú__package__)r>   r?   r7   rh   r
   r;   r   rR   rS   rT   ÚUserWarningr	   r   r   Úpasslibr   Ú__dict__)r+   r2   r   r   s       r   Útest_get_crypt_handlerz#RegistryTest.test_get_crypt_handler§   sñ  € ð	ð 	ð 	ð 	ð 	•bÔ&ñ 	ô 	ð 	ð 	×Ò�(Õ$5°yÑAÔAÐAØ�ŠÕ'¨	°4Ñ8Ô8¸$Ñ?Ô?Ð?õ 	˜wÑ'Ô'Ð'Ø�ŠÕ'¨	Ñ2Ô2°GÑ<Ô<Ð<åÔ$Ñ&Ô&ð 	Að 	AÝÔ# HÐ.}õ  @Kñ  Lô  Lð  Lð �MŠMÕ+¨IÑ6Ô6¸Ñ@Ô@Ð@õ (¨	µ8Ñ<Ô<Ð<Ø�MŠMÕ+¨IÑ6Ô6½Ñ@Ô@Ð@ð	Að 	Að 	Añ 	Aô 	Að 	Að 	Að 	Að 	Að 	Að 	Aøøøð 	Að 	Að 	Að 	Að 	!Ð Ð Ð Ð Ð Ø!(ˆŒ�gÑØ,ð 	?ð 	?ˆDØ×Ò�hÕ(9¸4Ñ@Ô@Ð@Ø�MŠMÕ+¨D°$Ñ7Ô7¸Ñ>Ô>Ð>Ð>ð	?ð 	?s   Â#A<D+Ä+D/Ä2D/c                 óÀ   — ddl m} dt          j        d<    |¦   «         D ].}|                      |                     d¦  «        d|z  ¦  «         Œ/t          d¦  «         dS )ztest list_crypt_handlers()r   ©r   rm   rn   Ú_z%r: N)Úpasslib.registryr   r   rr   r<   Ú
startswithrM   )r+   r   r   s      r   Útest_list_crypt_handlersz%RegistryTest.test_list_crypt_handlersÆ   sy   € à8Ð8Ð8Ð8Ð8Ð8ð ")�Œ�gÑØ'Ð'Ñ)Ô)ð 	Bð 	BˆDØ×Ò˜TŸ_š_¨SÑ1Ô1°6¸D±=ÑAÔAÐAÐAÝ˜GÑ$Ô$Ð$Ð$Ð$r   c                 ó  — ddl m} ddlm}m}  |¦   «         D ]j}|                     d¦  «        r|dd…          |¦   «         v rŒ,|dv rŒ1	 |                       ||¦  «        ¦  «         ŒQ# t          j        $ r ||v rY Œf‚ w xY wdS )z-verify we have tests for all builtin handlersr   ru   )Úget_handler_caseÚconditionally_available_hashesÚldap_é   N)Úroundup_plaintext)	rw   r   Úpasslib.tests.test_handlersr{   r|   rx   rL   r   ÚMissingBackendError)r+   r   r{   r|   r   s        r   Útest_handlerszRegistryTest.test_handlersÐ   sè   € à8Ð8Ð8Ð8Ð8Ð8Ø`Ð`Ð`Ð`Ð`Ð`Ð`Ð`Ø'Ð'Ñ)Ô)ð 	ð 	ˆDà�Š˜wÑ'Ô'ð ¨D°°°¬HÐ8KÐ8KÑ8MÔ8MÐ,MÐ,MØØÐ,Ð,Ð,ØðØ—’Ð 0Ð 0°Ñ 6Ô 6Ñ7Ô7Ð7Ð7øÝÔ*ð ð ð ØÐ9Ð9Ð9Ø�HØðøøøð	ð 	s   ÁA*Á*BÁ?B)r   r   r   ÚdescriptionPrefixr(   rD   r[   ri   rs   ry   r‚   Ú__classcell__)r,   s   @r   r   r   &   s�   ø€ € € € € à*Ðð!ð !ð !ð !ð !ðJð Jð JðB.,ð .,ð .,ð`<ð <ð <ð>?ð ?ð ?ð>%ð %ð %ðð ð ð ð ð ð r   r   )Ú__doc__Ú
__future__r   Úloggingr   rR   rO   rq   r   r   r   rw   r   r	   r
   r   r   rM   Úpasslib.utils.handlersÚutilsr$   r>   Úpasslib.tests.utilsr   r   Úlogr?   r   r   rG   r   r   r   r   ú<module>rŒ      s’  ðØ DÐ Dð &Ð %Ð %Ð %Ð %Ð %à Ð Ð Ð Ð Ð Ø €€€Ø 
€
€
€
ð (Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'ðXð Xð Xð Xð Xð Xð Xð Xð Xð Xð Xð Xð Xð Xà #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø (Ð (Ð (Ð (Ð (Ð (à€i�ÑÔ€ðð ð ð ð ˆbÔñ ô ð ðð ð ð ð �"Ô"ñ ô ð ð €ð
zð zð zð zð z�8ñ zô zð zð zð zr   