a 5êdgÒJã@srddlZddlmZmZddlZddlmZddlZGdd„dejƒZ Gdd„dejƒZ dd „Z e d krne ƒdS) éN)Ú run_unittestÚ run_doctest)Úcookiesc@s„eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„ZdS) Ú CookieTestsc CsÞddddœdddœdd d id d dœd d didddœdddidddœddddddœdd d¡dœg}|D]r}t ¡}| |d¡| t|ƒ|d ¡| |jdd!|d"¡t|d# ¡ƒD]\}}| ||j |¡q¼qfdS)$Nzchips=ahoy; vienna=fingerZahoyZfinger)ZchipsZviennaz,z0Set-Cookie: chips=ahoy Set-Cookie: vienna=finger)ÚdataÚdictÚreprÚoutputz)keebler="E=mc2; L=\"Loves\"; fudge=\012;"ZkeeblerzE=mc2; L="Loves"; fudge= ;z5z5Set-Cookie: keebler="E=mc2; L=\"Loves\"; fudge=\012;"z keebler=E=mc2zE=mc2zzSet-Cookie: keebler=E=mc2zkey:term=value:termzkey:termz value:termz%zSet-Cookie: key:term=value:termza=b; c=[; d=r; f=hÚbú[ÚrÚh)ÚaÚcÚdÚfz'Ú )zSet-Cookie: a=bzSet-Cookie: c=[zSet-Cookie: d=rzSet-Cookie: f=hrr)Úsepr r) ÚjoinrÚ SimpleCookieÚloadÚ assertEqualrr ÚsortedÚitemsÚvalue)ÚselfÚcasesZcaseÚCÚkÚv©r ú2/usr/local/lib/python3.9/test/test_http_cookies.pyÚ test_basic sBýýýý üå(zCookieTests.test_basiccCsˆt ¡}| d¡| |djd¡| |ddd¡| |ddd¡| | dg¡d¡| | ¡d ¡| | dg¡d ¡dS) Nz/Customer="WILE_E_COYOTE"; Version=1; Path=/acmeÚCustomerÚ WILE_E_COYOTEÚversionÚ1Úpathú/acmeú0Set-Cookie: Customer="WILE_E_COYOTE"; Path=/acmeúÆ ú» ©rrrrrr Ú js_output©rrr r r!Ú test_load=s ÿzCookieTests.test_loadcCs(t ¡}d|d<| | dg¡d¡dS)Nzsome,funky;stuffÚvalz(Set-Cookie: val="some\054funky\073stuff"©rrrr r.r r r!Útest_extended_encodeVs ÿz CookieTests.test_extended_encodecCs t d¡}d|dd<| | ¡ d¡¡t ¡}| d¡| |ddd¡t ¡}| d¡| |ddd ¡t d¡}d |dd <| | ¡d ¡dS) NúCustomer="WILE_E_COYOTE"rr#ÚexpiresZGMTz3Customer="W"; expires=Wed, 01 Jan 2010 00:00:00 GMTzWed, 01 Jan 2010 00:00:00 GMTz1Customer="W"; expires=Wed, 01 Jan 98 00:00:00 GMTzWed, 01 Jan 98 00:00:00 GMTé úmax-agez0Set-Cookie: Customer="WILE_E_COYOTE"; Max-Age=10)rrÚ assertTruer Úendswithrrr.r r r!Útest_special_attrs^s$   ÿ ÿ   ÿzCookieTests.test_special_attrscCs6t d¡}d|dd<d|dd<| | ¡d¡dS)Nr3Tr#ÚsecureÚhttponlyz6Set-Cookie: Customer="WILE_E_COYOTE"; HttpOnly; Securer1r.r r r!Útest_set_secure_httponly_attrsus     ÿz*CookieTests.test_set_secure_httponly_attrsc Cs–gd¢}|D]„}|j|ddt d¡}||dd<| | ¡d|¡t ¡}| d|¡| |dd|¡Wdƒq 1s†0Yq dS)N)ZStrictZLaxÚstrictZlax)r0r3r#Zsamesitez1Set-Cookie: Customer="WILE_E_COYOTE"; SameSite=%sz%Customer="WILL_E_COYOTE"; SameSite=%s)ÚsubTestrrrr r)rZsamesite_valuesr0rr r r!Útest_samesite_attrs|s   ÿzCookieTests.test_samesite_attrscCs:t ¡}| d¡| |dd¡| |dd¡dS)Nzeggs=scrambled; Path=/baconÚeggsr;r:)rrrÚ assertFalser.r r r!Ú)test_secure_httponly_false_if_not_present‰s z5CookieTests.test_secure_httponly_false_if_not_presentcCs:t ¡}| d¡| |dd¡| |dd¡dS)Nz-eggs=scrambled; httponly; secure; Path=/baconr@r;r:)rrrr7r.r r r!Ú$test_secure_httponly_true_if_presents z0CookieTests.test_secure_httponly_true_if_presentcCsbt ¡}| d¡| |dd¡| |dd¡| |ddd¡| |ddd¡dS)Nz5eggs=scrambled; httponly=foo; secure=bar; Path=/baconr@r;r:ÚfooÚbar)rrrr7rr.r r r!Ú'test_secure_httponly_true_if_have_value–s  z3CookieTests.test_secure_httponly_true_if_have_valuecCs&t ¡}| d¡| | ¡d¡dS)Nz=eggs = scrambled ; secure ; path = bar ; foo=foo zASet-Cookie: eggs=scrambled; Path=bar; Secure Set-Cookie: foo=foo)rrrrr r.r r r!Útest_extra_spaces¢s   ÿzCookieTests.test_extra_spacescCsˆt ¡}| d¡| |djd¡| |ddd¡| |ddd¡| | dg¡d¡| | ¡d ¡| | dg¡d ¡dS) Nz3Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"r#r$r%r&r'r(r)r*r+r,r.r r r!Útest_quoted_meta¨s ÿzCookieTests.test_quoted_metacCs@t ¡}dD].}| |¡| t|ƒi¡| | ¡d¡q dS)N) z]foo=xz[foo=xz blah]foo=xz blah[foo=xzSet-Cookie: foo=barzSet-Cookie: fooz foo=bar; bazz baz; foo=barzsecure;foo=barzVersion=1;foo=barÚ)rrrrrr )rrÚsr r r!Útest_invalid_cookiesÁs  z CookieTests.test_invalid_cookiesc Cs–d}d|}t ¡}| |¡| | ¡|¡ttjdƒD]T}|j|d4t  tj ||d¡}| | ¡|¡Wdƒq<1s†0YqÚloadsÚdumps)rÚrawdataZexpected_outputrrNZC1r r r!Ú test_pickleÌs zCookieTests.test_picklecCsFd}t ¡}| tj¡| |¡Wdƒn1s80YdS)Nz a=b; c,d=e)rrÚ assertRaisesÚ CookieErrorr)rrUrr r r!Útest_illegal_charsÙszCookieTests.test_illegal_charscCsHt ¡}d|d<| t|dƒd¡d|dd<| t|dƒd¡dS)Nõ©rDzSet-Cookie: foo="\251"u comment ©Úcommentz.Set-Cookie: foo="\251"; Comment="comment \251")rrrÚstr)rrr r r!Útest_comment_quotingßs  þz CookieTests.test_comment_quotingN)Ú__name__Ú __module__Ú __qualname__r"r/r2r9r<r?rBrCrFrGrHrKrVrYr]r r r r!r s1    rc@sheZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dd„ZdS)Ú MorselTestszTests for the Morsel object.cCsht ¡}| |j¡| |j¡| |j¡| | ¡tjj ¡¡|  ¡D]\}}| |d|¡qLdS©NrI) rÚMorselZ assertIsNoneÚkeyrÚ coded_valuerÚkeysÚ _reservedr)rÚmorselrdr0r r r!Ú test_defaultsís   zMorselTests.test_defaultscCszt ¡}|jD] }| | |¡¡d|||<q|jD]}| ||d|¡q6d ¡D]}| tj|j |d|¡qXdS)Nú%s_valuezthe holy hand grenade) rrcrgr7Z isReservedKeyrÚsplitrWrXÚ __setitem__)rÚMÚir r r!Útest_reserved_keysös    ÿzMorselTests.test_reserved_keysc Csøt ¡}|jD]"}| tj|j|d|d|¡qd ¡D]}d|d<| |d|d|¡| |j|¡| |j d|¡| |j d|¡| |  ¡d|d|f¡d|d|f}| |  ¡|¡q:d D]"}| tj|j|d|d|¡qÐdS) Nrjz(thou cast _the- !holy! ^hand| +*grenade~z/foor'z%s_valz %s_coded_valzSet-Cookie: %s=%s; Path=/fooz¥ )zfoo barzfoo@bar) rrcrgrWrXÚsetrkrrdrrer r-)rrmrnZexpected_js_outputr r r!Ú test_setters. ÿ þ úÿzMorselTests.test_settercCsœt ¡}| t¡d|_Wdƒn1s.0Y| t¡d|_Wdƒn1s^0Y| t¡d|_Wdƒn1sŽ0YdSrb)rrcrWÚAttributeErrorrdrre©rrhr r r!Útest_set_properties$s $ $ zMorselTests.test_set_propertiesc CsÖd}dddddœ}t ¡}| |¡|j|Žt ¡}| |¡|j|Ž| ||k¡| ||k¡d}|D]f}| |¡Ht ¡}| |¡|j|Ž| ||k¡| ||k¡Wdƒqn1sÊ0Yqnt ¡}| |¡|j|Žd|d <| ||k¡| ||k¡| t ¡d k¡| t ¡d k¡| t ¡d k¡| t ¡d k¡tt ¡ ¡ƒ}| t ¡|k¡| t ¡|k¡t ¡}|j|Ž| |¡| |t |ƒk¡| |t |ƒk¡dS) N)rdrú"value"ú/rDú example.comé)r'r[Údomainr%))rdrÚmismatch)rdrzru)rzrrurEr[rLrI) rrcÚupdaterpr7rAr>Úlistrr) rZ base_caseÚattribsÚmorsel_aÚmorsel_brZcase_brrhr r r!Útest_eq-sPü       .    zMorselTests.test_eqcCsˆt ¡}| ddd¡| dddœ¡| ¡}| |tj¡| ||¡| ||¡t |¡}| |tj¡| ||¡| ||¡dS)NrDrEÚbazrx©r%r[)rrcrpr{ÚcopyÚassertIsInstanceZ assertIsNotr)rr~rr r r!Ú test_copyasþ    zMorselTests.test_copycCs”t ¡}d|d<| |dd¡d|d<| |dd¡d|d<| |dd¡| tj¡d |d <Wdƒn1sz0Y| d |¡dS) Nrr4rxÚVersionr%rwÚDOMAINryrÚinvalid)rrcrrWrXÚ assertNotInrsr r r!Ú test_setitemrs&zMorselTests.test_setitemcCsÌt ¡}| dddœ¡| | dd¡d¡| |dd¡| | dd¡d¡| |d d¡| | d d¡d¡| |d d¡| tj¡| d d¡Wdƒn1s²0Y| d |¡dS) Nrwrx)ryr%r4rrIr†rLr%r‡ryrˆ)rrcr{rÚ setdefaultrWrXr‰rsr r r!Útest_setdefaultsþ*zMorselTests.test_setdefaultcCsRddddœ}t ¡}| |¡| |dd¡| |dd¡| |dd¡t ¡}| t| ¡ƒ¡| |dd¡| |dd¡| |dd¡t ¡}| dd „| ¡Dƒ¡| |dd¡| |dd¡| |dd¡| tj¡| d d i¡Wdƒn1s0Y| d |¡| t |j¡| t |jd ¡dS) NrLrxrw)r4r†r‡r4r%rycss|]\}}||fVqdS©Nr )Ú.0rrr r r!Ú ¡óz*MorselTests.test_update..rˆrr) rrcr{rr|rrWrXr‰Ú TypeError)rr}rhr r r!Ú test_update‘s*  . zMorselTests.test_updatec Csªt ¡}| ddd¡| dddœ¡ttjdƒD]p}|j|dPt t  ||¡¡}|  |tj¡|  ||¡|  t |ƒt |ƒ¡Wdƒq41sš0Yq4dS)NrDrErrxr‚rLrM) rrcrpr{rPrQrRr>rSrTr„rr\)rr~rNrr r r!rV¬sþ zMorselTests.test_picklec Cst ¡}| t|ƒd¡| t|ƒd¡| ddd¡| t|ƒd¡| t|ƒd¡| dd d d d d d œ¡| t|ƒd¡| t|ƒd¡d|d<d |d<| t|ƒd¡| t|ƒd¡t ¡}| ddd¡d |d<| t|ƒd¡| t|ƒd¡dS)NzzSet-Cookie: None=Nonerdr0Z coded_valzzSet-Cookie: key=coded_valrvrDrwrrL)r'r[ryr6r:r%zVzXSet-Cookie: key=coded_val; Comment=foo; Domain=example.com; Max-Age=0; Path=/; Version=1Tr:r;zhzjSet-Cookie: key=coded_val; Comment=foo; Domain=example.com; HttpOnly; Max-Age=0; Path=/; Secure; Version=1r4zAzCSet-Cookie: key=coded_val; expires=\w+, \d+ \w+ \d+ \d+:\d+:\d+ \w+)rrcrrr\rpr{Z assertRegexrsr r r!Ú test_reprºsJú ÿ ÿ ÿ ÿ ÿ ÿzMorselTests.test_reprN)r^r_r`Ú__doc__rirorqrtr€r…rŠrŒr’rVr“r r r r!raês  4 racCstttƒttƒdSr)rrrarrr r r r!Ú test_mainâs r•Ú__main__) rƒZ test.supportrrZunittestÚhttprrQZTestCaserrar•r^r r r r!Ús ay