Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
PyJWT / tests / test_api.pyc
Size: Mime:
ó
]	Uc@sKddlZddlZddlmZddlmZmZddlmZddlm	Z	ddl
mZddlm
Z
mZmZmZmZdd	lmZmZdd
lmZy6ddlmZddlmZmZmZeZWnek
re ZnXd
„Z!dej"fd„ƒYZ#e$dkrGej%ƒndS(iÿÿÿÿN(ttimegm(tdatetimet	timedelta(tDecimal(t	Algorithm(tPyJWT(tDecodeErrortExpiredSignatureErrortInvalidAlgorithmErrortInvalidAudienceErrortInvalidIssuerErrori(t	text_typetunittest(tensure_bytes(tdefault_backend(tload_pem_private_keytload_pem_public_keytload_ssh_public_keycCsttjƒjƒƒS(N(RRtutcnowtutctimetuple(((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt
utc_timestampstTestAPIcBs×eZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z	d„Z
d	„Zd
„Zd„Z
d„Zd
„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zejedƒd„ƒZejedƒd„ƒZd„Zd„Zd„Zd„Zd„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+„Z/d,„Z0d-„Z1d.„Z2ejed/ƒd0„ƒZ3ejed/ƒd1„ƒZ4ejed/ƒd2„ƒZ5d3„Z6ejedƒd4„ƒZ7ejedƒd5„ƒZ8ejedƒd6„ƒZ9d7„Z:d8„Z;d9„Z<d:„Z=d;„Z>d<„Z?d=„Z@d>„ZAd?„ZBd@„ZCRS(AcCs5idd6tƒdd6dd6|_tƒ|_dS(Ntjefftissitexptinsanitytclaim(RtpayloadRtjwt(tself((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pytsetUp$s
cCsF|jjdtƒƒ|jtƒ|jjdtƒƒWdQXdS(NtAAA(Rtregister_algorithmRtassertRaisest
ValueError(R((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt=test_register_algorithm_does_not_allow_duplicate_registration)scCs-|jtƒ|jjdiƒWdQXdS(NtAAA123(R!t	TypeErrorRR (R((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt1test_register_algorithm_rejects_non_algorithm_obj/scCsb|jjƒ}|jd|ƒ|jd|ƒ|jjdƒ|jjƒ}|jd|ƒdS(NtnonetHS256(Rtget_algorithmstassertIntunregister_algorithmtassertNotIn(Rt	supported((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt+test_unregister_algorithm_removes_algorithm3scCs*|jtƒ|jjdƒWdQXdS(NR(R!tKeyErrorRR+(R((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt8test_unregister_algorithm_throws_error_if_not_registered=scCs}|jd|jjƒƒ|jd|jjƒƒtddgƒ|_|jd|jjƒƒ|jd|jjƒƒdS(NR'R(t
algorithms(R*RR)RR,(R((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt:test_algorithms_parameter_removes_alg_from_algorithms_listAs
cCsJd}|jj|j|ƒ}|jj||ƒ}|j||jƒdS(Ntsecret(RtencodeRtdecodetassertEqual(RR3tjwt_messagetdecoded_payload((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyttest_encode_decodeIsc	Csmd}|jj|j|ddƒ}|jj||ƒ|jtƒ!|jj||ddgƒWdQXdS(NR3t	algorithmR(R1tHS384(RR4RR5R!R(RR3t	jwt_token((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt<test_decode_fails_when_alg_is_not_on_method_algorithms_paramPs
cCs)d}tdƒ}|jj||ƒdS(NR3smeyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.eyJoZWxsbyI6ICJ3b3JsZCJ9.tvagLDLoaiJKxOKqpBXSEGy7SYSifZhjntgm9ctpyj8(RRR5(RR3tunicode_jwt((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt$test_decode_works_with_unicode_tokenXs	cCsZd}d}|jtƒ}|jj||ƒWdQX|j}|jt|ƒdƒdS(NR3sAeyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.eyJoZWxsbyI6ICJ3b3JsZCJ9sNot enough segments(R!RRR5t	exceptionR6tstr(RR3texample_jwttcontextR@((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt-test_decode_missing_segments_throws_exceptionas	cCsZd}d}|jtƒ}|jj||ƒWdQX|j}|jt|ƒdƒdS(NR3sGMQ.eyJoZWxsbyI6ICJ3b3JsZCJ9.tvagLDLoaiJKxOKqpBXSEGy7SYSifZhjntgm9ctpyj8s,Invalid header string: must be a json object(R!RRR5R@R6RA(RR3RBRCR@((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt4test_decode_with_non_mapping_header_throws_exceptionms	cCsZd}d}|jtƒ}|jj||ƒWdQX|j}|jt|ƒdƒdS(NR3sWeyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.MQ.tvagLDLoaiJKxOKqpBXSEGy7SYSifZhjntgm9ctpyj8s-Invalid payload string: must be a json object(R!RRR5R@R6RA(RR3RBRCR@((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt5test_decode_with_non_mapping_payload_throws_exceptionys	c	Cs`d}d}|jtƒ }|jj||ddƒWdQX|j}|jt|ƒdƒdS(NR3smeyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.eyJoZWxsbyI6ICJ3b3JsZCJ9.tvagLDLoaiJKxOKqpBXSEGy7SYSifZhjntgm9ctpyj8taudienceis!audience must be a string or None(R!R%RR5R@R6RA(RR3RBRCR@((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt8test_decode_with_invalid_audience_param_throws_exception…s	c	Cs`d}d}|jtƒ }|jj||ddƒWdQX|j}|jt|ƒdƒdS(NR3sseyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJoZWxsbyI6IndvcmxkIiwiYXVkIjoxfQ.Rof08LBSwbm8Z_bhA2N3DFY-utZR1Gi9rbIS5ZthnncRGtmy_audiencesInvalid claim format in token(R!R	RR5R@R6RA(RR3RBRCR@((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt3test_decode_with_nonlist_aud_claim_throws_exception‘s	c	Cs`d}d}|jtƒ }|jj||ddƒWdQX|j}|jt|ƒdƒdS(NR3sueyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJoZWxsbyI6IndvcmxkIiwiYXVkIjpbMV19.iQgKpJ8shetwNMIosNXWBPFB057c2BHs-8t1d2CCM2ARGRIsInvalid claim format in token(R!R	RR5R@R6RA(RR3RBRCR@((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt9test_decode_with_invalid_aud_list_member_throws_exceptions	csOdtƒtƒdtƒg}x*|D]"‰ˆjt‡‡fd†ƒq%WdS(Ntstringi*csˆjjˆdƒS(NR3(RR4((Rtt(s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt<lambda>®s(ttupletlisttsetR!R%(Rttypes((RRMs9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyttest_encode_bad_type©s
c	Cszidd6}|jj|dddƒ|jtƒ }|jj|dddƒWdQX|j}|jt|ƒdƒdS(NtworldthelloR3R:R(ths256sAlgorithm not supported(RR4R!tNotImplementedErrortNoneR@tassertEqualsRA(RRRCR@((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt4test_encode_algorithm_param_should_be_case_sensitive°s
	cCsTd}|jtƒ}|jj|dƒWdQX|j}|jt|ƒdƒdS(NsheyJhbGciOiJoczI1NiIsInR5cCI6IkpXVCJ9.eyJoZWxsbyI6IndvcmxkIn0.5R_FEPE7SW2dT9GgIxPgZATjFGXfUDOSwo7TtO_Kd_gR3sAlgorithm not supported(R!RRR5R@RYRA(RRBRCR@((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt4test_decode_algorithm_param_should_be_case_sensitive»s
	cCsÁd}tjƒ}i|d6|d6|d6}|jj||ƒ}|jj||ddƒ}|j|dt|jƒƒƒ|j|dt|jƒƒƒ|j|dt|jƒƒƒdS(NR3Rtiattnbftleewayi(RRRR4R5R6RR(RR3tcurrent_datetimeRR7R8((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyttest_encode_datetimeÆs"
csGd}d‰ˆjjˆj|ƒ‰ˆjt‡‡‡fd†ƒdS(NtfootbarcsˆjjˆˆƒS(N(RR5((t
bad_secretR7R(s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyRNâs(RR4RR!R(Rtright_secret((RcR7Rs9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyttest_bad_secretÛscCsBidd6}d}d}|jj||ƒ}|j||ƒdS(NRTRUR3smeyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.eyJoZWxsbyI6ICJ3b3JsZCJ9.tvagLDLoaiJKxOKqpBXSEGy7SYSifZhjntgm9ctpyj8(RR5R6(Rtexample_payloadtexample_secretRBR8((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyttest_decodes_valid_jwtäs

s&Can't run without cryptography librarycCs`idd6}tddƒ}|jƒ}WdQXd}|jj||ƒ}|j||ƒdS(NRTRUstests/keys/testkey_ec.pubtrsõeyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCJ9.eyJoZWxsbyI6IndvcmxkIn0.MIGHAkEdh2kR7IRu5w0tGuY6Xz3Vqa7PHHY2DgXWeeeLXotEqpn9udp2NfVL-XFG0TDoCakzXbIGAWg42S69GFlKZzxhXAJCAPLPuJoKyAixFnXPBkvkti-UzSIj4s6DePeuTu7102G_QIXiijY5bx6mdmZa3xUuKeu-zobOIOqR8ZwFqGjBLZum(topentreadRR5R6(RRftfptexample_pubkeyRBR8((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyttest_decodes_valid_es384_jwtós
cCs`idd6}tddƒ}|jƒ}WdQXd}|jj||ƒ}|j||ƒdS(NRTRUstests/keys/testkey_rsa.pubRis“eyJhbGciOiJSUzM4NCIsInR5cCI6IkpXVCJ9.eyJoZWxsbyI6IndvcmxkIn0.yNQ3nI9vEDs7lEh-Cp81McPuiQ4ZRv6FL4evTYYAh1XlRTTR3Cz8pPA9Stgso8Ra9xGB4X3rlra1c8Jz10nTUjuO06OMm7oXdrnxp1KIiAJDerWHkQ7l3dlizIk1bmMA457W2fNzNfHViuED5ISM081dgf_a71qBwJ_yShMMrSOfxDxmX9c4DjRogRJG8SM5PvpLqI_Cm9iQPGMvmYK7gzcq2cJurHRJDJHTqIdpLWXkY7zVikeen6FhuGyn060Dz9gYq9tuwmrtSWCBUjiN8sqJ00CDgycxKqHfUndZbEAOjcCAhBrqWW3mSVivUfubsYbwUdUG3fSRPjaUPcpe8A(RjRkRR5R6(RRfRlRmRBR8((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyttest_decodes_valid_rs384_jwts

cCsgidd6}d}d}|jj|ƒ\}}}}|jj|||||ƒ|j||ƒdS(NRTRUR3smeyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.eyJoZWxsbyI6ICJ3b3JsZCJ9.tvagLDLoaiJKxOKqpBXSEGy7SYSifZhjntgm9ctpyj8(Rt_loadt_verify_signatureR6(RRfRgRBR8tsigningtheadert	signature((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyttest_load_verify_valid_jwts

cCsMd}|jj|j|ƒ}|jj|dtƒ}|j||jƒdS(NRatverify(RR4RR5tFalseR6(RRdR7R8((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyttest_allow_skip_verification+scCsSd}|jj|j|ƒ}|jj|ƒ\}}}}|j||jƒdS(NRa(RR4RRpR6(RRdR7R8RrRsRt((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyttest_load_no_verification2scs>d}ˆjjˆj|ƒ‰ˆjt‡‡fd†ƒdS(NRacsˆjjˆƒS(N(RR5((R7R(s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyRN@s(RR4RR!R(RRd((R7Rs9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyttest_no_secret:s
csed}ˆjjˆj|ƒ}ˆjj|ƒ\‰‰‰‰ˆjt‡‡‡‡‡fd†ƒdS(NRacsˆjjˆˆˆˆƒS(N(RRq((R8RsRRtRr(s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyRNJs(RR4RRpR!R(RRdR7((R8RsRRtRrs9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyttest_verify_signature_no_secretBsc
Cs‹d}idd6dd6}|jj|j|d|ƒ}|jj|ƒ\}}}}x.|jƒD] \}}	|j|||	ƒqcWdS(NRaRbttesttkidtheaders(RR4RRptitemsR6(
RRdR~R7R8RrRsRttkeytvalue((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyttest_custom_headersMscCs&|jt|jj|jddƒdS(NR3tHS1024(R!RWRR4R(R((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyttest_invalid_crypto_algWscCs—d}|jj|j|ƒ}|jj||ƒ}|j||jƒ|jj|ƒ\}}}}|jj|||||ƒ|j||jƒdS(NsÂ(RR4RR5R6RpRq(RR3R7R8RrRsRt((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyttest_unicode_secret[s
cCs—d}|jj|j|ƒ}|jj||ƒ}|j||jƒ|jj|ƒ\}}}}|jj|||||ƒ|j||jƒdS(NsÂ(RR4RR5R6RpRq(RR3R7R8RrRsRt((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyttest_nonascii_secretis
cCs—d}|jj|j|ƒ}|jj||ƒ}|j||jƒ|jj|ƒ\}}}}|jj|||||ƒ|j||jƒdS(NsÂ(RR4RR5R6RpRq(RR3R7R8RrRsRt((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyttest_bytes_secretxs
cCspidd6}d}d}|jj||ƒ}|j||ƒ|jj|ƒ\}}}}|j||ƒdS(NRTRUR3smeyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.eyJoZWxsbyI6ICJ3b3JsZCJ9.tvagLDLoaiJKxOKqpBXSEGy7SYSifZhjntgm9ctpyj8(RR5R6Rp(RRfRgRBR8RrRsRt((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyttest_decode_unicode_value‡s
csKd‰d‰ˆjt‡‡fd†ƒˆjt‡‡‡fd†ƒdS(NsnaeyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.eyJoZWxsbyI6ICJ3b3JsZCJ9.tvagLDLoaiJKxOKqpBXSEGy7SYSifZhjntgm9ctpyj8R3csˆjjˆƒS(N(RRp((RBR(s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyRNscsˆjjˆˆƒS(N(RR5((RBRgR(s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyRN¡s(R!R(R((RBRgRs9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt"test_decode_invalid_header_padding”scCs³d}d}y|jj|ƒWn,tk
rN}|jdt|ƒkƒnX|jdƒy|jj||ƒWn,tk
r¡}|jdt|ƒkƒnX|jdƒdS(NsqeyJhbGciOiAiSFMyNTbpIiwgInR5cCI6ICJKV1QifQ==.eyJoZWxsbyI6ICJ3b3JsZCJ9.tvagLDLoaiJKxOKqpBXSEGy7SYSifZhjntgm9ctpyj8R3sInvalid header stringsDecodeError not raised(RRpRt
assertTrueRAtfailR5(RRBRgte((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt!test_decode_invalid_header_string£s
csKd‰d‰ˆjt‡‡fd†ƒˆjt‡‡‡fd†ƒdS(NsneyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.aeyJoZWxsbyI6ICJ3b3JsZCJ9.tvagLDLoaiJKxOKqpBXSEGy7SYSifZhjntgm9ctpyj8R3csˆjjˆƒS(N(RRp((RBR(s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyRNÁscsˆjjˆˆƒS(N(RR5((RBRgR(s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyRNÅs(R!R(R((RBRgRs9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt#test_decode_invalid_payload_padding¸scCs³d}d}y|jj|ƒWn,tk
rN}|jdt|ƒkƒnX|jdƒy|jj||ƒWn,tk
r¡}|jdt|ƒkƒnX|jdƒdS(NsqeyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.eyJoZWxsb-kiOiAid29ybGQifQ==.tvagLDLoaiJKxOKqpBXSEGy7SYSifZhjntgm9ctpyj8R3sInvalid payload stringsDecodeError not raised(RRpRRŠRAR‹R5(RRBRgRŒ((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt"test_decode_invalid_payload_stringÇs
csKd‰d‰ˆjt‡‡fd†ƒˆjt‡‡‡fd†ƒdS(NsoeyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.eyJoZWxsbyI6ICJ3b3JsZCJ9.aatvagLDLoaiJKxOKqpBXSEGy7SYSifZhjntgm9ctpyj8R3csˆjjˆƒS(N(RRp((RBR(s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyRNåscsˆjjˆˆƒS(N(RR5((RBRgR(s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyRNés(R!R(R((RBRgRs9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt"test_decode_invalid_crypto_paddingÜscs›tƒdˆjd<d‰ˆjjˆjˆƒ‰ˆjt‡‡‡fd†ƒˆjjˆƒ\‰‰‰‰ˆjt‡‡‡‡‡‡fd†ƒdS(NiRR3csˆjjˆˆƒS(N(RR5((R7R3R(s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyRNòscsˆjjˆˆˆˆˆƒS(N(RRq((R8RsR3RRtRr(s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyRNøs	(RRRR4R!RRp(R((R8RsR7R3RRtRrs9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyttest_decode_with_expirationëscs›tƒdˆjd<d‰ˆjjˆjˆƒ‰ˆjt‡‡‡fd†ƒˆjjˆƒ\‰‰‰‰ˆjt‡‡‡‡‡‡fd†ƒdS(Ni
R]R3csˆjjˆˆƒS(N(RR5((R7R3R(s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyRNscsˆjjˆˆˆˆˆƒS(N(RRq((R8RsR3RRtRr(s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyRNs	(RRRR4R!RRp(R((R8RsR7R3RRtRrs9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyttest_decode_with_notbeforeûscCs’tjƒd|jd<d}|jj|j|ƒ}|jj||dtƒ|jj|ƒ\}}}}|jj|||||dtƒdS(NiRR3tverify_expiration(ttimeRRR4R5RwRpRq(RR3R7R8RrRsRt((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt(test_decode_skip_expiration_verificationscCs’tjƒd|jd<d}|jj|j|ƒ}|jj||dtƒ|jj|ƒ\}}}}|jj|||||dtƒdS(Ni
R]R3R“(R”RRR4R5RwRpRq(RR3R7R8RrRsRt((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt'test_decode_skip_notbefore_verificationsc
stƒdˆjd<d‰ˆjjˆjˆƒ‰ˆjjˆƒ\‰‰‰‰xXdtddƒfD]A‰ˆjjˆˆdˆƒˆjjˆˆˆˆˆdˆƒqfWxjdtddƒfD]S‰ˆjt	‡‡‡‡fd†ƒˆjt	‡‡‡‡‡‡‡fd	†ƒqÁWdS(
NiRR3itsecondsR^icsˆjjˆˆdˆƒS(NR^(RR5((R7R^R3R(s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyRN3scs"ˆjjˆˆˆˆˆdˆƒS(NR^(RRq((R8RsR^R3RRtRr(s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyRN7s(
RRRR4RpRR5RqR!R(R((R8RsR7R^R3RRtRrs9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt'test_decode_with_expiration_with_leeway!scsÖtƒdˆjd<d‰ˆjjˆjˆƒ‰ˆjjˆƒ\‰‰‰‰ˆjjˆˆddƒˆjjˆˆˆˆˆddƒˆjt‡‡‡fd†ƒˆjt‡‡‡‡‡‡fd†ƒdS(Ni
R]R3R^i
csˆjjˆˆddƒS(NR^i(RR5((R7R3R(s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyRNKscs"ˆjjˆˆˆˆˆddƒS(NR^i(RRq((R8RsR3RRtRr(s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyRNOs(	RRRR4RpR5RqR!R(R((R8RsR7R3RRtRrs9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt&test_decode_with_notbefore_with_leeway;scsWˆjjˆjddddƒ‰ˆjt‡‡fd†ƒˆjjˆdtƒdS(NR€R:csˆjjˆƒS(N(RR5((R7R(s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyRNWsRv(RR4RRXR!RR5Rw(R((R7Rs9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt!test_encode_decode_with_algo_noneRs
!s*Not supported without cryptography librarycCs†tddƒL}tt|jƒƒdddtƒƒ}|jj|j|ddƒ}WdQXtddƒk}t	t|jƒƒdtƒƒ}|jj
||ƒs«t‚|jj|ƒ}|jj
d||ŒWdQXtddƒ1}|jƒ}|jj|j|ddƒ}WdQXtddƒV}|jƒ}|jj
||ƒsTt‚|jj|ƒ}|jj
d||ŒWdQXdS(	Nstests/keys/testkey_rsaRitpasswordtbackendR:tRS256stests/keys/testkey_rsa.pubR€(RjRR
RkRXRRR4RRR5tAssertionErrorRpRq(Rt
rsa_priv_filetpriv_rsakeyR7trsa_pub_filet
pub_rsakeytload_output((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt"test_encode_decode_with_rsa_sha256[s(cCs^tddƒL}tt|jƒƒdddtƒƒ}|jj|j|ddƒ}WdQXtddƒC}t	t|jƒƒdtƒƒ}|jj
||ƒs«t‚WdQXtddƒ1}|jƒ}|jj|j|ddƒ}WdQXtddƒV}|jƒ}|jj
||ƒs,t‚|jj|ƒ}|jj
d||ŒWdQXdS(	Nstests/keys/testkey_rsaRiR›RœR:tRS384stests/keys/testkey_rsa.pubR€(RjRR
RkRXRRR4RRR5RžRpRq(RRŸR R7R¡R¢R£((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt"test_encode_decode_with_rsa_sha384ys$!cCs†tddƒL}tt|jƒƒdddtƒƒ}|jj|j|ddƒ}WdQXtddƒk}t	t|jƒƒdtƒƒ}|jj
||ƒs«t‚|jj|ƒ}|jj
d||ŒWdQXtddƒ1}|jƒ}|jj|j|ddƒ}WdQXtddƒV}|jƒ}|jj
||ƒsTt‚|jj|ƒ}|jj
d||ŒWdQXdS(	Nstests/keys/testkey_rsaRiR›RœR:tRS512stests/keys/testkey_rsa.pubR€(RjRR
RkRXRRR4RRR5RžRpRq(RRŸR R7R¡R¢R£((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt"test_encode_decode_with_rsa_sha512”s(cCsštƒ|_|jjƒ}tr]|jd|kƒ|jd|kƒ|jd|kƒn9|jd|kƒ|jd|kƒ|jd|kƒdS(NRR¥R§(RRR)t
has_cryptoRŠtassertFalse(Rtjwt_algorithms((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyttest_rsa_related_algorithms²scCs†tddƒL}tt|jƒƒdddtƒƒ}|jj|j|ddƒ}WdQXtddƒk}t	t|jƒƒdtƒƒ}|jj
||ƒs«t‚|jj|ƒ}|jj
d||ŒWdQXtddƒ1}|jƒ}|jj|j|ddƒ}WdQXtddƒV}|jƒ}|jj
||ƒsTt‚|jj|ƒ}|jj
d||ŒWdQXdS(	Nstests/keys/testkey_ecRiR›RœR:tES256stests/keys/testkey_ec.pubR€(RjRR
RkRXRRR4RRR5RžRpRq(Rtec_priv_filet
priv_eckeyR7tec_pub_filet	pub_eckeyR£((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt$test_encode_decode_with_ecdsa_sha256¿s(cCs†tddƒL}tt|jƒƒdddtƒƒ}|jj|j|ddƒ}WdQXtddƒk}t	t|jƒƒdtƒƒ}|jj
||ƒs«t‚|jj|ƒ}|jj
d||ŒWdQXtddƒ1}|jƒ}|jj|j|ddƒ}WdQXtddƒV}|jƒ}|jj
||ƒsTt‚|jj|ƒ}|jj
d||ŒWdQXdS(	Nstests/keys/testkey_ecRiR›RœR:tES384stests/keys/testkey_ec.pubR€(RjRR
RkRXRRR4RRR5RžRpRq(RR®R¯R7R°R±R£((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt$test_encode_decode_with_ecdsa_sha384Ýs(cCs†tddƒL}tt|jƒƒdddtƒƒ}|jj|j|ddƒ}WdQXtddƒk}t	t|jƒƒdtƒƒ}|jj
||ƒs«t‚|jj|ƒ}|jj
d||ŒWdQXtddƒ1}|jƒ}|jj|j|ddƒ}WdQXtddƒV}|jƒ}|jj
||ƒsTt‚|jj|ƒ}|jj
d||ŒWdQXdS(	Nstests/keys/testkey_ecRiR›RœR:tES512stests/keys/testkey_ec.pubR€(RjRR
RkRXRRR4RRR5RžRpRq(RR®R¯R7R°R±R£((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt$test_encode_decode_with_ecdsa_sha512üs&!cCsštƒ|_|jjƒ}tr]|jd|kƒ|jd|kƒ|jd|kƒn9|jd|kƒ|jd|kƒ|jd|kƒdS(NR­R³Rµ(RRR)R©RŠRª(RR«((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyttest_ecdsa_related_algorithmsscCsXidd6dd6}|jj|dƒ}|jj|dddƒ}|j||ƒdS(NRtsomesurn:metaudR3RG(RR4R5R6(RRttokentdecoded((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyttest_check_audience&s
cCs^idd6ddgd6}|jj|dƒ}|jj|dddƒ}|j||ƒdS(NRR¸surn:mesurn:someone-elseR¹R3RG(RR4R5R6(RRRºR»((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyttest_check_audience_in_array/scsIidd6dd6}ˆjj|dƒ‰ˆjt‡‡fd†ƒdS(NRR¸surn:someone-elseR¹R3csˆjjˆdddƒS(NR3RGsurn-me(RR5((RRº(s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyRN@s(RR4R!R	(RR((RRºs9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt%test_raise_exception_invalid_audience8s
csOidd6ddgd6}ˆjj|dƒ‰ˆjt‡‡fd†ƒdS(NRR¸surn:someonesurn:someone-elseR¹R3csˆjjˆdddƒS(NR3RGsurn:me(RR5((RRº(s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyRNJs(RR4R!R	(RR((RRºs9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt.test_raise_exception_invalid_audience_in_arrayBscsBidd6}ˆjj|dƒ‰ˆjt‡‡fd†ƒdS(NRR¸R3csˆjjˆdddƒS(NR3RGsurn:me(RR5((RRº(s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyRNSs(RR4R!R	(RR((RRºs9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt+test_raise_exception_token_without_audienceLs
cCs^d}idd6dd6}|jj|dƒ}|jj|dd|ƒ}|j||ƒdS(Nsurn:fooRR¸RR3tissuer(RR4R5R6(RRÁRRºR»((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyttest_check_issuerUs
csRd‰idd6dd6}ˆjj|dƒ‰ˆjt‡‡‡fd†ƒdS(Ns	urn:wrongRR¸surn:fooRR3csˆjjˆddˆƒS(NR3RÁ(RR5((RÁRRº(s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyRNls(RR4R!R
(RR((RÁRRºs9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt#test_raise_exception_invalid_issuer`s
csKd‰idd6}ˆjj|dƒ‰ˆjt‡‡‡fd†ƒdS(Ns	urn:wrongRR¸R3csˆjjˆddˆƒS(NR3RÁ(RR5((RÁRRº(s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyRNys(RR4R!R
(RR((RÁRRºs9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt)test_raise_exception_token_without_issuerns
cs™dtjf‡fd†ƒY‰itdƒd6‰ˆjt‡‡fd†ƒˆjjˆddˆƒ}ˆjj|dƒ}ˆj|idd6ƒdS(	NtCustomJSONEncodercseZ‡fd†ZRS(cs)t|tƒrdStˆ|ƒj|ƒS(Ns	it worked(t
isinstanceRtsupertdefault(Rto(RÅ(s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyRÈs(t__name__t
__module__RÈ((RÅ(s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyRÅ}ss2.2tsome_decimalcsˆjjˆdƒS(NR3(RR4((tdataR(s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyRNŠsR3tjson_encoders	it worked(	tjsontJSONEncoderRR!R%RR4R5R6(RRºR((RÅRÍRs9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyttest_custom_json_encoder{s(DRÊRËRR#R&R.R0R2R9R=R?RDRERFRHRJRKRSRZR[R`ReRhRtskipIfR©RnRoRuRxRyRzR{R‚R„R…R†R‡RˆR‰RRŽRRR‘R’R•R–R˜R™RšR¤R¦R¨R¬R²R´R¶R·R¼R½R¾R¿RÀRÂRÃRÄRÑ(((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyR"s~				
																									
					
														
	
					
	
					
t__main__(&RÏR”tcalendarRRRtdecimalRtjwt.algorithmsRtjwt.apiRtjwt.exceptionsRRRR	R
tcompatRRtutilsR
tcryptography.hazmat.backendsRt,cryptography.hazmat.primitives.serializationRRRtTrueR©tImportErrorRwRtTestCaseRRÊtmain(((s9/Users/jpadilla/Projects/Personal/pyjwt/tests/test_api.pyt<module>s,(


	ÿÿÿr