
    K}bg&                     *   d Z ddlmZ ddlmZ ddlZddlmZmZ ddl	m
Z
mZmZmZmZmZmZ ddlmZmZmZ  G d d	e          Z G d
 de          Z G d de          Z G d de          ZddlmZmZ  G d de          Z G d de          ZdS )ztests for passlib.util    )with_statement)partialN)is_ascii_safeto_bytes)irangePY2PY3uunicode
join_bytesPYPY)TestCasehbrun_with_fixed_seedsc                       e Zd ZdZd Zd Zd Zd Zd Z e	d          d	             Z
d
 Zd Zd Zd Zd Zd Zd Zd ZdS )MiscTestz#tests various parts of utils modulec                    ddl m} |                     t          |          d           t	          |           |                     dt	          |          v            |                     dt	          |          v            dS )ztest compat's lazymoduler   )compatz,^<module 'passlib.utils.compat' from '.*?'>$	UnicodeIOr   N)passlib.utilsr   assertRegexreprdir
assertTrue)selfr   s     k/home/e360mart.nyusoft.in/public_html/e360mart_env/lib/python3.11/site-packages/passlib/tests/test_utils.pytest_compatzMiscTest.test_compat   s    ((((((fH	J 	J 	J 	Fs6{{2333CKK/00000    c                     ddl m  G fddt                    }|                     |j        d           |j        d         }|                     |j        |j                   d S )Nr   classpropertyc                   *    e Zd ZdZ d             ZdS ))MiscTest.test_classproperty.<locals>.test   c                     | j         S N)xvar)clss    r   xpropz/MiscTest.test_classproperty.<locals>.test.xprop)   s	    xr   N)__name__
__module____qualname__r'   r)   r    s   r   testr#   '   s3        D    ]     r   r-   r$   r)   )	passlib.utils.decorr!   objectassertEqualr)   __dict__assertIsim_func__func__)r   r-   propr!   s      @r   test_classpropertyzMiscTest.test_classproperty$   s    555555	  	  	  	  	  	  	 6 	  	  	  	Q'''}W%dlDM22222r   c                 :   ddl m}  |dd          d             }|                     d|j        v            |                     t          t          d	                    5  |                      |d
d          d           d d d            d S # 1 swxY w Y   d S )Nr   )deprecated_functionz1.6z1.8)
deprecatedremovedc                      | S )ztest docstring )argss    r   	test_funcz4MiscTest.test_deprecated_function.<locals>.test_func5   s	     Kr   z.. deprecated::zvthe function passlib.tests.test_utils.test_func() is deprecated as of Passlib 1.6, and will be removed in Passlib 1.8.)categorymessager$      )r$   rA   )r.   r8   r   __doc__assertWarningListdictDeprecationWarningr0   )r   r8   r>   s      r   test_deprecated_functionz!MiscTest.test_deprecated_function1   s   ;;;;;; 
	u	=	=	=	 	 
>	=	 	)Y->>???##D2D2% % %   	4 	4
 YYq^^U333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   "!BBBc                 T   ddl m  G fddt                    } |            }|                     |j        d           |                     |j        d           |                     |j        d           |j        }t          s"|                     |j        |j	                   d S d S )Nr   memoized_propertyc                   *    e Zd ZdZ d             ZdS ).MiscTest.test_memoized_property.<locals>.dummyr   c                 (    | j         }|dz   | _         |S )Nr$   )counter)r   values     r   rN   z4MiscTest.test_memoized_property.<locals>.dummy.valueI   s    $Qwr   N)r*   r+   r,   rM   rN   rH   s   r   dummyrK   F   s4        G    r   rO   r$   )
r.   rI   r/   r0   rN   rM   r	   r2   r3   r4   )r   rO   dr5   rI   s       @r   test_memoized_propertyzMiscTest.test_memoized_propertyC   s    999999	 	 	 	 	 	 	F 	 	 	 EGG!$$$!$$$A&&&{ 	7MM$,66666	7 	7r   c                    ddl m} t          ||                                           }|                     t           |d                    d            |d          } |d          }|                     |t                     |                     t          |          d           |                     t          |          d           |                     ||           dS )zgetrandbytes()r   )getrandbytes
   N)	r   rS   r   	getRandomr0   lenassertIsInstancebytesassertNotEqual)r   rS   wrapperabs        r   test_getrandbyteszMiscTest.test_getrandbytesX   s    ......,(8(899WWQZZ!,,,GBKKGBKKa'''Q$$$Q$$$Aq!!!!!r   i   )countc           	      4   ddl m} t          ||                     |                    }|                      |dd          d           |                     t          |dd           |                     t          |dd           |                      |dd          d	            |t          d          d
          } |t          d          d
          }|                     |t                     | 
                    ||           |                     t          t          |                    t          d          t          d          t          d          g            |dd
          } |dd
          }|                     |t                     | 
                    ||           |                     t          t          |                    d                              t          d          t          d          t          d          g           dS )zgetrandstr()r   
