§
    HŠtjbr  ã                   óR  — 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 n# e	$ r dZY nw xY wddl
mZ ddlmZmZmZ ddlmZmZ ddlmc mZ dd	lmZmZ dd
lmZmZmZ  ee ¦  «        Z! G d„ de¦  «        Z" G d„ de¦  «        Z# G d„ dej$        ¦  «        Z% G d„ de¦  «        Z&dS )a  tests for passlib.context

this file is a clone of the 1.5 test_context.py,
containing the tests using the legacy CryptPolicy api.
it's being preserved here to ensure the old api doesn't break
(until Passlib 1.8, when this and the legacy api will be removed).
é    )Úwith_statement)Ú	getLoggerN)Úresource_filename)Úhash)ÚCryptContextÚCryptPolicyÚLazyCryptContext)Úto_bytesÚ
to_unicode)ÚTestCaseÚset_file)Úregister_crypt_handler_pathÚ_has_crypt_handlerÚ_unload_handler_namec            
       óú  — e Zd ZdZdZdZej                             ej         	                    ej         
                    e¦  «        d¦  «        ¦  «        Zej                             e¦  «        ser edd¦  «        Ze                     d¦  «        sJ ‚ eg d¢dd	d
ddd¬¦  «        Zddd	d
ddddœZ eej        ej        ej        ej        gdd	d
ddd¬¦  «        ZdZ edddd¬¦  «        Z eg d¢dd	ddddd¬¦  «        Z ed¬¦  «        Z eg d¢dd	ddddd¬¦  «        ZdZ edgd	ddd¬¦  «        Zedz   Z e !                    ¦   «         Z"e" #                    dgdd g¬!¦  «         e !                    ¦   «         Z$e$ #                    dd"d#œ¦  «         e !                    ¦   «         Z%e% #                    dgdd gd!œ¦  «         d$„ Z&d%„ Z'd&„ Z(d'„ Z)d(„ Z*d)„ Z+d*„ Z,d+„ Z-d,„ Z.d-„ Z/d.„ Z0d/„ Z1d0„ Z2d1„ Z3d2„ Z4d3„ Z5d4„ Z6d5„ Z7d6S )7ÚCryptPolicyTestztest CryptPolicy objectr   zî[passlib]
schemes = des_crypt, md5_crypt, bsdi_crypt, sha512_crypt
default = md5_crypt
all.vary_rounds = 10%%
bsdi_crypt.max_rounds = 30000
bsdi_crypt.default_rounds = 25000
sha512_crypt.max_rounds = 50000
sha512_crypt.min_rounds = 40000
zsample_config_1s.cfgzpasslib.testsz[passlib]
schemes©Ú	des_cryptÚ	md5_cryptÚ
bsdi_cryptÚsha512_cryptr   çš™™™™™¹?é0u  i¨a  éPÃ  é@œ  )ÚschemesÚdefaultÚall__vary_roundsÚbsdi_crypt__max_roundsÚbsdi_crypt__default_roundsÚsha512_crypt__max_roundsÚsha512_crypt__min_roundsz.des_crypt, md5_crypt, bsdi_crypt, sha512_crypt)r   r   zall.vary_roundszbsdi_crypt.max_roundszbsdi_crypt.default_roundszsha512_crypt.max_roundszsha512_crypt.min_roundszˆ[passlib]
bsdi_crypt.min_rounds = 29000
bsdi_crypt.max_rounds = 35000
bsdi_crypt.default_rounds = 31000
sha512_crypt.min_rounds = 45000
éHq  é¸ˆ  éy  éÈ¯  )Úbsdi_crypt__min_roundsr   r    r"   )r   r   r   r'   r   r    r!   r"   r   ©r   z£
[passlib]
schemes = sha512_crypt
all.vary_rounds = 10%%
default.sha512_crypt.max_rounds = 20000
admin.all.vary_rounds = 5%%
admin.sha512_crypt.max_rounds = 40000
é N  çš™™™™™©?)r   r   r!   Úadmin__all__vary_roundsÚadmin__sha512_crypt__max_roundszJdeprecated = des_crypt
admin__context__deprecated = des_crypt, bsdi_crypt
r   r   )Ú
deprecatedÚadmin__context__deprecatedzdes_crypt, bsdi_crypt)r-   zadmin.context.deprecatedc                 óÖ   — t          j        | ¦  «         t          j        dd¦  «         t          j        dd¦  «         t          j        dd¦  «         t          j        dd¦  «         d S )NÚignorez)The CryptPolicy class has been deprecatedú,the method.*hash_needs_update.*is deprecatedz The 'all' scheme is deprecated.*zbsdi_crypt rounds should be odd©r   ÚsetUpÚwarningsÚfilterwarnings©Úselfs    úc/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/passlib/tests/test_context_deprecated.pyr3   zCryptPolicyTest.setUpÑ   sz   € ÝŒ�tÑÔÐÝÔ Ø Lñ	Nô 	Nð 	NåÔ Ø Oñ	Qô 	Qð 	QåÔ Ð*LÑMÔMÐMÝÔ Ð*KÑLÔLÐLÐLÐLó    c                 ó²  — t          di | j        ¤Ž}|                      |                     ¦   «         | j        ¦  «         t          | j        ¦  «        }|                      |                     ¦   «         | j        ¦  «         |                      t
          t           i i ¦  «         |                      t
          t           i d¬¦  «         |                      t
          t           g d¢d¬¦  «          G d„ dt          j        ¦  «        }|                      t          t           |g¬¦  «         |                      t
          t           t          j        g¬¦  «          G d	„ d
