scrapy/tests/test_downloadermiddleware_h...

53 lines
1.9 KiB
Python

import unittest
from scrapy.http import Request
from scrapy.downloadermiddlewares.httpauth import HttpAuthMiddleware
from scrapy.spiders import Spider
class TestSpider(Spider):
http_user = 'foo'
http_pass = 'bar'
class HttpAuthMiddlewareTest(unittest.TestCase):
def setUp(self):
self.mw = HttpAuthMiddleware()
self.spider = TestSpider('foo')
self.mw.spider_opened(self.spider)
def tearDown(self):
del self.mw
def test_auth(self):
req = Request('http://scrapytest.org/')
assert self.mw.process_request(req, self.spider) is None
self.assertEqual(req.headers['Authorization'], b'Basic Zm9vOmJhcg==')
def test_auth_already_set(self):
req = Request('http://scrapytest.org/',
headers=dict(Authorization='Digest 123'))
assert self.mw.process_request(req, self.spider) is None
self.assertEqual(req.headers['Authorization'], b'Digest 123')
def test_auth_already_set_with_meta(self):
meta = {'http_user': 'bar', 'http_pass': 'foo'}
req = Request('http://scrapytest.org/',
headers=dict(Authorization='Digest 123'),
meta=meta)
assert self.mw.process_request(req, self.spider) is None
self.assertEqual(req.headers['Authorization'], b'Digest 123')
def test_auth_meta(self):
meta = {'http_user': 'bar', 'http_pass': 'foo'}
req = Request('http://scrapytest.org/', meta=meta)
assert self.mw.process_request(req, Spider('bar')) is None
self.assertEqual(req.headers['Authorization'], b'Basic YmFyOmZvbw==')
def test_auth_meta_override(self):
meta = {'http_user': 'bar', 'http_pass': 'foo'}
req = Request('http://scrapytest.org/', meta=meta)
assert self.mw.process_request(req, self.spider) is None
self.assertEqual(req.headers['Authorization'], b'Basic YmFyOmZvbw==')