getrandstr)seedabc r[      aaaaa    r\   c   abcasciiN)r   ra   r   rU   r0   assertRaises
ValueErrorr
   rW   r   rY   sortedsetrX   decode)r   rb   ra   rZ   xys         r   test_getrandstrzMiscTest.test_getrandstrd   s    	-,,,,,*dnn$n&?&?@@ 	q))2... 	*gub999 	*gr1555 	a'222 GAeHHb!!GAeHHb!!a)))Aa   A!C&&3#)?@@@ GFBGFBa'''Aa   AHHW$5$5 6 677!C&&3#9OPPPPPr   c                     ddl m} t          j        dd           |                     t           |d                    d           dS )zgenerate_password()r   )generate_passwordignorez1The function.*generate_password\(\) is deprecated   N)r   ru   warningsfilterwarningsr0   rV   )r   ru   s     r   test_generate_passwordzMiscTest.test_generate_password   sX    333333*]^^^..r2233R88888r   c                     ddl m} ddlm}  |dg          }|                      ||                     |                      ||                      dS )ztest is_crypt_context()r   )is_crypt_context)CryptContext	des_cryptN)r   r|   passlib.contextr}   r   assertFalse)r   r|   r}   ccs       r   test_is_crypt_contextzMiscTest.test_is_crypt_context   s~    222222000000\;-((((,,-----b11122222r   c                 N   ddl }ddlm} |                     |                      }|                    dd          }|                     |                      }|                    dd          }|                     ||           |                     ||                     dS )ztest genseed()r   N)genseedl    d(	 )randomr   r   RandomrandintrY   rb   )r   r   r   rngr[   r\   s         r   test_genseedzMiscTest.test_genseed   s    ))))))mmGGII&&KK6""mmGGII&&KK6""Aa   r   c                 d   ddl m}m}m} ddlm}m}  |            }|sj|                     |d           |                      |dd          d           |                      |dd                     | 	                    d	          |s| 
                    d
          dD ]}||v r n		|d         } ||          t          dd          r                    j                  fd}t          d          }	 ||	          }
 ||	|
          }|                     |t                      |                     ||
           |                      |t#          |	          t#          |
                    |
           |
dd         dz   }|                      ||	|          |
           t          d          } ||          }|                      |||          |           |                      |t#          |          t#          |                    |           |                     t&          |d|
           |                      |d|
                     |                      |d|                     ddl m} |j        }	 dfd|_        dD ]A|                      |d|
          d           |                      |d|
                     Bd|                      |d|
          d           |                      |d|
                     ||_        dS # ||_        w xY w)ztest crypt.crypt() wrappersr   )	has_crypt
safe_crypt
test_crypt)get_supported_os_crypt_schemesget_crypt_handlerr<   r-   aaNzaaqPiZY5xR5l.zcrypt.crypt() not availablez0crypt() present, but no supported schemes found!)	md5_cryptsha256_cryptre   
min_rounds)roundsc                     t          | t                    sJ                     |           }t          |t                    r|                    d          }t          |t                    sJ |S )Nutf-8)
isinstancer   hashrX   rp   )secretr   hashers     r   get_hashz%MiscTest.test_crypt.<locals>.get_hash   sh    fg.....;;v&&D$&& ,{{7++dG,,,,,Kr   xxu   testሴ c                     S r&   r<   )r   r   retvals     r   <lambda>z%MiscTest.test_crypt.<locals>.<lambda>   s    f r   )Nrd   :z:0z*0xxx)r   r   r   r   passlib.registryr   r   r0   r   skipTestfailgetattrusingr   r
   rW   r   r   rl   rm   r   utils_crypt)r   r   r   r   r   r   	supportedschemer   s1h1resulth1xs2h2modorigr   r   s                    @@r   r   zMiscTest.test_crypt   s   CCCCCCCCCCVVVVVVVV 3244	 	?Y+++ZZ55t<<<ZZ@@AAA-- =>>>  	P
 ))NOOO 4 	# 	#F"" # r]F""6**6<.. 	<\\):\;;F	 	 	 	 	 vYYXb\\B##fg...$$$HRLL(2,,??DDD "gnB,,b111 |__Xb\\B++R000HRLL(2,,??DDD 	*j&"=== 	