t          j        ¦  «        }|                      t          t           ||g¬¦  «         |                      t          t           dgdg¬¦  «         |                      t          t           dgd¬¦  «         dS )ztest CryptPolicy() constructoré   )Údummyr   r   )r   Ú bad__key__bsdi_crypt__max_roundsc                   ó   — e Zd ZdZdS )ú5CryptPolicyTest.test_00_constructor.<locals>.namelessN©Ú__name__Ú
__module__Ú__qualname__Úname© r9   r8   Únamelessr?   ì   s   € € € € € ØˆDˆDˆDr9   rF   ©r   c                   ó   — e Zd ZdZdS )ú4CryptPolicyTest.test_00_constructor.<locals>.dummy_1Údummy_1Nr@   rE   r9   r8   rJ   rI   ô   s   € € € € € ØˆDˆDˆDr9   rJ   r   r   ©r   r-   ©r   r   NrE   )
r   Úsample_config_1pdÚassertEqualÚto_dictÚassertRaisesÚ	TypeErrorÚuhÚStaticHandlerÚ
ValueErrorÚKeyError)r7   ÚpolicyrF   rJ   s       r8   Útest_00_constructorz#CryptPolicyTest.test_00_constructorÚ   sð  € åÐ6Ð6˜tÔ5Ð6Ð6ˆØ×Ò˜ŸšÑ)Ô)¨4Ô+AÑBÔBÐBå˜TÔ3Ñ4Ô4ˆØ×Ò˜ŸšÑ)Ô)¨4Ô+AÑBÔBÐBà×Ò�)¥[°"°bÑ9Ô9Ð9Ø×Ò�)¥[°"¸AÐÑ>Ô>Ð>ð 	×Ò�)¥[ØOÐOÐOØ/4ð 	ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	•rÔ'ñ 	ô 	ð 	à×Ò�*¥k¸H¸:ÐÑFÔFÐFð 	×Ò�)¥[½2Ô;KÐ:LÐÑMÔMÐMð	ð 	ð 	ð 	ð 	•bÔ&ñ 	ô 	ð 	à×Ò�(¥K¸'À7Ð9KÐÑLÔLÐLð 	×Ò�(¥KØ#. -Ø&1 ]ð 	ñ 	4ô 	4ð 	4ð
 	×Ò�(¥KØ#. -Ø"-ð 	ñ 	/ô 	/ð 	/ð 	/ð 	/r9   c                 óè   — | j         }t          j        |¦  «        }|                      |                     ¦   «         | j        ¦  «         |                      t          t          j        |dz   ¦  «         dS )z(test CryptPolicy.from_path() constructorÚxxxN)Úsample_config_1s_pathr   Ú	from_pathrN   rO   rM   rP   ÚEnvironmentError)r7   ÚpathrV   s      r8   Útest_01_from_path_simplez(CryptPolicyTest.test_01_from_path_simple  sg   € ð
 Ô)ˆÝÔ& tÑ,Ô,ˆØ×Ò˜ŸšÑ)Ô)¨4Ô+AÑBÔBÐBð 	×ÒÕ*­KÔ,AÀ4È%Á<ÑPÔPÐPÐPÐPr9   c                 ó‚  — |                       ¦   «         }t          || j        ¦  «         t          j        |¦  «        }|                      |                     ¦   «         | j        ¦  «         t          || j                             dd¦  «        ¦  «         t          j        |¦  «        }|                      |                     ¦   «         | j        ¦  «         t          | j        dd¬¦  «        }t          ||¦  «         t          j        |d¬¦  «        }|                      |                     ¦   «         | j        ¦  «         dS )z7test CryptPolicy.from_path() constructor with encodingsú
