blob: 0eb59426ccb63080b3f292246d1b3b636f9a5930 [file] [log] [blame]
Jeremy Hyltonb476d592009-03-26 21:34:20 +00001"""Unit tests for code in urllib.response."""
2
Senthil Kumaran6117e5d2014-04-20 09:41:29 -07003import socket
4import tempfile
Jeremy Hyltonb476d592009-03-26 21:34:20 +00005import urllib.response
6import unittest
7
Senthil Kumaran6117e5d2014-04-20 09:41:29 -07008class TestResponse(unittest.TestCase):
Jeremy Hyltonb476d592009-03-26 21:34:20 +00009
10 def setUp(self):
Senthil Kumaran6117e5d2014-04-20 09:41:29 -070011 self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
12 self.fp = self.sock.makefile('rb')
13 self.test_headers = {"Host": "www.python.org",
14 "Connection": "close"}
Jeremy Hyltonb476d592009-03-26 21:34:20 +000015
16 def test_with(self):
Senthil Kumaran6117e5d2014-04-20 09:41:29 -070017 addbase = urllib.response.addbase(self.fp)
18
19 self.assertIsInstance(addbase, tempfile._TemporaryFileWrapper)
20
Jeremy Hyltonb476d592009-03-26 21:34:20 +000021 def f():
Senthil Kumaran6117e5d2014-04-20 09:41:29 -070022 with addbase as spam:
Jeremy Hyltonb476d592009-03-26 21:34:20 +000023 pass
24 self.assertFalse(self.fp.closed)
25 f()
26 self.assertTrue(self.fp.closed)
27 self.assertRaises(ValueError, f)
28
Senthil Kumaran6117e5d2014-04-20 09:41:29 -070029 def test_addclosehook(self):
30 closehook_called = False
31
32 def closehook():
33 nonlocal closehook_called
34 closehook_called = True
35
36 closehook = urllib.response.addclosehook(self.fp, closehook)
37 closehook.close()
38
39 self.assertTrue(self.fp.closed)
40 self.assertTrue(closehook_called)
41
42 def test_addinfo(self):
43 info = urllib.response.addinfo(self.fp, self.test_headers)
44 self.assertEqual(info.info(), self.test_headers)
45
46 def test_addinfourl(self):
47 url = "http://www.python.org"
48 code = 200
49 infourl = urllib.response.addinfourl(self.fp, self.test_headers,
50 url, code)
51 self.assertEqual(infourl.info(), self.test_headers)
52 self.assertEqual(infourl.geturl(), url)
53 self.assertEqual(infourl.getcode(), code)
54
55 def tearDown(self):
56 self.sock.close()
Jeremy Hyltonb476d592009-03-26 21:34:20 +000057
58if __name__ == '__main__':
Senthil Kumaran6117e5d2014-04-20 09:41:29 -070059 unittest.main()