62..///FC00111
 	$#####z	F4444CJ5 9 9  FB!7!7>>>  FB!7!78888FZZ33U;;;ZZ33444 CJJJCJs   BL& &	L/c                 	   ddl mm |                     t          t          d          d           |                     t          t          d          d           |                     t          t          d          d           |                     t          dt          d                     |                     t          dd           |                     t          dd           |                     t          dt          d                     |                     t          dd           |                     t          dt          d                     |                     t          dd           fd}t          d          t          d	          t          d
          dz  fD ]} ||          r%|                      ||          d|d           n|                     t          ||           |                      ||          d|d           |                    d          }|                      ||          d|d           t          d          t          d          ft          d          t          d          ft          d          t          d          ft          d          t          d          ft          d
          dz  dd         t          d          z   t          d
          dz  ft          d          t          d          ft          d	          t          d          ft          d	          t          d          ft          d          t          d	          ff	D ]k\  }} ||          rZ ||          rO|                      ||          d|d|d           |                      ||          d|d|d           n:|                     t          ||           |                     t          ||           |                      ||          d|d|d           |                      ||          d|d|d           |                    d          }|                    d          }|                      ||          d|d|d           |                      ||          d|d|d           mdS )ztest consteq()r   )consteqstr_consteqrd   r   r$   Nc                 8    u pt           pt          |           S r&   )r   r   )rN   r   r   s    r   consteq_supports_stringz6MiscTest.test_consteq.<locals>.consteq_supports_string  s"     {*IcI]55I5IJr   r[   rc   u   ÿ¢ rT   zvalue r   latin-1ri   abcabczbaabcabzabcabcabzre   abcdefdefabcqwertyuiopasdfghjklzxcvbnmzvalues  )	r   r   r   rl   	TypeErrorr
   r   encoder   )r   r   rN   lrr   r   s        @@r   test_consteqzMiscTest.test_consteq   s    	76666666 	)WaeeS999)WaeeQ777)WaeeT:::)Wc1R55999)Wc1555)Wc4888)WdAbEE:::)WdC888)Wa2777)Wa555	K 	K 	K 	K 	K 	K #%$%%b( 	K 	KE
 '&u-- Du 5 5 5eee7MNNNN!!)WeUCCCOOKKu555eee7MNNNLL++EOOGGE5111%%%3IJJJJ
 33(88-88-88-&''*CRC01V99<())",. 2aff%5akk*5akk*/00!E((; 	E 	ECAa '&q)) <.E.Ea.H.H <  A111QQQ0GHHH  A111QQQ0GHHHH!!)Wa;;;!!)Wa;;;[[A...111QQQ0GHHH[[A...111QQQ0GHHH##A##AWWQ]]]qqq,CDDDWWQ]]]qqq,CDDDD7	E 	Er   c                 j   |                                   ddlm} |                     t          |d           |                     t          |d           |                     t          |d           |                      |t          d                    t          d                     |                      |t          d                    t          d                     |                      |t          d                    t          d	                     |                      |t          d
                    t          d                     |                      |t          d                    t          d                     |                      |t          d                    t          d                     |                     t          |t          d                     |                     t          |t          d                     |                     t          |t          d                     |                     t          |t          d                     |                     t          |t          d                     |                     t          |t          d                     |                     t          |t          d                     |                     t          |t          d                     |                     t          |t          d                     |                     t          |t          d                     |                     t          |t          d                     |                     t          |t          d                     |                     t          |t          d                     |                     t          |t          d                     |                     t          |t          d                     |                      |t          d                    t          d                     |                      |t          d                    t          d                     |                      |t          d                    t          d                     |                     t          |t          d                      |                     t          |t          d!                     |                      |t          d"                    t          d"                     |                      |t          d#                    t          d$                     |                      |t          d%                    t          d%                     |                      |t          d&                    t          d&                     |                      |t          d'                    t          d(                     |                      |t          d)                    t          d$                     |                     t          |t          d*                     |                     t          |t          d                     |                     t          |t          d                     |                      |t          d                    t          d                     dS )+z"test saslprep() unicode normalizerr   )saslprepNr$   r   rd      ­u   $­$‍$z$$$u
   $ $ $　$z$ $ $ $u   à   àr   u   ᠎u   ￹u   u   ﷐u   u   �u   ⿰u   ‎u   ⁯u   ऀu   ￸u   󠀁u   ا1u   اu   ابu   ا1بu   اAبu   xاzxAzu   I­XIXuserUSER   ªr[   u   Ⅸ)require_stringprepr   r   rl   r   r0   r
   rm   )r   sps     r   test_saslprepzMiscTest.test_saslprepe  s   !!!000000 	)R...)R+++)R--- 	AbEEAbEE***AhKK!B%%000 	A/00111U88<<< 	A12233Qy\\BBB 	AiLL))1X;;777AhKK!H++666 	*b!H++666*b!H++666*b!H++666*b!H++666*b!H++666*b!H++666*b!H++666*b!H++666*b!H++666*b!H++666*b!H++666*b!H++666*b!H++666*b!L//::: 	*b!N*;*;<<<AhKK!H++666An--...0A0ABBBA23344a8L6M6MNNN*b!,@*A*ABBB*b!J--888AjMM**AjMM::: 	AjMM**AdGG444AfII&		222AfII&		222AhKK!C&&111AhKK!D''222*b!H++666*b!N*;*;<<< 	*b!N*;*;<<<A23344a8L6M6MNNNNNr   c                    ddl m} |                      |d          g            |                      |d          g            |                      |d          dg           |                      |d          dg           |                      |d          ddg           |                      |d	          ddg           d S )
