Ë
    àU.jbr  ã                   ó:  — 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 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jH                  «      Z% G d„ de«      Z&y# e	$ r dZY Œ{w xY w)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                  j                  ej                  j                  ej                  j                  e«      d«      «      Zej                  j                  e«      ser	 edd«      Zej                  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jC                  «       Z"e"jG                  dgdd g¬!«       ejC                  «       Z$e$jG                  dd"d#œ«       ejC                  «       Z%e%jG                  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„ Z7y6)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«       y )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    úgC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\passlib/tests/test_context_deprecated.pyr3   zCryptPolicyTest.setUpÑ   sX   € Ü�‰�tÔÜ×Ñ Ø Lô	Nä×Ñ Ø Oô	Qä×Ñ Ð*LÔMÜ×Ñ Ð*KÕLó    c                 óZ  — t        di | j                  ¤Ž}| j                  |j                  «       | j                  «       t        | j                  «      }| j                  |j                  «       | j                  «       | j	                  t
        t         i i «       | j	                  t
        t         i d¬«       | j	                  t
        t         g d¢d¬«        G d„ dt        j                  «      }| j	                  t        t         |g¬«       | j	                  t
        t         t        j                  g¬«        G d	„ d
t        j                  «      }| j	                  t        t         ||g¬«       | j	                  t        t         dgdg¬«       | j	                  t        t         dgd¬«       y)ztest CryptPolicy() constructoré   )Údummyr   r   )r   Ú bad__key__bsdi_crypt__max_roundsc                   ó   — e Zd ZdZy)ú5CryptPolicyTest.test_00_constructor.<locals>.namelessN©Ú__name__Ú
__module__Ú__qualname__Úname© r9   r8   Únamelessr?   ì   s   „ Ø‰Dr9   rF   ©r   c                   ó   — e Zd ZdZy)ú4CryptPolicyTest.test_00_constructor.<locals>.dummy_1Údummy_1Nr@   rE   r9   r8   rJ   rI   ô   s   „ Ø‰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Ú   sb  € äÑ6˜t×5Ñ5Ñ6ˆØ×Ñ˜Ÿ™Ó)¨4×+AÑ+AÔBä˜T×3Ñ3Ó4ˆØ×Ñ˜Ÿ™Ó)¨4×+AÑ+AÔBà×Ñœ)¤[°"°bÔ9Ø×Ñœ)¤[°"¸AÐÔ>ð 	×Ñœ)¤[ÚOØ/4ð 	ô 	ô	”r×'Ñ'ô 	à×Ñœ*¤k¸H¸:ÐÔFð 	×Ñœ)¤[¼2×;KÑ;KÐ:LÐÔMô	”b×&Ñ&ô 	à×Ñœ(¤K¸'À7Ð9KÐÔLð 	×Ñœ(¤KØ#. -Ø&1 ]ð 	ô 	4ð
 	×Ñœ(¤KØ#. -Ø"-ð 	õ 	/r9   c                 óê   — | j                   }t        j                  |«      }| j                  |j	                  «       | j
                  «       | j                  t        t        j                  |dz   «       y)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  s[   € ð
 ×)Ñ)ˆÜ×&Ñ& tÓ,ˆØ×Ñ˜Ÿ™Ó)¨4×+AÑ+AÔBð 	×ÑÔ*¬K×,AÑ,AÀ4È%Á<ÕPr9   c                 ób  — | j                  «       }t        || j                  «       t        j                  |«      }| j                  |j                  «       | j                  «       t        || j                  j                  dd«      «       t        j                  |«      }| j                  |j                  «       | j                  «       t        | j                  dd¬«      }t        ||«       t        j                  |d¬«      }| j                  |j                  «       | j                  «       y)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Ñ+AÔBô 	��t×,Ñ,×4Ñ4°T¸&ÓAÔBÜ×&Ñ& tÓ,ˆØ×Ñ˜Ÿ™Ó)¨4×+AÑ+AÔBô �t×,Ñ,¨hÈÔPˆÜ��sÔÜ×&Ñ& t°hÔ?ˆØ×Ñ˜Ÿ™Ó)¨4×+AÑ+AÕBr9   c                 ó4  — t        j                  | j                  «      }| j                  |j	                  «       | j
                  «       t        j                  | j                  j                  dd«      «      }| j                  |j	                  «       | j
                  «       t        | j                  «      }t        j                  |«      }| j                  |j	                  «       | j
                  «       t        | j                  dd¬«      }t        j                  |d¬«      }| j                  |j	                  «       | j
                  «       t        j                  | j                  «      }| j                  |j	                  «       | j                  «       y)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"  s5  € ô ×(Ñ(¨×)>Ñ)>Ó?ˆØ×Ñ˜Ÿ™Ó)¨4×+AÑ+AÔBô ×(Ñ(Ø×!Ñ!×)Ñ)¨$¨vÓ6ó8ˆà×Ñ˜Ÿ™Ó)¨4×+AÑ+AÔBô ˜$×/Ñ/Ó0ˆÜ×(Ñ(¨Ó.ˆØ×Ñ˜Ÿ™Ó)¨4×+AÑ+AÔBô �t×,Ñ,¨hÈÔPˆÜ×(Ñ(¨°xÔ@ˆØ×Ñ˜Ÿ™Ó)¨4×+AÑ+AÔBô ×(Ñ(¨×)>Ñ)>Ó?ˆØ×Ñ˜Ÿ™Ó)¨4×+AÑ+AÕBr9   c                 ó¸  — t        j                  | j                  «      }| j                  |j	                  «       | j
                  «       t        j                  | j                  «      }| j                  |j	                  «       | j
                  «       t        j                  | j
                  j                  «       «      }| j                  |j	                  «       | j
                  «       t        j                  |«      }| j                  ||«       | j                  t        t         j                  d«       | j                  t        t         j                  g «       y)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Ñ)CÓDˆØ×Ñ˜Ÿ™Ó)¨4×+AÑ+AÔBô ×(Ñ(¨×)>Ñ)>Ó?ˆØ×Ñ˜Ÿ™Ó)¨4×+AÑ+AÔBô ×(Ñ(¨×)?Ñ)?×)DÑ)DÓ)FÓGˆØ×Ñ˜Ÿ™Ó)¨4×+AÑ+AÔBô ×$Ñ$ VÓ,ˆØ�‰�f˜bÔ!ð 	×Ñœ)¤[×%<Ñ%<¸aÔ@Ø×Ñœ)¤[×%<Ñ%<¸bÕAr9   c                 ó¢  — | j                  t        t        j                  g «       t        j                  | j                  g«      }| j                  |j                  «       | j                  «       t        j                  | j                  | j                  | j                  g«      }| j                  |j                  «       | j                  «       y)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ô ×)Ñ)¨4×+@Ñ+@Ð*AÓBˆØ×Ñ˜Ÿ™Ó)¨4×+AÑ+AÔBô ×)Ñ)à×&Ñ&Ø×!Ñ!Ø×"Ñ"ðóˆð 	×Ñ˜Ÿ™Ó)¨4×+CÑ+CÕDr9   c                 óÐ  — t        di | j                  ¤Ž} |j                  di | j                  ¤Ž}| j	                  |j                  «       | j                  «        |j                  di | j                  ¤Ž}| j	                  |j                  «       | j                  «       |j                  | j                  «      }| j	                  |j                  «       | j                  «       y)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˜4×1Ñ1Ñ2ˆð ˆR�Z‰ZÑ1˜$×0Ñ0Ñ1ˆØ×Ñ˜Ÿ™› t×'>Ñ'>Ô?ð ˆb�j‰jÑ2˜4×1Ñ1Ñ2ˆØ×Ñ˜Ÿ™›¨×(?Ñ(?Ô@ð �Z‰Z˜×.Ñ.Ó/ˆØ×Ñ˜Ÿ™› t×'?Ñ'?Õ@r9   c                 óº   — | j                  t        t        dgd¬«       | j                  t        t        dgd¬«       | j                  t        t        dgdg¬«       y)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  sg   € ð 	×Ñœ(¤KØ �MØ ð 	ô 	
ð 	×Ñœ(¤KØ �MØð 	ô 	
ð 	×Ñœ(¤KØ �MØ$/ =ð 	õ 	
r9   c                 óÖ   — t        di | j                  ¤Ž}| j                  |j                  «       «       t        di | j                  ¤Ž}| j                  |j                  «        «       y)ztest has_schemes() methodNrE   )r   rM   Ú
assertTrueÚhas_schemesr|   )r7   r‚   r„   s      r8   Útest_10_has_schemesz#CryptPolicyTest.test_10_has_schemes‹  sS   € ô Ñ2˜4×1Ñ1Ñ2ˆØ�‰˜Ÿ™Ó(Ô)äÑ2˜4×1Ñ1Ñ2ˆØ�‰˜BŸN™NÓ,Ð,Õ-r9   c                 ó  — t        di | j                  ¤Ž}| j                  d   }| j                  t	        |j                  «       «      |«       t        di | j                  ¤Ž}| j                  t	        |j                  «       «      g «       y)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”  sv   € ô Ñ2˜4×1Ñ1Ñ2ˆØ×#Ñ# IÑ.ˆØ×Ñœ˜b×.Ñ.Ó0Ó1°1Ô5äÑ2˜4×1Ñ1Ñ2ˆØ×Ñœ˜b×.Ñ.Ó0Ó1°2Õ6r9   c                 óp  — t        di | j                  ¤Ž}| j                  |j                  d«      t        j
                  «       | j                  |j                  d«      d«       | j                  t        |j                  dd¬«       | j                  |j                  «       t        j                  «       y)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˜4×1Ñ1Ñ2ˆð 	�‰�b—n‘n \Ó2´D·O±OÔDð 	�‰�b—n‘n ^Ó4°dÔ;Ø×Ñœ( B§N¡N°NÈTÐÔRð 	�‰�b—n‘nÓ&¬¯©Õ7r9   c           	      ó.  — t        di | j                  ¤Ž}| j                  |j                  d«      t	        dddd¬«      «       | j                  |j                  d«      t	        ddd	¬
