blob: cfd218387055d11a51a6bb0f8ed68a45b45586ef [file] [log] [blame]
#!/usr/bin/env python
from unittest import TestCase
import mechanize
from test_browser import make_mock_handler
class UserAgentTests(TestCase):
def _get_handler_from_ua(self, ua, name):
handler = ua._ua_handlers.get(name)
self.assertTrue(handler in ua.handlers)
return handler
def test_set_proxies(self):
ua = mechanize.UserAgentBase()
def proxy_bypass(hostname):
return False
proxies = {"http": "http://spam"}
ua.set_proxies(proxies, proxy_bypass)
proxy_handler = self._get_handler_from_ua(ua, "_proxy")
self.assertTrue(proxy_handler._proxy_bypass is proxy_bypass)
self.assertTrue(proxy_handler.proxies, proxies)
def test_set_handled_schemes(self):
class MockHandlerClass(make_mock_handler()):
def __call__(self): return self
class BlahHandlerClass(MockHandlerClass): pass
class BlahProcessorClass(MockHandlerClass): pass
BlahHandler = BlahHandlerClass([("blah_open", None)])
BlahProcessor = BlahProcessorClass([("blah_request", None)])
class TestUserAgent(mechanize.UserAgent):
default_schemes = ["http"]
default_others = []
default_features = []
handler_classes = mechanize.UserAgent.handler_classes.copy()
handler_classes.update(
{"blah": BlahHandler, "_blah": BlahProcessor})
ua = TestUserAgent()
self.assertEqual(list(h.__class__.__name__ for h in ua.handlers),
["HTTPHandler"])
ua.set_handled_schemes(["http", "file"])
self.assertEqual(sorted(h.__class__.__name__ for h in ua.handlers),
["FileHandler", "HTTPHandler"])
self.assertRaises(ValueError,
ua.set_handled_schemes, ["blah", "non-existent"])
self.assertRaises(ValueError,
ua.set_handled_schemes, ["blah", "_blah"])
ua.set_handled_schemes(["blah"])
req = mechanize.Request("blah://example.com/")
r = ua.open(req)
exp_calls = [("blah_open", (req,), {})]
assert len(ua.calls) == len(exp_calls)
for got, expect in zip(ua.calls, exp_calls):
self.assertEqual(expect, got[1:])
ua.calls = []
req = mechanize.Request("blah://example.com/")
ua._set_handler("_blah", True)
r = ua.open(req)
exp_calls = [
("blah_request", (req,), {}),
("blah_open", (req,), {})]
assert len(ua.calls) == len(exp_calls)
for got, expect in zip(ua.calls, exp_calls):
self.assertEqual(expect, got[1:])
ua._set_handler("_blah", True)
if __name__ == "__main__":
import unittest
unittest.main()