Viewing File: /usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyo



5Xc@s0dZddlmZddlmZddlZddlmZddlm	Z	m
Z
mZmZm
Z
mZmZddlmZmZmZdefd	YZd
efdYZdefd
YZdefdYZddlmZmZdefdYZdefdYZdS(stests for passlib.utili(twith_statement(tpartialN(t
is_ascii_safe(tirangetPY2tPY3tutunicodet
join_bytestPYPY(tTestCasethbtrun_with_fixed_seedstMiscTestcBseZdZdZdZdZdZdZedddZ	d	Z
d
ZdZdZ
d
ZdZdZRS(s#tests various parts of utils modulecCsfddlm}|jt|dt||jdt|k|jdt|kdS(stest compat's lazymodulei(tcompats,^<module 'passlib.utils.compat' from '.*?'>$t	UnicodeIORN(t
passlib.utilsRtassertRegextreprtdirt
assertTrue(tselfR((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyttest_compats
csfddlmdtffdY}|j|jd|jd}|j|j|jdS(Ni(t
classpropertyttestcseZdZdZRS(icSs|jS(N(txvar(tcls((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pytxprop)s(t__name__t
__module__RR((R(s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyR'siR(	tpasslib.utils.decorRtobjecttassertEqualRt__dict__tassertIstim_funct__func__(RRtprop((Rs</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyttest_classproperty$s

cCsddlm}|ddddd}|jd|jk|jtd	td
d|j|dd
dWdQXdS(Ni(tdeprecated_functiont
deprecateds1.6tremoveds1.8cWs|S(stest docstring((targs((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyt	test_func5ss.. deprecated::tcategorytmessagesvthe function passlib.tests.test_utils.test_func() is deprecated as of Passlib 1.6, and will be removed in Passlib 1.8.ii(ii(RR'Rt__doc__tassertWarningListtdicttDeprecationWarningR (RR'R+((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyttest_deprecated_function1s
csddlmdtffdY}|}|j|jd|j|jd|j|jd|j}ts|j|j|j	ndS(Ni(tmemoized_propertytdummycseZdZdZRS(icSs|j}|d|_|S(Ni(tcounter(Rtvalue((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyR6Is	
(RRR5R6((R3(s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyR4Fsii(
RR3RR R6R5RR"R#R$(RR4tdR%((R3s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyttest_memoized_propertyCs			cCsddlm}t||j}|jt|dd|d}|d}|j|t|jt|d|jt|d|j||dS(sgetrandbytes()i(tgetrandbytesii
N(	RR9Rt	getRandomR tlentassertIsInstancetbytestassertNotEqual(RR9twrappertatb((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyttest_getrandbytesXstcounticCsddlm}t||jd|}|j|ddd|jt|dd|jt|dd|j|ddd	|tdd
}|tdd
}|j|t	|j
|||jtt|tdtdtdg|dd
}|dd
}|j|t
|j
|||jtt|jd
tdtdtdgdS(sgetrandstr()i(t
getrandstrtseedtabcitR@itaaaaai RAtctasciiN(RRDRR:R tassertRaisest
ValueErrorRR<RR>tsortedtsetR=tdecode(RRERDR?txty((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyttest_getrandstrds 
7cCs@ddlm}tjdd|jt|dddS(sgenerate_password()i(tgenerate_passwordtignores1The function.*generate_password\(\) is deprecatediN(RRStwarningstfilterwarningsR R;(RRS((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyttest_generate_passwordscCsZddlm}ddlm}|dg}|j|||j||dS(stest is_crypt_context()i(tis_crypt_context(tCryptContextt	des_cryptN(RRXtpasslib.contextRYRtassertFalse(RRXRYtcc((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyttest_is_crypt_contexts
cCsddl}ddlm}|j|}|jdd}|j|}|jdd}|j|||j||dS(stest genseed()iN(tgenseedii
ITIT(trandomRR_tRandomtrandintR>RE(RR`R_trngR@RA((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyttest_genseedsc
sWddlm}m}m}|sc|j|ddd|j|dd|jdn|j|t	dt	dt
t	d}|j|t	dt	d||j|dd|t	d}|j|t	dd||j|d	d||d
d}tr>|j|dn|j|t	d|jt
|dd|d d
}|j|d||j|d|ddlj}|j}	zdfd|_xLdddddgD]5|j|ddd|j|d|qWd|j|dddWd|	|_XdS(stest crypt.crypt() wrappersi(t	has_cryptt
safe_cryptt
test_cryptRtaas
aaqPiZY5xR5l.scrypt.crypt() not availables
aahWwbrUsKZk.s
test\u1234stestሴstests
aaOx.5nbTU/.MtRPNcsS(N((tsecretthash(tfake(s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyt<lambda>sRGt:s:0s*0txxx(RReRfRgR tNoneR\tskipTestR<RRRRKRLRtutilst_crypt(
RReRfRgth1th2Rkth1xtmodtorig((Rls</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyRgs>%%	csddlmm|jttdd|jttdd|jttdd|jtdtd|jtdd|jtdd|jtdtd|jtdd|jtdtd|jtddfd}xtdtdtdd	gD]}||r|j||d
|fn|jt|||j||d
|f|jd}|j||d
|fqNWxtdtdftd
tdftd
tdftd
tdftdd	d tdtdd	ftdtdftdtdftdtdftdtdfg	D]C\}}||r3||r3|j	||d||f|j	||d||fn,|jt|||jt|||j	||d||f|j	||d||f|jd}|jd}|j	||d||f|j	||d||fqWdS(stest consteq()i(tconsteqtstr_consteqRGicskptpt|S(N(RR(R6(RyRz(s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pytconsteq_supports_stringsR@RFsi
s	value %r:slatin-1RItabcabctzbaabctabzabctabcabzstabcdeftdefabctqwertyuiopasdfghjklzxcvbnms
values %r %r:N(
RRyRzRKt	TypeErrorRRpRtencodeR\(RR{R6tltr((RyRzs</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyttest_consteqsX		# $%#&###cCsk|jddlm}|jt|d)|jt|d|jt|d|j|tdtd|j|tdtd|j|tdtd|j|tdtd	|j|td
td|j|tdtd|jt|td|jt|td
|jt|td|jt|td|jt|td|jt|td|jt|td|jt|td|jt|td|jt|td|jt|td|jt|td|jt|td|jt|td|jt|td|j|tdtd|j|tdtd|j|tdtd|jt|td|jt|td|j|td td |j|td!td"|j|td#td#|j|td$td$|j|td%td&|j|td'td"|jt|td(|jt|td|jt|td|j|tdtdd)S(*s"test saslprep() unicode normalizeri(tsaslprepiRGs\u00ADs$\u00AD$\u200D$s$$$s$ $\u00A0$\u3000$s$ $ $ $sa\u0300s\u00E0s\u0000s\u007Fs\u180Es\uFFF9s\uE000s\uFDD0s\uD800s\uFFFDs\u2FF0s\u200Es\u206Fs\u0900s\uFFF8s
\U000e0001s\u0627\u0031s\u0627s\u0627\u0628s\u0627\u0031\u0628s\u0627\u0041\u0628sx\u0627zsx\u0041zsI\u00ADXtIXtusertUSERs\u00AAR@s\u2168s\u0007N(	trequire_stringprepRRRKRRpR RRL(Rtsp((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyt
test_saslprepHsR
"""""""""""""""cCsddlm}|j|dg|j|dg|j|ddg|j|ddg|j|dddg|j|d	ddgdS(
Ni(t
splitcommaRGt,R@s a , s a , bRAs a, b, (RRR (RR((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyttest_splitcommas(RRR.RR&R2R8RBRRRRWR^RdRgRRR(((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyR
s		
			)				9	f	Ot	CodecTestcBsDeZdZdZdZdZdZdZdZRS(s,tests bytes/unicode helpers in passlib.utilscCstr(ddl}|jt|jnddl}|jt|j|jdt|jdttr|jdjddn|jdddS(s*test b() helper, bytes and native str typeiNRGtslatin-1(	RtbuiltinsR"R=t__builtin__tstrR<R RO(RR((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyt
test_bytesscCs*ddlm}|j|tdd|j|tdd|j|tddd|jt|tdd|j|dd|j|dd|j|dd|j|ddd|j|dddd	d|jt|dd
|jt|d
d
S(stest to_bytes()i(tto_bytesRFRtÿslatin-1RJRGsutf-8N(	RRR RRKRLtAssertionErrorRpR(RR((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyt
test_to_bytesscCsddlm}|j|tdtd|j|tdtd|j|tddtd|j|dtd|j|dtd|j|ddtd|jt|d|jt|dd|jt|ddS(	stest to_unicode()i(t
to_unicodeRFRRJRslatin-1N(	RRR RRKRLRRpR(RR((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyttest_to_unicodes""%
cCs]ddlm}|j|tddd|j|dddtr|j|tddd|jt|ddn5|jt|tdd|j|ddd|j|tddd|j|ddd|j|tddtrdnd|j|ddtr<dnd|jt|d	dd	S(
stest to_native_str()i(t
to_native_strRFRJssàslatin-1sutf-8N(
RRR RRRKtUnicodeDecodeErrortUnicodeEncodeErrorRRp(RR((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyttest_to_native_strs"
cCslddlm}|j|d|j|td|j|d|j|tddS(stest is_ascii_safe()i(RtabctabcN(RRRRR\(RR((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyttest_is_ascii_safes
cCsddlm}|j|dd|j|dd|j|dd|j|dd|j|dd|j|dd|j|dd|j|dddS(	stest is_same_codec()i(t
is_same_codecRJtASCIIsutf-8tutf8tUTF_8N(RRRRpR\(RR((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyttest_is_same_codecs(	RRR.RRRRRR(((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyRs					tBase64EngineTestcBs;eZdZdZdZdZdZdZRS(s%test standalone parts of Base64EnginecCs_ddlm}m}|jt|d|jt||d |jt||d ddS(Ni(tBase64Enginet
AB64_CHARSitA(tpasslib.utils.binaryRRRKRRL(RRR((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyttest_constructor'scCseddlm}|j|dtd|j|tdtd|jt|td|jt|d|jt|d|jt|td|j|dtd|jt|d	|j|d
td|j|dtd|j|d
td|j|dtd|j|dtddS(s
ab64_decode()i(tab64_decodeRFt69b7sabsab!tabcdt69b71dtabcdeRt69b71d79tabcdeQtabcdefgt
69b71d79f8sab+/t69bfbfsab./N(RRR RRRKRLR(RR((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyttest_ab64_decode3s"cCsddlm}|j|tdd|jtr>tnt|tdjd|j|tdd|j|tdd	|j|td
d|j|tdd
dS(s
ab64_encode()i(tab64_encodeRRFslatin-1RRRRRRRsab./N(	RRR RRKRRRRO(RR((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyttest_ab64_encodeOscCs-ddlm}|j|dtd|j|tdtd|jt|td|jt|d|jt|d|jt|td|j|dtd|jt|d	|j|d
td|j|dtd|j|d
tddS(s
b64s_decode()i(tb64s_decodeRFRsabsab!RRRRRRRRN(RRR RRRKRLR(RR((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyttest_b64s_decodebs"cCsddlm}|j|tdd|jtr>tnt|tdjd|j|tdd|j|tdd	|j|td
d|j|tdd
dS(s
b64s_encode()i(tb64s_encodeRRFslatin-1RRRRRRRsab+/N(	RRR RRKRRRRO(RR((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyttest_b64s_encodeys(RRR.RRRRR(((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyR#s				t_Base64TestcBs
eZdZdZdZdZdZdZdZ	dZ
dZdZdZ
dZd	Zd
ddd
dgfddd
ddgfgZddddd
gfgZdZdZdZdZdZdZdZdZdZRS(s+common tests for all Base64Engine instancest?cstfd|DS(s!generate byte string from offsetsc3s&|]}jj||d!VqdS(iN(tenginetbytemap(t.0to(R(s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pys	<genexpr>s(R(Rtoffsets((Rs</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pytmscCsV|j}|j}x=|jD]2\}}||}|j||d|fqWdS(s,test encode_bytes() against reference inputss
encode %r:N(Rtencode_bytestencoded_dataR (RRRtrawtencodedtresult((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyttest_encode_bytess
		cCsB|j}|j}|jt|td|jt|ddS(s"test encode_bytes() with bad inputRiN(RRRKRRRp(RRR((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyttest_encode_bytes_bads		cCsV|j}|j}x=|jD]2\}}||}|j||d|fqWdS(s,test decode_bytes() against reference inputss
decode %r:N(Rtdecode_bytesRR (RRRORRR((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyttest_decode_bytess
		cCstrdnt}|j}|j}|j}d}|j||dd|xtddD]}|jr|dkr|n|d|d>}n&|dkr|d|d>n|}|j||dd|>|d|qeW|j||ddd|dxtddD]}|jr_|dkrH|n|d|d>}n&|dkr|d|d>n|}|j||ddd|>||d	|q'Wd
S(s(test decode_bytes() ignores padding bitscSs
t|gS(N(R=(tv((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyRmsRiiiiiis
%d/4 bits:s
%d/2 bits:N(RtchrRRRR trangetbig(RtbchrRRROtBNULLtitcorrect((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyttest_decode_bytes_paddings$				)&.&	)&&cCs|j}|j}|jt||jd |j|j|jk|jt||jd|jt||jd |jt|ddS(s"test decode_bytes() with bad inputiiN(
RRRKRLRRtbad_byteRtcharmapRp(RRRO((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyttest_decode_bytes_bads		c
Cs|j}ddlm}m}|j}t}xhtdD]Z}|j|rVdndd}|sqt}nd|dd	}|||}	|j	|	}
|j
t|
||j|
}|j
||	|ddkr||j
dddg7}nd	|d}|||j|}
|j|
}	|j
t|	|d
||j	|	}|dr|j
|d |
d q>|j
||
q>WdS(s2test encode_bytes/decode_bytes against random datai(R9RDiiiiiiisencoded %d:N(RRR9RDR:tFalseRRbtTrueRR R;RtchoiceR(
RRR9RDRctsaw_zeroRtsizetenc_sizeRRRtraw_size((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyt
test_codecs0		
cCs}ddlm}|j}|j}|jj}d}x?|dkrx|jdd}|||j|jd}|d@dkr|jt	||q:n|j
|j|}|jd	kr|j
d}|j
d}n||kr(||\}	}
|j|	|j|
|nC|j|d
d||\}	}
|j|	|j|
||d7}q:WdS(stest repair_unused()i(RDii,iRJiig?iN(RRDR:Rtcheck_repair_unusedRbRRRKRLRRR`ROR\R R>R(RRDRcRRRRtcdatatrdatatokR((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyttest_repair_unuseds0	

s3"s"3iiis"3s"cCs|j}xR|j|jD]@\}}}|j||}|j|}|j||qW|jt|jtdgdS(stest encode_transposed_bytes()R@N(	Rt
transposedttransposed_dupstencode_transposed_bytesRR RKRR(RRRtinputRttmptout((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyttest_encode_transposed_bytesNs	 cCs[|j}xK|jD]@\}}}|j|}|j||}|j||qWdS(stest decode_transposed_bytes()N(RRRtdecode_transposed_bytesR (RRRRRRR((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyttest_decode_transposed_bytesXs
	cCsR|j}xB|jD]7\}}}|j|}|jt|j||qWdS(s8test decode_transposed_bytes() fails if map is a one-wayN(RRRRKRR(RRRt_RR((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyt test_decode_transposed_bytes_bad`s
	cCs|j}|j}t|d|}t|d|}|d}||d}d|>}	x@|D]8\}
}||
}|j|t|j||qeW|jt|d|jt||	x4|D],\}
}|j|||
d|fqW|j}
|jt||
d|d|jt||
d|d|jt||j	||jt
||jd|jt
|dddl
m}xtd	D]}|jd|	d}
||
}|jt|||j|||
|||j|}||}
|j|
dd
||j|
|	d
|||
}|r}|j|d |d q|j||qWdS(
s5helper to check encode_intXX & decode_intXX functionssencode_int%ssdecode_int%siiisencoded %r:i(RDidsdecode %r out of bounds:iN(R:RtgetattrR<R=R RKRLRRRRRpRRDRRbR;RtassertGreaterEqualt
assertLess(Rtbitst
encoded_pairsRcRRROtpadtcharstupperR6RRRRDR((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pytcheck_int_pairksF	
$	!!cCsD|j}|j}|jdd|dfd|dfgdS(Niii?(RRR(RRR((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyt	test_int6s		cCst|j}|j}|jdd|ddfd|jrH|ddn|ddfd|ddfgdS(Niii?i(RRRR(RRR((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyt
test_int12s		c
Cs|j}|j}|jdd|ddddfd|jrT|ddddn|ddddfd|ddddfgdS(Niii?i(RRRR(RRR((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyt
test_int24s
		!6cCs|j}|j}|jdd|dddddddddddfd|jr~|dddddddddddn'|dddddddddddfd	|jr|dddddddddddn'|dddddddddddfgdS(
Ni@ii?ii<iill(RRRR(RRR((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyt
test_int64s		66*6cCs|js|jdn|j}xl|jD]a\}}}t|d|}t|d|}|j||||j|||q.WdS(s(test against reference integer encodingssnone defined for classsencode_int%dsdecode_int%dN(tencoded_intst	skipTestsRRR (RRtdataR6RRRO((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyttest_encoded_intss		N(RRR.RpRRRRRRRRRRRRRRRRRRRRRRR(((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyRs2			
				/	(	
			0				(th64th64bigtH64_Testc
BsGeZdZeZdZddddddddd g	Zd!d"gZRS(#stest H64 codec functionss	h64 codecRGtUsJ/sUtJd8sUUtJdOJsUUtJdOJe0sUUUtJdOJeK3sUUUtJdOJeKZesUUtJdOJj0sUU_tJdOJey3sz.i?is.zi(RGRG(sUsJ/(sUR(sUUR(sUUR
(sUUUR(sUUUR(sUUR(sUU_R(sz.i?i(s.zii(RRR.RRtdescriptionPrefixRR(((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyR	s	tH64Big_Testc
BsGeZdZeZdZddddddddd g	Zd!d"gZRS(#stest H64Big codec functionssh64big codecRGR
tJEsUtJOcsUUtJOdJsUUtJOdJeUsUUUtJOdJeZIsUUUtJOdJeZKesUUtJOdJfksUU_tJOdJeZws.zi?isz.i(RGRG(sUR(sUR(sUUR(sUUR(sUUUR(sUUUR(sUUR(sUU_R(s.zi?i(sz.ii(RRR.RRRRR(((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyRs	(R.t
__future__Rt	functoolsRRURRtpasslib.utils.compatRRRRRRR	tpasslib.tests.utilsR
RRR
RRRRRRR	R(((s</usr/lib/python2.7/site-packages/passlib/tests/test_utils.pyt<module>s4i>
Back to Directory File Manager