summaryrefslogtreecommitdiff
path: root/test/with_dummyserver/test_sessionmanager.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/with_dummyserver/test_sessionmanager.py')
-rw-r--r--test/with_dummyserver/test_sessionmanager.py95
1 files changed, 95 insertions, 0 deletions
diff --git a/test/with_dummyserver/test_sessionmanager.py b/test/with_dummyserver/test_sessionmanager.py
new file mode 100644
index 00000000..165953da
--- /dev/null
+++ b/test/with_dummyserver/test_sessionmanager.py
@@ -0,0 +1,95 @@
+from urllib3.sessionmanager import SessionManager
+from urllib3.exceptions import MaxRetryError
+from urllib3.poolmanager import PoolManager
+
+from urllib3.packages.six import b, u
+from urllib3.packages import six
+
+from dummyserver.testcase import HTTPDummyServerTestCase
+
+
+class TestSessionManager(HTTPDummyServerTestCase):
+
+ def create_url(self, route):
+ return 'http://' + self.host + ':' + str(self.port) + route
+
+ def create_alternate_url(self, route):
+ return 'http://' + self.host_alt + ':' + str(self.port) + route
+
+ def setUp(self):
+ self.manager = SessionManager()
+
+ def test_cookie_handler(self):
+ """
+ Test that the client gets, sets, and returns the appropriate cookie
+ """
+ route = self.create_url('/set_cookie_on_client')
+ r = self.manager.request('GET', route)
+ self.assertEqual(r.status, 200)
+ self.assertTrue(self.manager.context.cookie_jar)
+ route = self.create_url('/verify_cookie')
+ r = self.manager.request('GET', route)
+ self.assertEqual(r.data, b'Received cookie')
+
+ def test_restrict_undomained_cookie_by_host(self):
+ """
+ Test that undomained cookies are only sent to the domain that they
+ were originally received from
+ """
+ route = self.create_url('/set_undomained_cookie_on_client')
+ r = self.manager.request('GET', route)
+ self.assertEqual(r.status, 200)
+ self.assertTrue(self.manager.context.cookie_jar)
+ route = self.create_alternate_url('/verify_cookie')
+ r = self.manager.request('GET', route)
+ self.assertEqual(r.status, 400)
+
+ def test_merge_cookie_header(self):
+ """
+ Test that cookies passed in the headers argument are successfully
+ merged, rather than skipped
+ """
+ self.assertFalse(self.manager.context.cookie_jar)
+ headers = {'Cookie': 'testing_cookie=test_cookie_value'}
+ route = self.create_url('/verify_cookie')
+ r = self.manager.request('GET', route, headers=headers)
+ self.assertEqual(r.data, b'Received cookie')
+
+ def test_instance_headers(self):
+ """
+ Test that cookies set on the SessionManager instance are
+ successfully merged, rather than skipped
+ """
+ headers = {'Cookie': 'testing_cookie=test_cookie_value'}
+ manager = SessionManager(headers=headers)
+ route = self.create_url('/verify_cookie')
+ r = manager.request('GET', route)
+ self.assertEqual(r.data, b'Received cookie')
+
+ def test_collect_cookie_on_redirect(self):
+ """
+ Test that when we're redirected to a different URL, we
+ still save the cookie and transmit it when relevant.
+ """
+ route = self.create_url('/set_cookie_and_redirect')
+ r = self.manager.request('GET', route)
+ self.assertEqual(r.data, b'Received cookie')
+
+ def test_no_retry(self):
+ """
+ Test that the SessionManager follows the pattern of
+ raising MaxRetryError when we don't have any retries left
+ """
+ def execute_query():
+ route = self.create_url('/set_cookie_and_redirect')
+ r = self.manager.request('GET', route, retries=0)
+ self.assertRaises(MaxRetryError, execute_query)
+
+ def test_no_redirect(self):
+ """
+ Test that SessionManager follows the pattern of returning
+ the redirect status code when redirect is set to False.
+ """
+ route = self.create_url('/set_cookie_and_redirect')
+ r = self.manager.request('GET', route, redirect=False)
+ self.assertEqual(r.status, 303)