«      «       t        j
                  | j                  «      }| j                  |j                  d«      t	        dd¬«      «       | j                  |j                  dd«      t	        dd¬«      «       | j                  |j                  dd«      t	        dd¬«      «       y)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˜D×3Ñ3Ñ4ˆà×Ñ˜Ÿ™¨Ó6´tàØØØ"ô8
ô 	ð 	×Ñ˜Ÿ™¨Ó8¼àØØô	:
ô 	ô ×$Ñ$ T×%:Ñ%:Ó;ˆØ×Ñ˜Ÿ™¨Ó7¼àØô:
ô 	ð 	×Ñ˜Ÿ™¨¸Ó?ÄàØôB
ô 	ð 	×Ñ˜Ÿ™¨¸Ó@Ä$àØôC
õ 	r9   c                 ó@  — t        d	i | j                  ¤Ž}t        d	i | j                  ¤Ž}| j                  |j	                  d«      «       | j                  |j	                  t
        j                  «      «       | j                  |j	                  d«      «       | j                  |j	                  d«      «       | j                  |j	                  t
        j                  «      «       | j                  |j	                  d«      «       | j                  |j	                  dd«      «       | j                  |j	                  dd«      «       | j                  |j	                  dd«      «       | j                  |j	                  dd«      «       t        ddgdgdg¬«      }| j                  |j	                  d«      «       | j                  |j	                  d«      «       | j                  |j	                  dd«      «       | j                  |j	                  dd«      «       y)
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˜4×1Ñ1Ñ2ˆÜÑ2˜4×1Ñ1Ñ2ˆà×Ñ˜×1Ñ1°+Ó>Ô?Ø×Ñ˜×1Ñ1´$·/±/ÓBÔCØ×Ñ˜×1Ñ1°.ÓAÔBà�‰˜×0Ñ0°Ó=Ô>Ø×Ñ˜×1Ñ1´$·/±/ÓBÔCØ×Ñ˜×1Ñ1°.ÓAÔBð 	�‰˜×0Ñ0°¸fÓEÔFØ×Ñ˜×1Ñ1°,ÀÓGÔHØ�‰˜×0Ñ0°¸gÓFÔGØ�‰˜×0Ñ0°¸wÓGÔHô Ø  +Ð.Ø#�}Ø'2 mô
ˆð
 	�‰˜×0Ñ0°Ó=Ô>Ø×Ñ˜×1Ñ1°+Ó>Ô?Ø×Ñ˜×1Ñ1°+¸vÓFÔGØ�‰˜×0Ñ0°¸fÓEÕFr9   c                 óv  — t        j                  dt        ¬«       t        «       }| j	                  |j                  «       d«       | j	                  |j                  d«      d«       |j                  d¬«      }| j	                  |j                  «       d«       | j	                  |j                  d«      d«       y)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ä‹]ˆØ×Ñ˜×/Ñ/Ó1°1Ô5Ø×Ñ˜×/Ñ/°Ó8¸!Ô<à�Z‰Z¨ˆZÓ+ˆØ×Ñ˜×/Ñ/Ó1°1Ô5Ø×Ñ˜×/Ñ/°Ó8¸!Õ<r9   c                 óh  — t        di | j                  ¤Ž}| j                  t        |j	                  «       «      | j                  «       | j                  t        |j	                  d¬«      «      | j
                  «       | j                  t        |j	                  d¬«      «      | j                  «       y)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˜4×1Ñ1Ñ2ˆØ×Ñœ˜bŸn™nÓ.Ó/°×1GÑ1GÔHØ×Ñœ˜bŸn™n°T˜nÓ:Ó;¸T×=TÑ=TÔUØ×Ñœ˜bŸn™n°˜nÓ6Ó7¸×9PÑ9PÕQr9   c                 óÚ   — t        di | j                  ¤Ž}| j                  |j                  «       | j                  «       | j                  |j                  d¬«      | j                  «       y)ztest to_dict() methodTr¸   NrE   )r   rª   rN   rO   r¼   r¾   s     r8   Útest_21_to_dictzCryptPolicyTest.test_21_to_dict	  sR   € äÑ2˜4×1Ñ1Ñ2ˆØ×Ñ˜Ÿ™› t×'=Ñ'=Ô>Ø×Ñ˜Ÿ™¨D˜Ó1°4×3JÑ3JÕKr9   c                 ó  — t        di | j                  ¤Ž}|j                  «       }t        j                  |«      }| j	                  |j                  «       | j                  «       |j                  d¬«      }| j                  |t        «       y)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  sl   € äÑ2˜4×1Ñ1Ñ2ˆØ�L‰L‹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™GŸO™O¨B¯G©G¯L©LØ