ú
úutf-16úutf-8©Úsource_encoding©ÚencodingN)
Úmktempr   Úsample_config_1sr   r[   rN   rO   rM   Úreplacer
   )r7   r]   rV   Úuc2s       r8   Útest_01_from_pathz!CryptPolicyTest.test_01_from_path  s  € à�{Š{‰}Œ}ˆõ 	��tÔ,Ñ-Ô-Ð-ÝÔ& tÑ,Ô,ˆØ×Ò˜ŸšÑ)Ô)¨4Ô+AÑBÔBÐBõ 	��tÔ,×4Ò4°T¸&ÑAÔAÑBÔBÐBÝÔ& tÑ,Ô,ˆØ×Ò˜ŸšÑ)Ô)¨4Ô+AÑBÔBÐBõ �tÔ,¨hÈÐPÑPÔPˆÝ��sÑÔÐÝÔ& t°hÐ?Ñ?Ô?ˆØ×Ò˜ŸšÑ)Ô)¨4Ô+AÑBÔBÐBÐBÐBr9   c                 ó0  — t          j        | j        ¦  «        }|                      |                     ¦   «         | j        ¦  «         t          j        | j                             dd¦  «        ¦  «        }|                      |                     ¦   «         | j        ¦  «         t          | j        ¦  «        }t          j        |¦  «        }|                      |                     ¦   «         | j        ¦  «         t          | j        dd¬¦  «        }t          j        |d¬¦  «        }|                      |                     ¦   «         | j        ¦  «         t          j        | j	        ¦  «        }|                      |                     ¦   «         | j
        ¦  «         dS )z*test CryptPolicy.from_string() constructorr`   ra   rb   rc   rd   rf   N)r   Úfrom_stringri   rN   rO   rM   rj   r   r
   Úsample_config_4sÚsample_config_4pd)r7   rV   Údatark   s       r8   Útest_02_from_stringz#CryptPolicyTest.test_02_from_string"  s[  € õ Ô(¨Ô)>Ñ?Ô?ˆØ×Ò˜ŸšÑ)Ô)¨4Ô+AÑBÔBÐBõ Ô(ØÔ!×)Ò)¨$¨vÑ6Ô6ñ8ô 8ˆà×Ò˜ŸšÑ)Ô)¨4Ô+AÑBÔBÐBõ ˜$Ô/Ñ0Ô0ˆÝÔ(¨Ñ.Ô.ˆØ×Ò˜ŸšÑ)Ô)¨4Ô+AÑBÔBÐBõ �tÔ,¨hÈÐPÑPÔPˆÝÔ(¨°xÐ@Ñ@Ô@ˆØ×Ò˜ŸšÑ)Ô)¨4Ô+AÑBÔBÐBõ Ô(¨Ô)>Ñ?Ô?ˆØ×Ò˜ŸšÑ)Ô)¨4Ô+AÑBÔBÐBÐBÐBr9   c                 óº  — t          j        | j        ¦  «        }|                      |                     ¦   «         | j        ¦  «         t          j        | j        ¦  «        }|                      |                     ¦   «         | j        ¦  «         t          j        | j                             ¦   «         ¦  «        }|                      |                     ¦   «         | j        ¦  «         t          j        |¦  «        }|                      ||¦  «         |  	                    t          t           j        d¦  «         |  	                    t          t           j        g ¦  «         dS )z*test CryptPolicy.from_source() constructorr;   N)r   Úfrom_sourcerZ   rN   rO   rM   ri   ÚcopyÚassertIsrP   rQ   )r7   rV   Úp2s      r8   Útest_03_from_sourcez#CryptPolicyTest.test_03_from_source;  s  € õ Ô(¨Ô)CÑDÔDˆØ×Ò˜ŸšÑ)Ô)¨4Ô+AÑBÔBÐBõ Ô(¨Ô)>Ñ?Ô?ˆØ×Ò˜ŸšÑ)Ô)¨4Ô+AÑBÔBÐBõ Ô(¨Ô)?×)DÒ)DÑ)FÔ)FÑGÔGˆØ×Ò˜ŸšÑ)Ô)¨4Ô+AÑBÔBÐBõ Ô$ VÑ,Ô,ˆØ�Š�f˜bÑ!Ô!Ð!ð 	×Ò�)¥[Ô%<¸aÑ@Ô@Ð@Ø×Ò�)¥[Ô%<¸bÑAÔAÐAÐAÐAr9   c                 ó†  — |                       t          t          j        g ¦  «         t          j        | j        g¦  «        }|                      |                     ¦   «         | j        ¦  «         t          j        | j        | j	        | j
        g¦  «        }|                      |                     ¦   «         | j        ¦  «         dS )z+test CryptPolicy.from_sources() constructorN)rP   rT   r   Úfrom_sourcesri   rN   rO   rM   rZ   Úsample_config_2sÚsample_config_3pdÚsample_config_123pd)r7   rV   s     r8   Útest_04_from_sourcesz$CryptPolicyTest.test_04_from_sourcesQ  s°   € ð 	×Ò�*¥kÔ&>ÀÑCÔCÐCõ Ô)¨4Ô+@Ð*AÑBÔBˆØ×Ò˜ŸšÑ)Ô)¨4Ô+AÑBÔBÐBõ Ô)àÔ&ØÔ!ØÔ"ðñô ˆð 	×Ò˜ŸšÑ)Ô)¨4Ô+CÑDÔDÐDÐDÐDr9   c                 ó²  — t          di | j        ¤Ž} |j        di | j        ¤Ž}|                      |                     ¦   «         | j        ¦  «          |j        di | j        ¤Ž}|                      |                     ¦   «         | j        ¦  «         |                     | j        ¦  «        }|                      |                     ¦   «         | j        ¦  «         dS )z&test CryptPolicy.replace() constructorNrE   )	r   rM   rj   Úsample_config_2pdrN   rO   Úsample_config_12pdr|   r}   )r7   Úp1rw   Úp2bÚp3s        r8   Útest_05_replacezCryptPolicyTest.test_05_replaced  sÑ   € õ Ð2Ð2˜4Ô1Ð2Ð2ˆð ˆRŒZÐ1Ð1˜$Ô0Ð1Ð1ˆØ×Ò˜Ÿš™œ tÔ'>Ñ?Ô?Ð?ð ˆbŒjÐ2Ð2˜4Ô1Ð2Ð2ˆØ×Ò˜Ÿš™œ¨Ô(?Ñ@Ô@Ð@ð �ZŠZ˜Ô.Ñ/Ô/ˆØ×Ò˜Ÿš™œ tÔ'?Ñ@Ô@Ð@Ð@Ð@r9   c                 óà   — |                       t          t          dgd¬¦  «         |                       t          t          dgd¬¦  «         |                       t          t          dgdg¬¦  «         dS )z!test CryptPolicy() forbidden kwdsr   Úxx)r   Údes_crypt__salt)r   Ú	all__saltr   )r   Úuser__context__schemesN)rP   rU   r   r6   s    r8   Útest_06_forbiddenz!CryptPolicyTest.test_06_forbiddenu  s�   € ð 	×Ò�(¥KØ �MØ ð 	ñ 	
ô 	
ð 	
ð 	×Ò�(¥KØ �MØð 	ñ 	
ô 	
ð 	
ð 	×Ò�(¥KØ �MØ$/ =ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r9   c                 óè   — t          di | j        ¤Ž}|                      |                     ¦   «         ¦  «         t          di | j        ¤Ž}|                      |                     ¦   «          ¦  «         dS )ztest has_schemes() methodNrE   )r   rM   Ú
assertTrueÚhas_schemesr|   )r7   r‚   r„   s      r8   Útest_10_has_schemesz#CryptPolicyTest.test_10_has_schemes‹  sq   € õ Ð2Ð2˜4Ô1Ð2Ð2ˆØ�Š˜ŸšÑ(Ô(Ñ)Ô)Ð)åÐ2Ð2˜4Ô1Ð2Ð2ˆØ�Š˜BŸNšNÑ,Ô,Ð,Ñ-Ô-Ð-Ð-Ð-r9   c                 ó8  — t          di | j        ¤Ž}| j        d         }|                      t	          |                     ¦   «         ¦  «        |¦  «         t          di | j        ¤Ž}|                      t	          |                     ¦   «         ¦  «        g ¦  «         dS )ztest iter_handlers() methodr   NrE   )r   rM   Úsample_config_1prdrN   ÚlistÚiter_handlersr|   )r7   r‚   Úsr„   s       r8   Útest_11_iter_handlersz%CryptPolicyTest.test_11_iter_handlers”  s—   € õ Ð2Ð2˜4Ô1Ð2Ð2ˆØÔ# IÔ.ˆØ×Ò�˜b×.Ò.Ñ0Ô0Ñ1Ô1°1Ñ5Ô5Ð5åÐ2Ð2˜4Ô1Ð2Ð2ˆØ×Ò�˜b×.Ò.Ñ0Ô0Ñ1Ô1°2Ñ6Ô6Ð6Ð6Ð6r9   c                 óŠ  — t          di | j        ¤Ž}|                      |                     d¦  «        t          j        ¦  «         |                      |                     d¦  «        d¦  «         |                      t          |j        dd¬¦  «         |                      |                     ¦   «         t          j        ¦  «         dS )ztest get_handler() methodr   Úsha256_cryptNT©ÚrequiredrE   )	r   rM   rv   Úget_handlerr   r   rP   rU   r   )r7   r‚   s     r8   Útest_12_get_handlerz#CryptPolicyTest.test_12_get_handlerž  s§   € õ Ð2Ð2˜4Ô1Ð2Ð2ˆð 	�Š�b—n’n \Ñ2Ô2µD´OÑDÔDÐDð 	�Š�b—n’n ^Ñ4Ô4°dÑ;Ô;Ð;Ø×Ò�( B¤N°NÈTÐÑRÔRÐRð 	�Š�b—n’nÑ&Ô&­¬Ñ7Ô7Ð7Ð7Ð7r9   c           	      ó”  — t          di | j        ¤Ž}|                      |                     d¦  «        t	          dddd¬¦  «        ¦  «         |                      |                     d¦  «        t	          ddd	¬
¦  «        ¦  «         t          j        | j        ¦  «        }|                      |                     d¦  «        t	          dd¬¦  «        ¦  «         |                      |                     dd¦  «        t	          dd¬¦  «        ¦  «         |                      |                     dd¦  «        t	          dd¬¦  «        ¦  «         dS )ztest get_options() methodr   r   r#   r$   r%   )Úvary_roundsÚ
min_roundsÚ
max_roundsÚdefault_roundsr   r&   r   )r�   rž   rŸ   r)   )r�   rŸ   ÚuserÚadminr*   r   NrE   )r   r�   rN   Úget_optionsÚdictrn   ro   )r7   Úp12Úp4s      r8   Útest_13_get_optionsz#CryptPolicyTest.test_13_get_options­  sƒ  € õ Ð4Ð4˜DÔ3Ð4Ð4ˆà×Ò˜Ÿš¨Ñ6Ô6µtàØØØ"ð8
ñ 8
ô 8
ñ 	ô 	ð 	ð 	×Ò˜Ÿš¨Ñ8Ô8½àØØð	:
ñ :
ô :
ñ 	ô 	ð 	õ Ô$ TÔ%:Ñ;Ô;ˆØ×Ò˜Ÿš¨Ñ7Ô7½àØð:
ñ :
ô :
ñ 	ô 	ð 	ð 	×Ò˜Ÿš¨¸Ñ?Ô?ÅàØðB
ñ B
ô B
ñ 	ô 	ð 	ð 	×Ò˜Ÿš¨¸Ñ@Ô@Å$àØðC
ñ C
ô C
ñ 	ô 	ð 	ð 	ð 	r9   c                 ó
  — t          d	i | j        ¤Ž}t          d	i | j        ¤Ž}|                      |                     d¦  «        ¦  «         |                      |                     t
          j        ¦  «        ¦  «         |                      |                     d¦  «        ¦  «         |                      |                     d¦  «        ¦  «         |                      |                     t
          j        ¦  «        ¦  «         |                      |                     d¦  «        ¦  «         |                      |                     dd¦  «        ¦  «         |                      |                     dd¦  «        ¦  «         |                      |                     dd¦  «        ¦  «         |                      |                     dd¦  «        ¦  «         t          ddgdgdg¬¦  «        }|                      |                     d¦  «        ¦  «         |                      |                     d¦  «        ¦  «         |                      |                     dd¦  «        ¦  «         |                      |                     dd¦  «        ¦  «         dS )
z#test handler_is_deprecated() methodr   r   r¡   r   r¢   r   )r   r-   Úuser__context__deprecatedNrE   )r   rM   Úsample_config_5pdÚassertFalseÚhandler_is_deprecatedr   r   r�   )r7   ÚpaÚpbÚpcs       r8   Útest_14_handler_is_deprecatedz-CryptPolicyTest.test_14_handler_is_deprecatedÔ  s@  € åÐ2Ð2˜4Ô1Ð2Ð2ˆÝÐ2Ð2˜4Ô1Ð2Ð2ˆà×Ò˜×1Ò1°+Ñ>Ô>Ñ?Ô?Ð?Ø×Ò˜×1Ò1µ$´/ÑBÔBÑCÔCÐCØ×Ò˜×1Ò1°.ÑAÔAÑBÔBÐBà�Š˜×0Ò0°Ñ=Ô=Ñ>Ô>Ð>Ø×Ò˜×1Ò1µ$´/ÑBÔBÑCÔCÐCØ×Ò˜×1Ò1°.ÑAÔAÑBÔBÐBð 	�Š˜×0Ò0°¸fÑEÔEÑFÔFÐFØ×Ò˜×1Ò1°,ÀÑGÔGÑHÔHÐHØ�Š˜×0Ò0°¸gÑFÔFÑGÔGÐGØ�Š˜×0Ò0°¸wÑGÔGÑHÔHÐHõ Ø  +Ð.Ø#�}Ø'2 mð
ñ 
ô 
ˆð
 	�Š˜×0Ò0°Ñ=Ô=Ñ>Ô>Ð>Ø×Ò˜×1Ò1°+Ñ>Ô>Ñ?Ô?Ð?Ø×Ò˜×1Ò1°+¸vÑFÔFÑGÔGÐGØ�Š˜×0Ò0°¸fÑEÔEÑFÔFÐFÐFÐFr9   c                 óÈ  — t          j        dt          ¬¦  «         t          ¦   «         }|                      |                     ¦   «         d¦  «         |                      |                     d¦  «        d¦  «         |                     d¬¦  «        }|                      |                     ¦   «         d¦  «         |                      |                     d¦  «        d¦  «         dS )z!test get_min_verify_time() methodr0   )Úcategoryr   r¢   r   )Úmin_verify_timeN)r4   r5   ÚDeprecationWarningr   rN   Úget_min_verify_timerj   )r7   r­   r®   s      r8   Útest_15_min_verify_timez'CryptPolicyTest.test_15_min_verify_timeò  sÉ   € õ 	Ô Õ3EÐFÑFÔFÐFå‰]Œ]ˆØ×Ò˜×/Ò/Ñ1Ô1°1Ñ5Ô5Ð5Ø×Ò˜×/Ò/°Ñ8Ô8¸!Ñ<Ô<Ð<à�ZŠZ¨ˆZÑ+Ô+ˆØ×Ò˜×/Ò/Ñ1Ô1°1Ñ5Ô5Ð5Ø×Ò˜×/Ò/°Ñ8Ô8¸!Ñ<Ô<Ð<Ð<Ð<r9   c                 óŒ  — t          di | j        ¤Ž}|                      t          |                     ¦   «         ¦  «        | j        ¦  «         |                      t          |                     d¬¦  «        ¦  «        | j        ¦  «         |                      t          |                     d¬¦  «        ¦  «        | j        ¦  «         dS )ztest iter_config() methodT©Úresolve)ÚiniNrE   )r   rª   rN   r¤   Úiter_configÚsample_config_5prdÚsample_config_5pid©r7   Úp5s     r8   Útest_20_iter_configz#CryptPolicyTest.test_20_iter_config  s§   € åÐ2Ð2˜4Ô1Ð2Ð2ˆØ×Ò�˜bŸnšnÑ.Ô.Ñ/Ô/°Ô1GÑHÔHÐHØ×Ò�˜bŸnšn°T˜nÑ:Ô:Ñ;Ô;¸TÔ=TÑUÔUÐUØ×Ò�˜bŸnšn°˜nÑ6Ô6Ñ7Ô7¸Ô9PÑQÔQÐQÐQÐQr9   c                 óà   — t          di | j        ¤Ž}|                      |                     ¦   «         | j        ¦  «         |                      |                     d¬¦  «        | j        ¦  «         dS )ztest to_dict() methodTr¸   NrE   )r   rª   rN   rO   r¼   r¾   s     r8   Útest_21_to_dictzCryptPolicyTest.test_21_to_dict	  sf   € åÐ2Ð2˜4Ô1Ð2Ð2ˆØ×Ò˜Ÿš™œ tÔ'=Ñ>Ô>Ð>Ø×Ò˜Ÿš¨D˜Ñ1Ô1°4Ô3JÑKÔKÐKÐKÐKr9   c                 ó4  — t          di | j        ¤Ž}|                     ¦   «         }t          j        |¦  «        }|                      |                     ¦   «         | j        ¦  «         |                     d¬¦  «        }|                      |t          ¦  «         dS )ztest to_string() methodzlatin-1rf   NrE   )r   rª   Ú	to_stringrn   rN   rO   ÚassertIsInstanceÚbytes)r7   r­   r”   r®   s       r8   Útest_22_to_stringz!CryptPolicyTest.test_22_to_string  s…   € åÐ2Ð2˜4Ô1Ð2Ð2ˆØ�LŠL‰NŒNˆÝÔ$ QÑ'Ô'ˆØ×Ò˜Ÿš™œ tÔ'=Ñ>Ô>Ð>à�LŠL )ˆLÑ,Ô,ˆØ×Ò˜a¥Ñ'Ô'Ð'Ð'Ð'r9   N)8rA   rB   rC   Ú__doc__ÚdescriptionPrefixri   Úosr]   ÚabspathÚjoinÚdirnameÚ__file__rZ   Úexistsr   Ú
startswithr¤   rM   Úsample_config_1pidr   r   r   r   r   r‘   r{   r€   r�   r|   r}   ro   rp   Úsample_config_5sru   rª   Úupdater½   r¼   r3   rW   r^   rl   rr   rx   r~   r…   r‹   r�   r•   r›   r§   r°   r¶   rÀ   rÂ   rÇ   rE   r9   r8   r   r   %   s@  € € € € € Ø!Ð!ð &Ðð	Ðð œGŸOšO¨B¬G¯LªLØ
Œ�Š˜Ñ!Ô!Ð#9ñ-;ô -;ñ <ô <ÐàŒ7�>Š>Ð/Ñ0Ô0ð JÐ5Fð Jà 1Ð 1°/Ø2Hñ!Jô !JÐð ×&Ò&Ð';Ñ<Ô<Ð<Ð<Ð<à˜ØKÐKÐKØàØ!&Ø%*Ø#(Ø#(ð	ñ 	ô 	Ðð DØàØ!&Ø%*Ø#(Ø#(ð	ð 	Ðð ˜Ø”N D¤N°D´OÀTÔEVÐWØàØ!&Ø%*Ø#(Ø#(ð	ñ 	ô 	ÐðÐð ˜à!&Ø!&Ø%*à!&ðñ ô Ðð ˜ØKÐKÐKØàØ!&Ø!&Ø%*Ø#(Ø!&ð
ñ 
ô 
Ðð ˜Øðñ ô Ðð ˜$ØKÐKÐKØ àØ!&Ø!&Ø%*Ø#(Ø!&ð
ñ 
ô 
ÐðÐð ˜Ø"Ð$àØ#(à"&Ø*/ð
ñ 
ô 
Ðð (ð +ñ Ðð
 *×.Ò.Ñ0Ô0ÐØ×ÒØ"�_Ø'2°LÐ%Bð ñ ô ð ð
 ,×0Ò0Ñ2Ô2ÐØ×ÒØ!Ø$;ðð ñ ô ð ð
 ,×0Ò0Ñ2Ô2ÐØ×Òð #�mØ'2°LÐ&Að	ð ñ ô ð ðMð Mð Mð&/ð &/ð &/ðP
Qð 
Qð 
QðCð Cð Cð(Cð Cð Cð2Bð Bð Bð,Eð Eð Eð&Að Að Að"
ð 
ð 
ð,.ð .ð .ð7ð 7ð 7ð8ð 8ð 8ð%ð %ð %ðNGð Gð Gð<=ð =ð =ð Rð Rð RðLð Lð Lð(ð (ð (ð (ð (r9   r   c                   ól   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Z e	g d¢dgd	d
ddddddd¬¦  «        Z
d„ Zd„ ZdS )ÚCryptContextTestztest CryptContext classr   c                 óÖ   — t          j        | ¦  «         t          j        dd¦  «         t          j        dd¦  «         t          j        dd¦  «         t          j        dd¦  «         d S )Nr0   z3CryptContext\(\)\.replace\(\) has been deprecated.*z9The CryptContext ``policy`` keyword has been deprecated.*ú=.*(CryptPolicy|context\.policy).*(has|have) been deprecated.*r1   r2   r6   s    r8   r3   zCryptContextTest.setUp$  s‰   € ÝŒ�tÑÔÐÝÔ Ø Vñ	Xô 	Xð 	XåÔ Ø \ñ	^ô 	^ð 	^åÔ Ð*iÑjÔjÐjÝÔ Ø Oñ	Qô 	Qð 	Qð 	Qð 	Qr9   c                 ó°  — t          t          j        t          j        t          j        g¦  «        }|j                             ¦   «         \  }}}|                      |t          j        ¦  «         |                      |t          j        ¦  «         |                      |t          j        ¦  «         t          g d¢¦  «        }|j                             ¦   «         \  }}}|                      |t          j        ¦  «         |                      |t          j        ¦  «         |                      |t          j        ¦  «         |j        }t          |¬¦  «        }|                      | 	                    ¦   «         | 	                    ¦   «         ¦  «         t          |d¬¦  «        }|  
                    | 	                    ¦   «         | 	                    ¦   «         ¦  «         |                      | 	                    ¦   «         t          g d¢d¬¦  «        ¦  «         |                      t          t          |dd¦  «         |                      t          t           d¬¦  «         dS )	ztest constructor©r   r   r   )rV   r   )rV   r   rL   rV   NÚx)r   r   r   r   r   rV   r“   rv   rN   rO   ÚassertNotEqualr¤   rP   rQ   Úsetattr)r7   ÚccÚcÚbÚarV   s         r8   rW   z$CryptContextTest.test_00_constructor1  sé  € õ �4œ>­4¬?½D¼NÐKÑLÔLˆØ”	×'Ò'Ñ)Ô)‰ˆˆ!ˆAØ�Š�a�œÑ(Ô(Ð(Ø�Š�a�œÑ)Ô)Ð)Ø�Š�a�œÑ(Ô(Ð(õ ÐBÐBÐBÑCÔCˆØ”	×'Ò'Ñ)Ô)‰ˆˆ!ˆAØ�Š�a�œÑ(Ô(Ð(Ø�Š�a�œÑ)Ô)Ð)Ø�Š�a�œÑ(Ô(Ð(ð ”ˆÝ Ð(Ñ(Ô(ˆØ×Ò˜Ÿš™œ v§~¢~Ñ'7Ô'7Ñ8Ô8Ð8å °Ð>Ñ>Ô>ˆØ×Ò˜BŸJšJ™LœL¨&¯.ª.Ñ*:Ô*:Ñ;Ô;Ð;Ø×Ò˜Ÿš™œ¥tÐ4ZÐ4ZÐ4ZØ4@ð(Bñ (Bô (Bñ 	Cô 	Cð 	Cð 	×Ò�)¥W¨b°(¸DÑAÔAÐAØ×Ò�)¥\¸#ÐÑ>Ô>Ð>Ð>Ð>r9   c                 ó°  — t          g d¢¦  «        }|                      |j                             ¦   «         t          j        ¦  «         |                     ¦   «         }|                      ||¦  «         |                     d¬¦  «        }|                      ||¦  «         |                      |j                             ¦   «         t          j        ¦  «         dS )ztest replace()rÙ   r   r(   N)	r   rv   rV   rš   r   r   rj   ÚassertIsNotr   )r7   rÝ   Úcc2Úcc3s       r8   Útest_01_replacez CryptContextTest.test_01_replaceN  s¶   € õ ÐBÐBÐBÑCÔCˆØ�Š�b”i×+Ò+Ñ-Ô-­t¬~Ñ>Ô>Ð>à�jŠj‰lŒlˆØ×Ò˜˜bÑ!Ô!Ð!ð �jŠj ˆjÑ.Ô.ˆØ×Ò˜˜bÑ!Ô!Ð!ð 	�Š�c”j×,Ò,Ñ.Ô.µ´Ñ@Ô@Ð@Ð@Ð@r9   c                 ó  — t          ¦   «         }|                      t          |j        dd¬¦  «         |                      t          |j        d¦  «         |                      t          |j        dd¦  «         t          dg¦  «        }t          g ¬¦  «        }||_        |                      t          |j        dd¬¦  «         |                      t          |j        d¦  «         |                      t          |j        dd¦  «         dS )ztest no handlersr   Tr˜   Úsecretr   rG   N)r   rP   rU   Úidentifyr   Úverifyr   rV   )r7   rÝ   Úps      r8   Útest_02_no_handlersz$CryptContextTest.test_02_no_handlers_  så   € õ ‰^Œ^ˆØ×Ò�( B¤K°À$ÐÑGÔGÐGØ×Ò�( B¤G¨XÑ6Ô6Ð6Ø×Ò�( B¤I¨x¸Ñ@Ô@Ð@õ ˜;˜-Ñ(Ô(ˆÝ Ð#Ñ#Ô#ˆØˆŒ	à×Ò�( B¤K°À$ÐÑGÔGÐGØ×Ò�( B¤G¨XÑ6Ô6Ð6Ø×Ò�( B¤I¨x¸Ñ@Ô@Ð@Ð@Ð@r9   )r   r   Úphpassr   r—   r   r—   é   é   r   i¸  iÐ  ÚHé   )r   r-   r   r   r    Úbsdi_crypt__vary_roundsÚsha256_crypt__max_roundsÚsha256_crypt__min_roundsÚsha256_crypt__default_roundsÚphpass__identÚphpass__default_roundsc                 ó  — t          di | j        ¤Ž}|                      |                     d¦  «        ¦  «         |                      |                     d¦  «        ¦  «         |                      |                     d¦  «        ¦  «         |                      |                     d¦  «        ¦  «         |                      |                     d¦  «        ¦  «         |                      |                     d¦  «        ¦  «         dS )	ztest hash_needs_update() methodÚ9XXD4trGYeGJAz"$1$J8HC2RCr$HcmM.7NxB2weSvlw2FgzU0zK$5$rounds=1999$jD81UCoo.zI.UETs$Y7qSTQ6mTiU9qZB4fRr43wRgQq4V.5AAf7F97Pzxey/zK$5$rounds=2000$228SSRje04cnNCaQ$YGV4RYu.5sNiBvorQDlO0WWQjyJVGKBcJXz3OtyQ2u8zK$5$rounds=3000$fS9iazEwTKi7QPW4$VasgBC8FqlOvD7x2HhABaMXCTh9jwHclPA9j5YQdns.zK$5$rounds=3001$QlFHHifXvpFX4PLs$/0ekt7lSs/lOikSerQ0M/1porEHxYq7W/2hdFpxA3fANrE   )r   Úsample_policy_1r�   Úhash_needs_updater«   ©r7   rÝ   s     r8   Útest_12_hash_needs_updatez*CryptContextTest.test_12_hash_needs_updateƒ  sï   € åÐ1Ð1˜DÔ0Ð1Ð1ˆð 	�Š˜×,Ò,¨_Ñ=Ô=Ñ>Ô>Ð>Ø×Ò˜×-Ò-Ð.RÑSÔSÑTÔTÐTð 	�Š˜×,Ò,Ð-zÑ{Ô{Ñ|Ô|Ð|Ø×Ò˜×-Ò-Ð.{Ñ|Ô|Ñ}Ô}Ð}ð 	×Ò˜×-Ò-Ð.{Ñ|Ô|Ñ}Ô}Ð}Ø�Š˜×,Ò,Ð-zÑ{Ô{Ñ|Ô|Ð|Ð|Ð|r9   c                 ó  — t          j        dd¦  «         t          dg¦  «        }di fdddifdi fdi ffD ]\  }} | j        t          |j        |fi |¤Ž Œ t          dg¦  «        }|                      t          |j        d¦  «         dS )	z'test non-string hash values cause errorr0   z0.*needs_update.*'scheme' keyword is deprecated.*r   NÚschemer;   rE   Úmysql323)r4   r5   r   rP   rQ   rú   )r7   rÝ   r   Úkwdsrã   s        r8   Útest_30_nonstring_hashz'CryptContextTest.test_30_nonstring_hash–  s·   € åÔ Ð*\Ñ]Ô]Ð]õ ˜;˜-Ñ(Ô(ˆà�r�
à˜ +Ð.Ð/Ø�B�Ø�R�ðð 	Mð 	M‰JˆD�$ð ˆDÔ�i¨Ô)=¸tÐLÐLÀtÐLÐLÐLÐLå˜J˜<Ñ(Ô(ˆØ×Ò�) SÔ%:¸DÑAÔAÐAÐAÐAr9   N)rA   rB   rC   rÈ   rÉ   r3   rW   rå   rë   r¤   rù   rü   r  rE   r9   r8   rÕ   rÕ      sÓ   € € € € € Ø!Ð!Ø&ÐðQð Qð Qð?ð ?ð ?ð:Að Að Að"Að Að Að* �dð'ð 'ð 'à&Ð)Ø$Ø%'Ø)+Ø&'Ø'+Ø'+Ø+/ØØ%&ðñ ô €Oð}ð }ð }ð&Bð Bð Bð Bð Br9   rÕ   c                   ó   — e Zd Zd ZdS )Údummy_2Nr@   rE   r9   r8   r  r  ³  s   € € € € € Ø€D€D€Dr9   r  c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )ÚLazyCryptContextTestr	   c                 óÖ   — t          j        | ¦  «         t          d¦  «         |                      t          d¦  «         t	          j        dd¦  «         t	          j        dd¦  «         d S )Nr  r0   z1CryptContext\(\)\.replace\(\) has been deprecatedr×   )r   r3   Úunload_handler_nameÚ
addCleanupr4   r5   r6   s    r8   r3   zLazyCryptContextTest.setUp¹  sp   € ÝŒ�tÑÔÐõ 	˜IÑ&Ô&Ð&Ø�ŠÕ+¨YÑ7Ô7Ð7õ 	Ô Ø Tñ	Vô 	Vð 	VåÔ Ð*iÑjÔjÐjÐjÐjr9   c                 óð  — |                       t          d¦  «        ¦  «         t          dd¦  «         t          t	          ddg¦  «        dg¬¦  «        }|                       t          dd¦  «        ¦  «         |                      |j                             d¦  «        ¦  «         |                      |j         	                    ¦   «         ddg¦  «         |                      t          dd¦  «        ¦  «         dS )ztest plain kwdsr  úpasslib.tests.test_contextr   )r-   TN)
r«   Úhas_crypt_handlerr   r	   Úiterr�   rV   r¬   rN   r   rû   s     r8   Útest_kwd_constructorz)LazyCryptContextTest.test_kwd_constructorÅ  sÞ   € à×ÒÕ*¨9Ñ5Ô5Ñ6Ô6Ð6Ý# IÐ/KÑLÔLÐLå�d I¨{Ð#;Ñ<Ô<È+ÈÐWÑWÔWˆà×ÒÕ*¨9°dÑ;Ô;Ñ<Ô<Ð<à�Š˜œ	×7Ò7¸ÑDÔDÑEÔEÐEØ×Ò˜œ×*Ò*Ñ,Ô,¨y¸+Ð.FÑGÔGÐGà�ŠÕ)¨)°TÑ:Ô:Ñ;Ô;Ð;Ð;Ð;r9   c                 óÞ  ‡ — ‰                       t          d¦  «        ¦  «         t          dd¦  «         d	ˆ fd„	}t          |d¬¦  «        }‰                       t          dd¦  «        ¦  «         ‰                      |j                             d¦  «        ¦  «         ‰                      |j                             ¦   «         ddg¦  «         ‰                      t          dd¦  «        ¦  «         dS )
z0test create_policy() hook, returning CryptPolicyr  r
  Fc                 óp   •— ‰                      | ¦  «         t          t          ddg¦  «        dg¬¦  «        S )Nr  r   rK   )r�   r   r  )Úflagr7   s    €r8   Úcreate_policyzELazyCryptContextTest.test_callable_constructor.<locals>.create_policyØ  s9   ø€ Ø�OŠO˜DÑ!Ô!Ð!Ý¥t¨Y¸Ð,DÑ'EÔ'EÐS^ÐR_Ð`Ñ`Ô`Ð`r9   T)r  r  r   N)F)	r«   r  r   r	   r�   rV   r¬   rN   r   )r7   r  rÝ   s   `  r8   Útest_callable_constructorz.LazyCryptContextTest.test_callable_constructorÓ  sö   ø€ à×ÒÕ*¨9Ñ5Ô5Ñ6Ô6Ð6Ý# IÐ/KÑLÔLÐLð	að 	að 	að 	að 	að 	aõ ¨MÀÐEÑEÔEˆà×ÒÕ*¨9°dÑ;Ô;Ñ<Ô<Ð<à�Š˜œ	×7Ò7¸ÑDÔDÑEÔEÐEØ×Ò˜œ×*Ò*Ñ,Ô,¨y¸+Ð.FÑGÔGÐGà�ŠÕ)¨)°TÑ:Ô:Ñ;Ô;Ð;Ð;Ð;r9   N)rA   rB   rC   rÉ   r3   r  r  rE   r9   r8   r  r  ¶  sJ   € € € € € Ø*Ðð
