cookies: check mw outputs. refs #73

--HG--
extra : convert_revision : svn%3Ab85faa78-f9eb-468e-a121-7cced6da292c%401085
This commit is contained in:
Daniel Grana 2009-04-23 13:27:04 +00:00
parent 315a24add4
commit 45f55c0df0
2 changed files with 19 additions and 20 deletions

View File

@ -35,7 +35,7 @@ class CookiesMiddleware(object):
def process_response(self, request, response, spider):
if request.meta.get('dont_merge_cookies', False):
return
return response
# extract cookies from Set-Cookie and drop invalid/expired cookies
jar = self.jars[spider.domain_name]

View File

@ -23,65 +23,64 @@ class CookiesMiddlewareTest(TestCase):
def test_basic(self):
headers = {'Set-Cookie': 'C1=value1; path=/'}
req = Request('http://scrapytest.org/')
self.mw.process_request(req, self.spider)
assert self.mw.process_request(req, self.spider) is None
assert 'Cookie' not in req.headers
res = Response('http://scrapytest.org/', headers=headers)
self.mw.process_response(req, res, self.spider)
assert self.mw.process_response(req, res, self.spider) is res
#assert res.cookies
req2 = Request('http://scrapytest.org/sub1/')
self.mw.process_request(req2, self.spider)
assert self.mw.process_request(req2, self.spider) is None
self.assertEquals(req2.headers.get('Cookie'), "C1=value1")
def test_http_exception(self):
req = Request('http://scrapytest.org/')
assert self.mw.process_request(req, self.spider) is None
assert 'Cookie' not in req.headers
headers = {'Set-Cookie': 'C1=value1; path=/'}
res = Response('http://scrapytest.org/', headers=headers)
exc = HttpException(302, 'Redirect', res)
req = Request('http://scrapytest.org/')
self.mw.process_request(req, self.spider)
assert 'Cookie' not in req.headers
self.mw.process_exception(req, exc, self.spider)
assert self.mw.process_exception(req, exc, self.spider) is None
#assert exc.response.cookies
req2 = Request('http://scrapytest.org/sub1/')
self.mw.process_request(req2, self.spider)
assert self.mw.process_request(req2, self.spider) is None
self.assertEquals(req2.headers.get('Cookie'), "C1=value1")
def test_dont_merge_cookies(self):
# merge some cookies into jar
headers = {'Set-Cookie': 'C1=value1; path=/'}
req = Request('http://scrapytest.org/')
res = Response('http://scrapytest.org/', headers=headers)
self.mw.process_response(req, res, self.spider)
assert self.mw.process_response(req, res, self.spider) is res
# test Cookie header is not seted to request
req = Request('http://scrapytest.org/dontmerge', meta={'dont_merge_cookies': 1})
self.mw.process_request(req, self.spider)
assert self.mw.process_request(req, self.spider) is None
assert 'Cookie' not in req.headers
# check that returned cookies are not merged back to jar
res = Response('http://scrapytest.org/dontmerge', headers={'Set-Cookie': 'dont=mergeme; path=/'})
self.mw.process_response(req, res, self.spider)
assert self.mw.process_response(req, res, self.spider) is res
req = Request('http://scrapytest.org/mergeme')
self.mw.process_request(req, self.spider)
assert self.mw.process_request(req, self.spider) is None
self.assertEquals(req.headers.get('Cookie'), 'C1=value1')
def test_merge_request_cookies(self):
req = Request('http://scrapytest.org/', cookies={'galleta': 'salada'})
self.mw.process_request(req, self.spider)
assert self.mw.process_request(req, self.spider) is None
self.assertEquals(req.headers.get('Cookie'), 'galleta=salada')
headers = {'Set-Cookie': 'C1=value1; path=/'}
res = Response('http://scrapytest.org/', headers=headers)
self.mw.process_response(req, res, self.spider)
assert self.mw.process_response(req, res, self.spider) is res
req2 = Request('http://scrapytest.org/sub1/')
self.mw.process_request(req2, self.spider)
assert self.mw.process_request(req2, self.spider) is None
self.assertEquals(req2.headers.get('Cookie'), "C1=value1; galleta=salada")