Nr   )
splitcommard   ,r[   z a , z a , br\   z a, b, )r   r   r0   )r   r   s     r   test_splitcommazMiscTest.test_splitcomma  s    ,,,,,,B,,,C"---C3%000G,,se444H--Sz:::I..c
;;;;;r   c           
         ddl m} dD ]$}|                    d           t          |          }t	          |dz             D ]}d|d|d} |||          }|                    d           |                     t          |          ||	           |                     t          |          t          ||          |	           |                     t          |          t          |d
z   |dz             |	           | 	                    ||dt          |                   |	           &dD ][}t          |          }t	          |dz             D ]7}d|d|d} |||          }| 	                    ||d|         |	           8\dD ]^}t          |          }t	          |dz             D ]:}d|d|d} |||          }| 	                    ||d|dz            |	           ;_d}| 	                     ||d          d           | 	                     ||d          d           | 	                     ||d          d           | 	                     ||d          d           | 	                     ||d
          d           | 	                     ||d          d           | 	                     ||d          d           | 	                     ||d          d           | 	                     ||d          d           | 	                     ||d          d           | 	                     ||d          d           | 	                     ||d          d           dS )z!
        utf8_truncate()
        r   )utf8_truncate)	r      1s   123   s
      s
   s   a þþs&   abcdefghjusdfaoiu þþdsfioauweoiruerr      zsource=z index=z: )msg   r$   N)   s
       s
             )   s
      s
   MNOPr      MrA   s   MNs   MNs   MNrf            s   MNO	   rT      )
r   r   rp   rV   rangeassertLessEqualassertGreaterEqualmin
assertLessr0   )r   r   sourceendidxprefixr   s          r   test_utf8_truncatezMiscTest.test_utf8_truncate  sc    	0/////
 !	K !	KF MM'"""f++CS2X K K3966333?&vs33 g&&& $$S[[#6$BBB ''FSc]]'OOOFSq#'-B-BOOO   V)=6 JJJJ!K,
 	C 	CF f++CS2X C C3966333?&vs33  6 BBBBC
 	E 	EF f++CS2X E E3966333?&vs33  QV DDDDE 1vq113777vq114888vq115999vq11.	0 	0 	0 	vq112	4 	4 	4 	vq112	4 	4 	4 	vq112	4 	4 	4 	vq112	4 	4 	4 	vq113	5 	5 	5 	vq118	: 	: 	: 	vr228	: 	: 	: 	vr228	: 	: 	: 	: 	:r   N)r*   r+   r,   rB   r   r6   rF   rQ   r]   r   rs   rz   r   r   r   r   r   r   r   r<   r   r   r   r      s"       --
1 
1 
13 3 34 4 4$7 7 7*
" 
" 
" %%%&Q &Q &%&QP9 9 93 3 3  T T TlEE EE EELMO MO MO^< < <t: t: t: t: t:r   r   c                   6    e Zd ZdZd Zd Zd Zd Zd Zd Z	dS )		CodecTestz,tests bytes/unicode helpers in passlib.utilsc                    t           r%ddl}|                     t          |j                   n$ddl}|                     t          |j                   |                     dt                     |                     dt                     t           r+|                     d                    d          d           dS |                     dd           dS )z*test b() helper, bytes and native str typer   Nr       r       ÿ)	r	   builtinsr2   rX   __builtin__strrW   r0   rp   )r   r   s     r   
test_byteszCodecTest.test_bytes:  s     	/OOOMM%0000****MM%...c5)))k5111 	6[//	::JGGGGG[*55555r   c                     ddl m} |                      |t          d                    d           |                      |t          d                    d           |                      |t          d          d          d           |                     t
          |t          d          d	           |                      |d          d           |                      |d          d           |                      |d          d           |                      |dd          d           |                      |ddd
d          d           |                     t          |dd           |                     t          |d           dS )ztest to_bytes()r   )r   rc   rj   r       ÿr   r   rk   rd   r   N)r   r   r0   r
   rl   rm   AssertionErrorr   )r   r   s     r   test_to_byteszCodecTest.test_to_bytesJ  s   ****** 	!E((++fEEE!J--00oNNN 	!J--;;kJJJ*h*wGGG 	&))&AAA+..+FFF/22/JJJ 	/9==<K	M 	M 	M 	/9b'JJ<G	I 	I 	I 	.(E4@@@)Xt44444r   c                    ddl m} |                      |t          d                    t          d                     |                      |t          d                    t          d                     |                      |t          d          d          t          d                     |                      |d          t          d                     |                      |d          t          d                     |                      |dd	          t          d                     |                     t
          |d           |                     t          |dd
           |                     t          |d
           d
S )ztest to_unicode()r   )
to_unicoderc   r   rk   rj   r  r   r   N)r   r  r0   r
   rl   rm   r  r   )r   r  s     r   test_to_unicodezCodecTest.test_to_unicodeg  sp   ,,,,,, 	AeHH--ahhGGGAjMM22a
