fix tests

git-svn-id: https://linkchecker.svn.sourceforge.net/svnroot/linkchecker/trunk/linkchecker@3011 e7d03fd6-7b0d-0410-9947-9c21f3af8025
This commit is contained in:
calvin 2006-01-04 01:20:20 +00:00
parent e92aee054c
commit 48cdfd32ee
4 changed files with 19 additions and 27 deletions

View file

@ -88,11 +88,6 @@ class TestHttp (linkcheck.checker.tests.httptest.HttpServerTest):
u"real url %s" % rurl,
u"info Redirected to %s." % rurl,
u"valid",
u"url newurl.html",
u"cache key %s" % rurl,
u"real url %s" % rurl,
u"name Recursive Redirect",
u"valid",
u"url newurl.html (cached)",
u"cache key %s" % nurl.replace("redirect", "newurl"),
u"real url %s" % rurl.replace("redirect", "newurl"),

View file

@ -101,16 +101,6 @@ class TestMail (linkcheck.checker.tests.LinkCheckTest):
u"valid",
]
self.direct(url, resultlines)
url = self.norm(u"mailto:foo@foo-bar.de?subject=test")
resultlines = [
u"url %s" % url,
u"cache key mailto:foo@foo-bar.de",
u"real url %s" % url,
u"info Unverified address: Cannot VRFY user; "
u"try RCPT to attempt delivery. But mail will be sent anyway.",
u"valid",
]
self.direct(url, resultlines)
def test_warn_mail (self):
"""

View file

@ -46,6 +46,11 @@ class TestUrl (tests.StandardTest):
Test url norming and quoting.
"""
def urlnormtest (self, url, nurl):
self.assertEquals(url_norm(url), nurl)
cs = "iso8859-1"
self.assertEquals(url_norm(url.decode(cs)), nurl.decode(cs))
def test_pathattack (self):
"""
Windows winamp path attack prevention.
@ -64,38 +69,40 @@ class TestUrl (tests.StandardTest):
"prev=/groups%3Fq%3Dlogitech%2Bwingman%2Bextreme%2Bdigital"\
"%2B3d%26hl%3Den%26lr%3D%26ie%3DUTF-8%26selm%3D3845B54D.E5"\
"46F9BD%2540monmouth.com%26rnum%3D2"
nurl = url
self.assertEqual(url_norm(url), nurl)
self.urlnormtest(url, url)
url = "http://redirect.alexa.com/redirect?"\
"http://www.offeroptimizer.com"
nurl = url
self.assertEqual(url_norm(url), nurl)
self.urlnormtest(url, nurl)
url = "http://www.lesgensducinema.com/photo/Philippe%20Nahon.jpg"
nurl = url
self.assertEqual(url_norm(url), nurl)
self.urlnormtest(url, nurl)
# Only perform percent-encoding where it is essential.
url = "http://example.com/%7Ejane"
nurl = "http://example.com/~jane"
self.assertEqual(url_norm(url), nurl)
self.urlnormtest(url, nurl)
url = "http://example.com/%7ejane"
self.assertEqual(url_norm(url), nurl)
self.urlnormtest(url, nurl)
# Always use uppercase A-through-F characters when percent-encoding.
url = "http://example.com/?q=1%2a2"
nurl = "http://example.com/?q=1%2A2"
self.assertEqual(url_norm(url), nurl)
self.urlnormtest(url, nurl)
# the no-quote chars
url = "http://example.com/a*+-();b"
nurl = url
self.assertEqual(url_norm(url), nurl)
self.urlnormtest(url, nurl)
url = "http://www.company.com/path/doc.html?url=/path2/doc2.html?foo=bar"
nurl = url
self.assertEqual(url_norm(url), nurl)
self.urlnormtest(url, nurl)
url = "http://example.com/#a b"
nurl = "http://example.com/#a%20b"
self.assertEqual(url_norm(url), nurl)
self.urlnormtest(url, nurl)
url = "http://example.com/?u=http://example2.com?b=c "
nurl ="http://example.com/?u=http://example2.com?b=c%20"
self.assertEqual(url_norm(url), nurl)
self.urlnormtest(url, nurl)
url = "http://localhost:8001/?quoted=ü"
nurl = "http://localhost:8001/?quoted=%FC"
self.urlnormtest(url, nurl)
def test_norm_case_sensitivity (self):
"""

View file

@ -246,7 +246,7 @@ def url_parse_query (query):
Parse and re-join the given CGI query.
"""
if isinstance(query, unicode):
query = query.encode('ascii', 'ignore')
query = query.encode('iso8859-1', 'ignore')
# if ? is in the query, split it off, seen at msdn.microsoft.com
if '?' in query:
query, append = query.split('?', 1)