a zeJ@srddlZddlmZmZddlZddlmZddlZGdddejZ GdddejZ dd Z e d krne dS) N) run_unittest run_doctest)cookiesc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdS) CookieTestsc Csddddddddd d id d dd d diddddddidddddddddddddg}|D]r}t}||d|t||d ||jdd!|d"t|d#D]\}}|||j |qqfdS)$Nzchips=ahoy; vienna=fingerZahoyZfinger)ZchipsZviennaz,z0Set-Cookie: chips=ahoy Set-Cookie: vienna=finger)datadictreproutputz)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=hb[rh)acdfz' )zSet-Cookie: a=bzSet-Cookie: c=[zSet-Cookie: d=rzSet-Cookie: f=hrr)sepr r) joinr SimpleCookieload assertEqualrr sorteditemsvalue)selfcasesZcaseCkvr J/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_http_cookies.py test_basic sB (zCookieTests.test_basiccCst}|d||djd||ddd||ddd||dgd||d ||dgd dS) Nz/Customer="WILE_E_COYOTE"; Version=1; Path=/acmeCustomer WILE_E_COYOTEversion1path/acme0Set-Cookie: Customer="WILE_E_COYOTE"; Path=/acme rrrrrr js_outputrrr r r! test_load=s zCookieTests.test_loadcCs(t}d|d<||dgddS)Nzsome,funky;stuffvalz(Set-Cookie: val="some\054funky\073stuff"rrrr r.r r r!test_extended_encodeVs z CookieTests.test_extended_encodecCstd}d|dd<||dt}|d||dddt}|d||ddd td}d |dd <||d dS) NCustomer="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_attrscCs6td}d|dd<d|dd<||ddS)Nr3Tr#securehttponlyz6Set-Cookie: Customer="WILE_E_COYOTE"; HttpOnly; Securer1r.r r r!test_set_secure_httponly_attrsus     z*CookieTests.test_set_secure_httponly_attrsc Csgd}|D]}|j|ddtd}||dd<||d|t}|d|||dd|Wdq 1s0Yq dS)N)ZStrictZLaxstrictZlax)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||dddS)Nzeggs=scrambled; Path=/baconeggsr;r:)rrr assertFalser.r r r!)test_secure_httponly_false_if_not_presents z5CookieTests.test_secure_httponly_false_if_not_presentcCs:t}|d||dd||dddS)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||ddddS)Nz5eggs=scrambled; httponly=foo; secure=bar; Path=/baconr@r;r:foobar)rrrr7rr.r r r!'test_secure_httponly_true_if_have_values  z3CookieTests.test_secure_httponly_true_if_have_valuecCs&t}|d||ddS)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_spacess   zCookieTests.test_extra_spacescCst}|d||djd||ddd||ddd||dgd||d ||dgd 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_metas zCookieTests.test_quoted_metacCs@t}dD].}|||t|i||dq 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 )rrsr r r!test_invalid_cookiess  z CookieTests.test_invalid_cookiesc Csd}d|}t}|||||ttjdD]T}|j|d4t tj ||d}|||Wdq<1s0Yqloadsdumps)rrawdataZexpected_outputrrNZC1r r r! test_pickles zCookieTests.test_picklecCsFd}t}|tj||Wdn1s80YdS)Nz a=b; c,d=e)rr assertRaises CookieErrorr)rrUrr r r!test_illegal_charsszCookieTests.test_illegal_charscCsHt}d|d<|t|ddd|dd<|t|dddS)N©rDzSet-Cookie: foo="\251"u comment ©commentz.Set-Cookie: foo="\251"; Comment="comment \251")rrrstr)rrr r r!test_comment_quotings  z CookieTests.test_comment_quotingN)__name__ __module__ __qualname__r"r/r2r9r<r?rBrCrFrGrHrKrVrYr]r r r r!r s1    rc@sheZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZdS) MorselTestszTests for the Morsel object.cCsht}||j||j||j||tjj| D]\}}||d|qLdSNrI) rMorselZ assertIsNonekeyr coded_valuerkeys _reservedr)rmorselrdr0r r r! test_defaultss   zMorselTests.test_defaultscCszt}|jD] }|||d|||<q|jD]}|||d|q6dD]}|tj|j |d|qXdS)N%s_valuezthe holy hand grenade) rrcrgr7Z isReservedKeyrsplitrWrX __setitem__)rMir r r!test_reserved_keyss    zMorselTests.test_reserved_keysc Cst}|jD]"}|tj|j|d|d|qdD]}d|d<||d|d|||j|||j d|||j d||| d|d|fd|d|f}|| |q:d D]"}|tj|j|d|d|qdS) Nrjz(thou cast _the- !holy! ^hand| +*grenade~z/foor'z%s_valz %s_coded_valzSet-Cookie: %s=%s; Path=/fooz )zfoo barzfoo@bar) rrcrgrWrXsetrkrrdrrer r-)rrmrnZexpected_js_outputr r r! test_setters.   zMorselTests.test_settercCst}|td|_Wdn1s.0Y|td|_Wdn1s^0Y|td|_Wdn1s0YdSrb)rrcrWAttributeErrorrdrrerrhr r r!test_set_properties$s $ $ zMorselTests.test_set_propertiesc Csd}ddddd}t}|||j|t}|||j||||k|||kd}|D]f}||Ht}|||j||||k|||kWdqn1s0Yqnt}|||j|d|d <|||k|||k|td k|td k|td k|td ktt}|t|k|t|kt}|j|||||t |k||t |kdS) N)rdr"value"/rD example.com)r'r[domainr%))rdrmismatch)rdrzru)rzrrurEr[rLrI) rrcupdaterpr7rAr>listrr) rZ base_caseattribsmorsel_amorsel_brZcase_brrhr r r!test_eq-sP       .    zMorselTests.test_eqcCst}|ddd|ddd|}||tj||||||t|}||tj||||||dS)NrDrEbazrxr%r[)rrcrpr{copyassertIsInstanceZ assertIsNotr)rr~rr r r! test_copyas    zMorselTests.test_copycCst}d|d<||ddd|d<||ddd|d<||dd|tjd |d <Wdn1sz0Y|d |dS) Nrr4rxVersionr%rwDOMAINryrinvalid)rrcrrWrX assertNotInrsr r r! test_setitemrs&zMorselTests.test_setitemcCst}|ddd||ddd||dd||ddd||d d||d dd||d d|tj|d dWdn1s0Y|d |dS) Nrwrx)ryr%r4rrIrrLr%rryr)rrcr{r setdefaultrWrXrrsr r r!test_setdefaults*zMorselTests.test_setdefaultcCsRdddd}t}||||dd||dd||ddt}|t|||dd||dd||ddt}|dd |D||dd||dd||dd|tj|d d iWdn1s0Y|d ||t |j|t |jd dS) NrLrxrw)r4rrr4r%rycss|]\}}||fVqdSNr ).0rrr r r! z*MorselTests.test_update..rrr) rrcr{rr|rrWrXr TypeError)rr}rhr r r! test_updates*  . zMorselTests.test_updatec Cst}|ddd|dddttjdD]p}|j|dPtt ||}| |tj| ||| t |t |Wdq41s0Yq4dS)NrDrErrxrrLrM) rrcrpr{rPrQrRr>rSrTrrr\)rr~rNrr r r!rVs zMorselTests.test_picklec Cst}|t|d|t|d|ddd|t|d|t|d|dd d d d d d |t|d|t|dd|d<d |d<|t|d|t|dt}|dddd |d<|t|d|t|ddS)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_reprsJ      zMorselTests.test_reprN)r^r_r`__doc__rirorqrtrrrrrrVrr r r r!ras  4 racCstttttdSr)rrrarrr r r r! test_mains r__main__) rZ test.supportrrZunittesthttprrQZTestCaserrarr^r r r r!s ay