mmLLL 	AjMM7;;a
mmLLL 	F++!E((CCCO44!J--HHHK;;<=jMM	K 	K 	K*j+>>> 	.*eTBBB)Z66666r   c                 v   ddl m} |                      |t          d          d          d           |                      |dd          d           t          rK|                      |t          d          d          d           |                     t          |dd           nJ|                     t          |t          d          d           |                      |dd          d           |                      |t          d          d	          d           |                      |d
d	          d           |                      |t          d          d          t          rdnd           |                      |dd          t          rdnd           |                     t          |dd           dS )ztest to_native_str()r   )to_native_strrc   rk   rj   r   s   àu   Ã r      r   N)	r   r  r0   r
   r	   rl   UnicodeDecodeErrorUnicodeEncodeErrorr   )r   r  s     r   test_to_native_strzCodecTest.test_to_native_str}  s   ////// 	qxx995AAAvw77???  	N]]1V99g>>GGG0-%' ' ' ' 0-6%' ' ']];@@*MMM 	qyy)<<fEEEw	::FCCC 	qyy'::#&6J	8 	8 	8{G<<#&6J	8 	8 	8 	)]D'BBBBBr   c                 6   ddl m} |                      |d                     |                      |t          d                               |                      |d                     |                      |t          d                               dS )ztest is_ascii_safe()r   )r   s    abcz abcs    abcu    abcN)r   r   r   r
   r   )r   r   s     r   test_is_ascii_safezCodecTest.test_is_ascii_safe  s    //////n55666a&6&677888~66777q'7'78899999r   c                    ddl m} |                      |dd                     |                      |dd                     |                      |dd                     |                      |dd                     |                      |dd                     |                      |dd                     |                      |dd                     |                      |dd                     dS )	ztest is_same_codec()r   )is_same_codecNrk   ASCIIr   utf8UTF_8)r   r  r   r   )r   r  s     r   test_is_same_codeczCodecTest.test_is_same_codec  s   //////dD11222tW55666gw77888gw77888gw77888gv66777gw77888w8899999r   N)
r*   r+   r,   rB   r   r  r  r  r  r  r<   r   r   r   r   7  sw        666 6 6 5 5 5:7 7 7,C C C>: : :: : : : :r   r   c                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )Base64EngineTestz%test standalone parts of Base64Enginec                     ddl m}m} |                     t          |d           |                     t
          ||d d                    |                     t
          ||d d         dz              d S )Nr   )Base64Engine
AB64_CHARSr$   re   A)passlib.utils.binaryr  r  rl   r   rm   )r   r  r  s      r   test_constructorz!Base64EngineTest.test_constructor  s    AAAAAAAA 	)\1555 	*lJssODDD 	*lJssOc4IJJJJJr   c                 8   ddl m} |                      |d          t          d                     |                      |t	          d                    t          d                     |                     t          |t	          d                     |                     t          |d           |                     t          |d           |                     t          |t	          d	                     |                      |d
          t          d                     |                     t          |d           |                      |d          t          d                     |                      |d          t          d                     |                      |d          t          d                     |                      |d          t          d                     |                      |d          t          d                     dS )zab64_decode()r   )ab64_decoderj   69b7rc      abÿ   ab   ab!ab!   abcd69b71d   abcde   abcdef69b71d79   abcdeQ   abcdefg
69b71d79f8   ab+/69bfbf   ab./N)r  r  r0   r   r
   rl   rm   r   )r   r  s     r   test_ab64_decodez!Base64EngineTest.test_ab64_decode  s   444444 	V,,bjj999QuXX..6

;;; 	*k1X;;??? 	)[)<<<)[&999)[!E((;;; 	W--r(||<<<*k8<<<Y//J@@@Y//J@@@Z00"\2B2BCCC 	W--r(||<<<W--r(||<<<<<r   c                 ^   ddl m} |                      |t          d                    d           |                     t
          rt          nt          |t          d                              d                     |                      |t          d                    d           |                      |t          d                    d	           |                      |t          d
                    d           |                      |t          d                    d           dS )zab64_encode()r   )ab64_encoder  rj   r   r%  r$  r(  r)  r+  r*  r-  r.  N)	r  r1  r0   r   rl   r	   r   r  rp   )r   r1  s     r   test_ab64_encodez!Base64EngineTest.test_ab64_encode  "   444444 	RZZ00&999 	sB))0B%r&zz'8'8'C'C	E 	E 	E 	R\\22G<<<R
^^44i@@@R%5%566
CCC 	R\\22G<<<<<r   c                    ddl m} |                      |d          t          d                     |                      |t	          d                    t          d                     |                     t          |t	          d                     |                     t          |d           |                     t          |d           |                     t          |t	          d	                     |                      |d
          t          d                     |                     t          |d           |                      |d          t          d                     |                      |d          t          d                     |                      |d          t          d                     dS )zb64s_decode()r   )b64s_decoderj   r  rc   r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  N)r  r5  r0   r   r
   rl   rm   r   )r   r5  s     r   test_b64s_decodez!Base64EngineTest.test_b64s_decode  s   444444 	V,,bjj999QuXX..6