kð 
kð 
kð<ð <ð <ð<ð <ð <ð <ð <r9   r  )'rÈ   Ú
__future__r   Úloggingr   rÊ   r4   Úpkg_resourcesr   ÚImportErrorÚpasslibr   Úpasslib.contextr   r   r	   Úpasslib.utilsr
   r   Úpasslib.utils.handlersÚutilsÚhandlersrR   Úpasslib.tests.utilsr   r   Úpasslib.registryr   r   r  r   r  rA   Úlogr   rÕ   rS   r  r  rE   r9   r8   ú<module>r      s  ððð ð &Ð %Ð %Ð %Ð %Ð %à Ð Ð Ð Ð Ð Ø 	€	€	€	Ø €€€ðØ/Ð/Ð/Ð/Ð/Ð/Ð/øØð ð ð ØÐÐÐðøøøð Ð Ð Ð Ð Ð Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2ðð ð ð ð ð ð ð ð ð ð
 €i�ÑÔ€ð
r(ð r(ð r(ð r(ð r(�hñ r(ô r(ð r(ðvJBð JBð JBð JBð JB�xñ JBô JBð JBðfð ð ð ð ˆbÔñ ô ð ð-<ð -<ð -<ð -<ð -<˜8ñ -<ô -<ð -<ð -<ð -<s   ˜ Ÿ)¨)