
    g$                         S r SSKJr  SSKJr  SSKrSSKrSSKJrJ	r	J
r
  SSKJrJrJrJrJr  SSKJs  Jr  SSKJr  \" \5      r " S S	\R4                  5      r " S
 S\R4                  5      rSr " S S\5      rg)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                       \ rS rSrS rSrg)dummy_0    N__name__
__module____qualname____firstlineno__name__static_attributes__r       T/home/matz/Project1/venv/lib/python3.13/site-packages/passlib/tests/test_registry.pyr   r          Dr   r   c                       \ rS rSrSrSrg)alt_dummy_0   r   r   Nr   r   r   r   r   r      r   r   r      c                   P   ^  \ rS rSrSrU 4S jrS rS rS rS r	S r
S	 rS
rU =r$ )RegistryTest&   zpasslib.registryc                    >^^ [         [        U ]  5         [        [        R
                  5      m[        [        R                  5      mUU4S jnU R                  U5        g )Nc                     > [         R                  R                  5         [         R                  R                  T5        [         R                  R                  5         [         R                  R                  T 5        g )N)r   
_locationsclearupdate	_handlers)handlers	locationss   r   restore#RegistryTest.setUp.<locals>.restore0   sO    %%'&&y1$$&%%h/r   )superr!   setUpdictr   r%   r(   
addCleanup)selfr+   r)   r*   	__class__s     @@r   r.   RegistryTest.setUp*   sE    lD') ,,-	**+	0
 	 r   c                 t   [        [        5        [        [        5        U R                  [        [
        [        S5        [        [        SS5      n[        5       nU[        l        U R                  [        R                  U5        Uc&  [        ?U R                  [        [        S5      5        O+U[        l        U R                  [        R                  U5         " S S[        R                  5      nU[        l        U R                  [        S5      U5        U R                  [        [         [        SU5        g)ztest passlib.hash proxy objectfooey
__loader__Nc                       \ rS rSrSrSrg)-RegistryTest.test_hash_proxy.<locals>.dummy_1P   dummy_1r   Nr   r   r   r   r:   r8   P       Dr   r:   dummy_1x)dirr   reprassertRaisesAttributeErrorgetattrobjectr6   assertIsassertFalsehasattruhStaticHandlerr:   r
   
ValueErrorsetattr)r1   oldtestr:   s       r   test_hash_proxyRegistryTest.test_hash_proxy7   s     	D	 	T
 	.'4A dL$/xdoot,;WT<89!DOMM$//3/	b&& 	'	2G< 	*gtZIr   c                    [         R                  nU R                  SU;  5        U R                  [	        [
        S5      5        U R                  [        [        SS5        U R                  [        [        S[        S-   5        U R                  [        [        S[        S-   5        [        S[        5        U R                  S[        5       ;   5        U R                  S[        SS9;  5        U R                  [
        R                  [        5        U R                  S[        SS9;   5        [        S5        [        S[        S-   5        U R                  [
        R                  [        5        [        S5        [        S[        5        U R                  [        [         S5        [        S	[        5        U R                  [        [         S	5        [        S	5        ["        R$                  R'                  S
S5        [        SS
5        [(        R*                  " 5          [(        R,                  " SS[.        5        [!        S5      nSSS5        SSKJn  U R                  WUR4                  5        g! , (       d  f       N1= f)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%   
assertTruerD   rE   r   r?   rH   r	   r   r   rC   r   unload_handler_namer   	TypeErrorr
   sysmodulespopwarningscatch_warningsfilterwarningsDeprecationWarningpasslib.testsrT   alt_dummy_bad)r1   pathshtbrs       r    test_register_crypt_handler_path-RegistryTest.test_register_crypt_handler_pathX   s    ## 		./y12 	*&A#%5	7*&A#X%>	@*&A#X%>	@ 	$Ix8	%8%::;	)<)NNOdllG,	%8T%JJKI& 	$Ix./HIdllK0I& 	$Ix8)%6	B 	$M8<*&7GM* 	:DA#K1ST$$&##Hl<NO!+.A ' 	<a**+	 '&s   (I..
I<c                 ~   U R                  [        [        0 5        U R                  [        [        [	        S[
        R                  4[        SS95      5        U R                  [        [        [	        S[
        R                  4[        SS95      5        U R                  [        [        [	        S[
        R                  4[        SS95      5        U R                  [        [        [	        S[
        R                  4[        SS95      5        U R                  [        [        [	        S[
        R                  4[        SS95      5         " S S	[
        R                  5      n " S
 S[
        R                  5      nU R                  S	[        5       ;  5        [        U5        [        U5        U R                  [        S	5      U5        U R                  [        [        U5        U R                  [        S	5      U5        [        USS9  U R                  [        S	5      U5        U R                  S	[        5       ;   5        g)ztest register_crypt_handler()xN)r   AB_CDzab-cdab__cddefaultc                       \ rS rSrSrSrg)9RegistryTest.test_register_crypt_handler.<locals>.dummy_1   r:   r   Nr   r   r   r   r:   rl      r;   r   r:   c                       \ rS rSrSrSrg):RegistryTest.test_register_crypt_handler.<locals>.dummy_1b   r:   r   Nr   r   r   r   dummy_1bro      r;   r   rq   T)force)r?   rW   r   rH   typerF   rG   r/   rU   r   rC   r
   KeyError)r1   r:   rq   s      r   test_register_crypt_handler(RegistryTest.test_register_crypt_handler   s    	)%;R@*&<d3IYIYH[]agk]l>mn*&<d3IYIYH[]agn]o>pq*&<d3IYIYH[]agn]o>pq*&<d3IYIYH[]ago]p>qr*&<d3IYIYH[]agp]q>rs	b&& 		r'' 	 		)<)>>?w'w''	2G<($:HE'	2G<xt4'	2H=	%8%::;r   c                     " S S[         R                  5      nU R                  [        [        S5        U R                  [	        SS5      S5        [        U5        U R                  [	        S5      U5        [        R                  " 5          [        R                  " SS[        5        U R                  [	        S5      U5        [        S[        5        U R                  [	        S5      [        5        SSS5        S	S
KJn  SUR                   S'   S H:  nU R                  [        [        U5        U R                  [	        US5      S5        M<     g! , (       d  f       Nd= f)ztest get_crypt_handler()c                       \ rS rSrSrSrg)4RegistryTest.test_get_crypt_handler.<locals>.dummy_1   r:   r   Nr   r   r   r   r:   ry      r;   r   r:   NrR   zMhandler names should be lower-case, and use underscores instead of hyphens:.*zDUMMY-1r   zDUMMY-0r   )r   dummy_fake)r|   __package__)rF   rG   r?   rt   r
   rC   r   r[   r\   r]   UserWarningr	   r   r   passlibr   __dict__)r1   r:   r   r   s       r   test_get_crypt_handler#RegistryTest.test_get_crypt_handler   s   	b&& 	 	($5yA'	48$? 	w''	2G<$$&##H.}  @K  L MM+I6@ (	8<MM+I6@ ' 	!!(g,Dh(94@MM+D$7> - '&s   A'E
Ec                     SSK Jn  S[        R                  S'   U" 5        H'  nU R	                  UR                  S5      SU-  5        M)     [        S5        g)ztest list_crypt_handlers()r   r   r{   r|   _z%r: N)passlib.registryr   r   r   rD   
startswithrV   )r1   r   r   s      r   test_list_crypt_handlers%RegistryTest.test_list_crypt_handlers   sG    8 ")g')DT__S16D=A *G$r   c                 
   SSK Jn  SSKJnJn  U" 5        HI  nUR                  S5      (       a  USS U" 5       ;   a  M)  US;   a  M1   U R                  U" U5      5        MK     g! [        R                   a
    XC;   a   Mj  e f = f)z-verify we have tests for all builtin handlersr   r   )get_handler_caseconditionally_available_hashesldap_   N)roundup_plaintext)	r   r   passlib.tests.test_handlersr   r   r   rU   r   MissingBackendError)r1   r   r   r   r   s        r   test_handlersRegistryTest.test_handlers   s~    8`')Dw''DH8K8M,M,, 0 67 * ** 9s   A$$B Br   )r   r   r   r   descriptionPrefixr.   rL   rd   ru   r   r   r   r   __classcell__)r2   s   @r   r!   r!   &   s4    *!JB.,`<>?>% r   r!   )__doc__
__future__r   loggingr   r[   rX   r   r   r   r   r   r   r	   r
   r   r   rV   passlib.utils.handlersutilsr)   rF   passlib.tests.utilsr   r   logrG   r   r   rP   r!   r   r   r   <module>r      sv    D &   
 ( 'X X # # (b """  
z8 zr   