;;; 	*k1X;;??? 	)[)<<<)[&999)[!E((;;; 	W--r(||<<<*k8<<<Y//J@@@Y//J@@@Z00"\2B2BCCCCCr   c                 ^   ddl m} |                      |t          d                    d           |                     t
          rt          nt          |t          d                              d                     |                      |t          d                    d           |                      |t          d                    d	           |                      |t          d
                    d           |                      |t          d                    d           dS )zb64s_encode()r   )b64s_encoder  rj   r   r%  r$  r(  r)  r+  r*  r-  r,  N)	r  r8  r0   r   rl   r	   r   r  rp   )r   r8  s     r   test_b64s_encodez!Base64EngineTest.test_b64s_encode  r3  r   N)	r*   r+   r,   rB   r  r/  r2  r6  r9  r<   r   r   r  r    sk        //
K 
K 
K= = =8= = =&D D D.= = = = =r   r  c                       e Zd ZdZdZdZdZdZd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zddg dfddg dfgZddg dfgZd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )_Base64Testz+common tests for all Base64Engine instancesN   ?c                 :     t           fd|D                       S )z!generate byte string from offsetsc              3   F   K   | ]}j         j        ||d z            V  dS )r$   N)enginebytemap).0or   s     r   	<genexpr>z _Base64Test.m.<locals>.<genexpr>5  s5      FF$+-a!e4FFFFFFr   )r   )r   offsetss   ` r   mz_Base64Test.m3  s&    FFFFgFFFFFFr   c                     | j         }|j        }| j        D ]+\  }} ||          }|                     ||d|d           ,dS )z,test encode_bytes() against reference inputszencode r   N)r?  encode_bytesencoded_datar0   )r   r?  r   rawencodedr   s         r   test_encode_bytesz_Base64Test.test_encode_bytes:  sf    $ - 	E 	ELCVC[[FVWWccc.CDDDD	E 	Er   c                     | j         }|j        }|                     t          |t	          d                     |                     t          |d           dS )z"test encode_bytes() with bad inputr   N)r?  rG  rl   r   r
   )r   r?  r   s      r   test_encode_bytes_badz!_Base64Test.test_encode_bytes_badB  sM    $)VQvYY777)VT22222r   c                     | j         }|j        }| j        D ]+\  }} ||          }|                     ||d|d           ,dS )z,test decode_bytes() against reference inputszdecode r   N)r?  decode_bytesrH  r0   )r   r?  rp   rI  rJ  r   s         r   test_decode_bytesz_Base64Test.test_decode_bytesL  sf    $ - 	E 	ELCVG__FVSS'''*CDDDD	E 	Er   c                    t           rd nt          }| j        }| j        }|j        }d}|                      | |dd                    |           t          dd          D ]l}|j        r|dk     r|n |d|dz
  z            }n|dk     r |d|dz   z            n|}|                      | |dd|z                      |d|z             m|                      | |ddd                    |dz             t          dd          D ]p}|j        r|dk     r|n |d|dz
  z            }n|dk     r |d|dz   z            n|}|                      | |ddd|z                      ||z   d	|z             qd
S )z(test decode_bytes() ignores padding bitsc                 "    t          | g          S r&   )rX   )vs    r   r   z7_Base64Test.test_decode_bytes_padding.<locals>.<lambda>V  s    %** r   r   r   r   r   r$   rA   z
%d/4 bits:z
%d/2 bits:N)r	   chrr?  rE  rO  r0   r   big)r   bchrr?  rE  rp   BNULLicorrects           r   test_decode_bytes_paddingz%_Base64Test.test_decode_bytes_paddingT  s   ),5$$$#F$ 	!A///q 	K 	KAz =#$q55%%dd1qs8nn,-EE$$q1Q3x...uVVAAa1II..9IJJJJ 	!Aa))57333q 	/ 	/Az =#$q55%%dd1qs8nn,-EE$$q1Q3x...uVVAAa!Q$KK00%'/)A-/ / / /	/ 	/r   c                    | j         }|j        }|                     t          ||j        dd                    |                     | j        |j        v           |                     t          || j        dz             |                     t          ||j        dd                    |                     t          |d           dS )z"test decode_bytes() with bad inputNrf   r   )	r?  rO  rl   rm   r@  r   bad_byter   charmap)r   r?  rp   s      r   test_decode_bytes_badz!_Base64Test.test_decode_bytes_bado  s    $ 	*ffnRaR.@AAA 	V^;<<<*fdmAo>>> 	)VV^BQB-?@@@)VT22222r   c                 J   | j         }ddlm}m} |                                 }d}t          d          D ]l}|                    |rdndd          }|sd}d|z  d	z   d
z  } |||          }	|                    |	          }
|                     t          |
          |           |
                    |
          }|                     ||	           |dz  dk    r||                    g d          z  }d
|z  dz  } |||j        |          }
|
                    |
          }	|                     t          |	          |d|z             |                    |	          }|dz  r(|                     |dd         |
dd                    V|                     ||
           ndS )z2test encode_bytes/decode_bytes against random datar   )rS   ra   Fi  r$      Tr   rA   r   )re   r$   rA   zencoded %d:Nre   )r?  r   rS   ra   rU   r   r   rG  r0   rV   rO  choicer@  )r   r?  rS   ra   r   saw_zerorX  sizeenc_sizerI  rJ  r   raw_sizes                r   
test_codecz_Base64Test.test_codec  s   ::::::::nn '	2 '	2A ;;H3qq!R88D  $q1}H,sD))C ))#..GS\\8444 ((11FVS))) ax1}}

888,,,vqyH jfnd;;G %%g..CSXXx1EFFF ((--Fax 2  gcrcl;;;;  1111O'	2 '	2r   c                 H   ddl m} |                                 }| j        }| j        j        }d}|dk     rk|                    dd          } |||j        |                              d          }|dz  dk    r|                     t          ||           h|
                    |                    |                    }|                                dk     r*|                    d          }|                    d          }||k    r: ||          \  }	}
|                     |	           |                     |
|           nR|                     |d	z  d            ||          \  }	}
|                     |	           |                     |
|           |dz  }|dk     id
S d
S )ztest repair_unused()r   r`   i,     rk   r   r$   g      ?r   N)r   ra   rU   r?  check_repair_unusedr   r]  r   rl   rm   rG  rO  r   rp   r   r0   rY   r   )r   ra   r   r?  ri  rX  rc  cdatardataokr   s              r   test_repair_unusedz_Base64Test.test_repair_unused  s    	-,,,,,nn"k=#gg;;q$$DJsFND99@@IIEax1}}!!*.A5III''(;(;E(B(BCCEzz||b  W--W--~~0077
F  $$$  //// ##D1Ha0000077
F###  ///FA- #ggggggr   s   3"s   "3)rA   r$   r   s   "3)r$   rA   r   s   ")r   r   r$   c                     | j         }| j        | j        z   D ]G\  }}}|                    ||          }|                    |          }|                     ||           H|                     t          |j        t          d          g            dS )ztest encode_transposed_bytes()r[   N)	r?  
transposedtransposed_dupsencode_transposed_bytesrO  r0   rl   r   r
   )r   r?  r   inputrD  tmpouts          r   test_encode_transposed_bytesz(_Base64Test.test_encode_transposed_bytes  s    &*o8L&L 	* 	*"FE700@@C%%c**CS&)))))V%CQsVVRPPPPPr   c                     | j         }| j        D ]G\  }}}|                    |          }|                    ||          }|                     ||           HdS )ztest decode_transposed_bytes()N)r?  ro  rG  decode_transposed_bytesr0   )r   r?  rr  r   rD  rs  rt  s          r   test_decode_transposed_bytesz(_Base64Test.test_decode_transposed_bytes  sl    &*o 	* 	*"E67%%e,,C00g>>CS&))))	* 	*r   c                     | j         }| j        D ]=\  }}}|                    |          }|                     t          |j        ||           >dS )z8test decode_transposed_bytes() fails if map is a one-wayN)r?  rp  rG  rl   r   rw  )r   r?  rr  _rD  rs  s         r    test_decode_transposed_bytes_badz,_Base64Test.test_decode_transposed_bytes_bad  sh    !%!5 	' 	'E1g%%e,,Ci)G%' ' ' '	' 	'r   c                    |                                  }| j        }t          |d|z            }t          |d|z            }| dz  }||z   dz  }d|z  }	|D ]A\  }
} ||
          }|                     |t                     |                     ||           B|                     t          |d           |                     t          ||	           |D ])\  }
}|                      ||          |
d|d           *| j        }|                     t          | |d          |dz   z             |                     t          | |d          |dz
  z             |                     t          || j	        |z             |                     t          ||j        d                    |                     t          |d	           dd
