return req_host, erhn
def request_path(request):
- """request-URI, as defined by RFC 2965."""
+ """Path component of request-URI, as defined by RFC 2965."""
url = request.get_full_url()
- #scheme, netloc, path, parameters, query, frag = urlparse.urlparse(url)
- #req_path = escape_path("".join(urlparse.urlparse(url)[2:]))
- path, parameters, query, frag = urlparse.urlparse(url)[2:]
- if parameters:
- path = "%s;%s" % (path, parameters)
- path = escape_path(path)
- req_path = urlparse.urlunparse(("", "", path, "", query, frag))
- if not req_path.startswith("/"):
+ parts = urlparse.urlsplit(url)
+ path = escape_path(parts.path)
+ if not path.startswith("/"):
# fix bad RFC 2396 absoluteURI
- req_path = "/"+req_path
- return req_path
+ path = "/" + path
+ return path
def request_port(request):
host = request.get_host()
# -*- coding: latin-1 -*-
"""Tests for cookielib.py."""
-import re, os, time
+import cookielib
+import os
+import re
+import time
+
from unittest import TestCase
from test import test_support
+
class DateTimeTests(TestCase):
def test_time2isoz(self):
interact_netscape(c, "http://www.acme.com/blah/rhubarb/", 'eggs="bar"')
self.assert_("/blah/rhubarb" in c._cookies["www.acme.com"])
+ def test_default_path_with_query(self):
+ cj = cookielib.CookieJar()
+ uri = "http://example.com/?spam/eggs"
+ value = 'eggs="bar"'
+ interact_netscape(cj, uri, value)
+ # default path does not include query, so is "/", not "/?spam"
+ self.assert_("/" in cj._cookies["example.com"])
+ # cookie is sent back to the same URI
+ self.assertEquals(interact_netscape(cj, uri), value)
+
def test_escape_path(self):
from cookielib import escape_path
cases = [
from urllib2 import Request
from cookielib import request_path
# with parameters
- req = Request("http://www.example.com/rheum/rhaponicum;"
+ req = Request("http://www.example.com/rheum/rhaponticum;"
"foo=bar;sing=song?apples=pears&spam=eggs#ni")
- self.assertEquals(request_path(req), "/rheum/rhaponicum;"
- "foo=bar;sing=song?apples=pears&spam=eggs#ni")
+ self.assertEquals(request_path(req),
+ "/rheum/rhaponticum;foo=bar;sing=song")
# without parameters
- req = Request("http://www.example.com/rheum/rhaponicum?"
+ req = Request("http://www.example.com/rheum/rhaponticum?"
"apples=pears&spam=eggs#ni")
- self.assertEquals(request_path(req), "/rheum/rhaponicum?"
- "apples=pears&spam=eggs#ni")
+ self.assertEquals(request_path(req), "/rheum/rhaponticum")
# missing final slash
req = Request("http://www.example.com")
self.assertEquals(request_path(req), "/")