�‰�‰˜Ó!Ð#9ó-;ó <Ðà�7‰7�>‰>Ð/Ô0Ñ5Fá 1°/Ø2Hó!JÐð ×&Ñ&Ð';Ô<Ð<Ð<áÚKØàØ!&Ø%*Ø#(Ø#(ô	Ðð DØàØ!&Ø%*Ø#(Ø#(ñ	Ðñ Ø—N‘N D§N¡N°D·O±OÀT×EVÑEVÐWØàØ!&Ø%*Ø#(Ø#(ô	ÐðÐñ à!&Ø!&Ø%*à!&ôÐñ ÚKØàØ!&Ø!&Ø%*Ø#(Ø!&ô
Ðñ ØôÐñ ÚKØ àØ!&Ø!&Ø%*Ø#(Ø!&ô
ÐðÐñ Ø"Ð$àØ#(à"&Ø*/ô
Ðð (ð +ñ Ðð
 *×.Ñ.Ó0ÐØ×ÑØ"�_Ø'2°LÐ%Bð ô ð
 ,×0Ñ0Ó2ÐØ×ÑØ!Ø$;ñô ð
 ,×0Ñ0Ó2ÐØ×Ñð #�mØ'2°LÐ&Añ	ô òMò&/òP
QòCò(Cò2Bò,Eò&Aò"
ò,.ò7ò8ò%òNGò<=ò RòLó(r9   r   c                   ód   — 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y)ÚCryptContextTestztest CryptContext classr   c                 óÞ   — t        j                  | «       t        j                  dd«       t        j                  dd«       t        j                  dd«       t        j                  dd«       y )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ä×Ñ Ø \ô	^ä×Ñ Ð*iÔjÜ×Ñ Ø Oõ	Qr9   c                 óT  — t        t        j                  t        j                  t        j                  g«      }|j
                  j                  «       \  }}}| j                  |t        j                  «       | j                  |t        j                  «       | j                  |t        j                  «       t        g d¢«      }|j
                  j                  «       \  }}}| j                  |t        j                  «       | j                  |t        j                  «       | j                  |t        j                  «       |j
                  }t        |¬«      }| j                  |j                  «       |j                  «       «       t        |d¬«      }| j                  |j                  «       |j                  «       «       | j                  |j                  «       t        g d¢d¬«      «       | j                  t        t        |dd«       | j                  t        t         d¬«       y)	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  sw  € ô œ4Ÿ>™>¬4¯?©?¼D¿N¹NÐKÓLˆØ—	‘	×'Ñ'Ó)‰ˆˆ!ˆAØ�‰�aœŸ™Ô(Ø�‰�aœŸ™Ô)Ø�‰�aœŸ™Ô(ô ÒBÓCˆØ—	‘	×'Ñ'Ó)‰ˆˆ!ˆAØ�‰�aœŸ™Ô(Ø�‰�aœŸ™Ô)Ø�‰�aœŸ™Ô(ð —‘ˆÜ Ô(ˆØ×Ñ˜Ÿ™› v§~¡~Ó'7Ô8ä °Ô>ˆØ×Ñ˜BŸJ™J›L¨&¯.©.Ó*:Ô;Ø×Ñ˜Ÿ™›¤tÒ4ZØ4@ô(Bô 	Cð 	×Ñœ)¤W¨b°(¸DÔAØ×Ñœ)¤\¸#ÐÕ>r9   c                 óŠ  — t        g d¢«      }| j                  |j                  j                  «       t        j
                  «       |j                  «       }| j                  ||«       |j                  d¬«      }| j                  ||«       | j                  |j                  j                  «       t        j                  «       y)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ÓCˆØ�‰�b—i‘i×+Ñ+Ó-¬t¯~©~Ô>à�j‰j‹lˆØ×Ñ˜˜bÔ!ð �j‰j ˆjÓ.ˆØ×Ñ˜˜bÔ!ð 	�‰�c—j‘j×,Ñ,Ó.´·±Õ@r9   c                 óî  — t        «       }| j                  t        |j                  dd¬«       | j                  t        |j                  d«       | j                  t        |j
                  dd«       t        dg«      }t        g ¬«      }||_        | j                  t        |j                  dd¬«       | j                  t        |j                  d«       | j                  t        |j
                  dd«       y)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¡K°À$ÐÔGØ×Ñœ( B§G¡G¨XÔ6Ø×Ñœ( B§I¡I¨x¸Ô@ô ˜;˜-Ó(ˆÜ Ô#ˆØˆŒ	à×Ñœ( B§K¡K°À$ÐÔGØ×Ñœ( B§G¡G¨XÔ6Ø×Ñœ( B§I¡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                  ¤Ž}| j                  |j                  d«      «       | j	                  |j                  d«      «       | j                  |j                  d«      «       | j	                  |j                  d«      «       | j	                  |j                  d«      «       | j                  |j                  d«      «       y)	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˜D×0Ñ0Ñ1ˆð 	�‰˜×,Ñ,¨_Ó=Ô>Ø×Ñ˜×-Ñ-Ð.RÓSÔ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«      }| j                  t        |j
                  d«       y)	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�ó‰JˆD�$ð ˆD×Ñœi¨×)=Ñ)=¸tÑLÀtÓLðô ˜J˜<Ó(ˆØ×Ñœ) S×%:Ñ%:¸DÕAr9   N)rA   rB   rC   rÈ   rÉ   r3   rW   rå   rë   r¤   rù   rü   r  rE   r9   r8   rÕ   rÕ      s`   „ Ù!Ø&ÐòQò?ò:Aò"Añ* ò'à&Ð)Ø$Ø%'Ø)+Ø&'Ø'+Ø'+Ø+/ØØ%&ô€Oò}ó&Br9   rÕ   c                   ó   — e Zd Zd Zy)Údummy_2Nr@   rE   r9   r8   r  r  ³  s   „ Ø�Dr9   r  c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)ÚLazyCryptContextTestr	   c                 óÈ   — t        j                  | «       t        d«       | j                  t        d«       t	        j
                  dd«       t	        j
                  dd«       y )Nr  r0   z1CryptContext\(\)\.replace\(\) has been deprecatedr×   )r   r3   Úunload_handler_nameÚ
addCleanupr4   r5   r6   s    r8   r3   zLazyCryptContextTest.setUp¹  sN   € Ü�‰�tÔô 	˜IÔ&Ø�‰Ô+¨YÔ7ô 	×Ñ Ø Tô	Vä×Ñ Ð*iÕjr9   c                 óš  — | j                  t        d«      «       t        dd«       t        t	        ddg«      dg¬«      }| j                  t        dd«      «       | j                  |j                  j                  d«      «       | j                  |j                  j                  «       ddg«       | j                  t        dd«      «       y)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Ô6Ü# IÐ/KÔLäœd I¨{Ð#;Ó<È+ÈÔWˆà×ÑÔ*¨9°dÓ;Ô<à�‰˜Ÿ	™	×7Ñ7¸ÓDÔEØ×Ñ˜Ÿ™×*Ñ*Ó,¨y¸+Ð.FÔGà�‰Ô)¨)°TÓ:Õ;r9   c                 ó�  ‡ — ‰ j                  t        d«      «       t        dd«       dˆ fd„	}t        |d¬«      }‰ j                  t        dd«      «       ‰ j	                  |j
                  j                  d«      «       ‰ j                  |j
                  j                  «       ddg«       ‰ j	                  t        dd«      «       y)	z0test create_policy() hook, returning CryptPolicyr  r
  c                 óX   •— ‰j                  | «       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Ø  s*   ø€ Ø�O‰O˜DÔ!Ü¤t¨Y¸Ð,DÓ'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Ô6Ü# IÐ/KÔLõ	aô ¨MÀÔEˆà×ÑÔ*¨9°dÓ;Ô<à�‰˜Ÿ	™	×7Ñ7¸ÓDÔEØ×Ñ˜Ÿ™×*Ñ*Ó,¨y¸+Ð.FÔGà�‰Ô)¨)°TÓ:Õ;r9   N)rA   rB   rC   rÉ   r3   r  r  rE   r9   r8   r  r  ¶  s   „ Ø*Ðò
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ß .ß #Ð #ß 2÷ñ ñ
 �Ó€ô
r(�hô r(ôvJB�xô JBôfˆb×Ñô ô-<˜8õ -<øðG ò ØÒðús   ˜B ÂBÂB