lm} t          d          D ]}|                    d|	dz
            }
 ||
          }|                     t!          |          |           |                      ||          |
            |||j        |          } ||          }
|                     |
dd|z             |                     |
|	d|z              ||
          }|r'|                     |d	d         |d	d                    |                     ||           d	S )z5helper to check encode_intXX & decode_intXX functionszencode_int%szdecode_int%sr   r$   re   zencoded r   r   Nr`   d   zdecode %r out of bounds:r   )rU   r?  r   rW   rX   r0   rl   rm   rE  r\  r   r]  r   ra   r   r   rV   r@  r   r   )r   bitsencoded_pairsr   r?  r   rp   padcharsupperrN   rJ  r   rE  ra   rX  s                   r   check_int_pairz_Base64Test.check_int_pair  s   nn$!677$!677eaicA4 , 	. 	.NE7VE]]F!!&%000VW----*fb111*fe444 , 	Q 	QNE7VVG__eeggg5OPPPPF*faaddE!Gn===*faaddE!Gn===*fdmE.ABBB)VV^A->???)VT222 	-,,,,, 	2 	2AKK57++EfUmmGS\\5111VVG__e444 !jfne<<GF7OOE##E1.H7.RSSSOOE5*Dw*NOOOVE]]F 2  gcrcl;;;;  1111!	2 	2r   c                 ~    | j         }| j        }|                     dd |d          fd |d          fg           d S )Nr   r   ?   )r?  rE  r  r   r?  rE  s      r   	test_int6z_Base64Test.test_int6/  sI    FAAAaDD	B";788888r   c           
          | j         }| j        }|                     dd |dd          fd|j        r |dd          n |dd          fd |dd          fg           d S )Nr`  r   r  i  r?  rE  r  rU  r  s      r   
test_int12z_Base64Test.test_int124  s    FBAAaFFFJ31RAAbGG4uaa2hh6G I 	J 	J 	J 	J 	Jr   c                     | j         }| j        }|                     dd |dddd          fd|j        r |dddd          n |dddd          fd |dddd          fg           d S )N   r   r  i r  r  s      r   
test_int24z_Base64Test.test_int24:  s    FBAAa!AJJ
;1Qq"Qq<qqBr"~~& ( 	) 	) 	) 	) 	)r   c                 B   | j         }| j        }|                     dd |ddddddddddd          fd|j        r |ddddddddddd          n |ddddddddddd          fd|j        r |ddddddddddd          n |ddddddddddd          fg           d S )N@   r   r  r   <   l    rw   r  r  s      r   
test_int64z_Base64Test.test_int64A  s    FB!QQq1Q!Aa1Q%?%?!@FJ 1QQq1Q!Aa1R000Qr!Aa1Qq!Aa002VZ ?AAbBr2bB2bAAA2bB2bR2>>@!A 	B 	B 	B 	B 	Br   c                 0   | j         s|                     d          | j        }| j         D ]j\  }}}t          |d|z            }t          |d|z            }|                      ||          |           |                      ||          |           kdS )z(test against reference integer encodingsznone defined for classzencode_int%dzdecode_int%dN)encoded_ints	skipTestsr?  r   r0   )r   r?  datarN   r~  r   rp   s          r   test_encoded_intsz_Base64Test.test_encoded_intsL  s      	;..!9:::!%!2 	2 	2D%V^d%:;;FV^d%:;;FVVE]]D111VVD\\51111		2 	2r   )r*   r+   r,   rB   r?  rH  r  r\  rE  rK  rM  rP  rZ  r^  rf  rm  ro  rp  ru  rx  r{  r  r  r  r  r  r  r<   r   r   r;  r;     s       55 F L L HG G GE E E3 3 3E E E/ / /63 3 3&-2 -2 -2^  P 
/'''2	/'''2J 
/'''2O
Q Q Q* * *' ' '.2 .2 .2`9 9 9
J J J) ) )	B 	B 	B	2 	2 	2 	2 	2r   r;  )h64h64bigc                   *    e Zd ZdZeZdZg dZddgZdS )H64_Testztest H64 codec functionsz	h64 codec)	r   r   )   Us   J/)   Us   Jd8)   UUs   JdOJ)   UUs   JdOJe0)   UUUs   JdOJeK3)   UUUs   JdOJeKZe)   UUs   JdOJj0)   UU_s   JdOJey3)   z.r  r`  )   .z  r`  N)	r*   r+   r,   rB   r  r?  descriptionPrefixrH  r  r<   r   r   r  r  _  s?        ""F#  L  	LLLr   r  c                   *    e Zd ZdZeZdZg dZddgZdS )H64Big_Testztest H64Big codec functionszh64big codec)	r  )r  s   JE)r  s   JOc)r  s   JOdJ)r  s   JOdJeU)r  s   JOdJeZI)r  s   JOdJeZKe)r  s   JOdJfk)r  s   JOdJeZw)r  r  r`  )r  r  r`  N)	r*   r+   r,   rB   r  r?  r  rH  r  r<   r   r   r  r  x  s?        %%F&  L  	LLLr   r  )rB   
__future__r   	functoolsr   rx   r   r   r   passlib.utils.compatr   r   r	   r
   r   r   r   passlib.tests.utilsr   r   r   r   r   r  r;  r  r  r  r  r  r<   r   r   <module>r     s     & % % % % %        2 1 1 1 1 1 1 1 O O O O O O O O O O O O O O O O O O B B B B B B B B B B
^: ^: ^: ^: ^:x ^: ^: ^:H{: {: {: {: {: {: {: {:@g= g= g= g= g=x g= g= g=Ru2 u2 u2 u2 u2( u2 u2 u2z	 - , , , , , , ,    {   2    +     r   