1 """Unit tests for code in urllib.response."""
2
3 import socket
4 import tempfile
5 import urllib.response
6 import unittest
7 from test import support
8
9 if support.is_wasi:
10 raise unittest.SkipTest("Cannot create socket on WASI")
11
12
13 class ESC[4;38;5;81mTestResponse(ESC[4;38;5;149munittestESC[4;38;5;149m.ESC[4;38;5;149mTestCase):
14
15 def setUp(self):
16 self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
17 self.fp = self.sock.makefile('rb')
18 self.test_headers = {"Host": "www.python.org",
19 "Connection": "close"}
20
21 def test_with(self):
22 addbase = urllib.response.addbase(self.fp)
23
24 self.assertIsInstance(addbase, tempfile._TemporaryFileWrapper)
25
26 def f():
27 with addbase as spam:
28 pass
29 self.assertFalse(self.fp.closed)
30 f()
31 self.assertTrue(self.fp.closed)
32 self.assertRaises(ValueError, f)
33
34 def test_addclosehook(self):
35 closehook_called = False
36
37 def closehook():
38 nonlocal closehook_called
39 closehook_called = True
40
41 closehook = urllib.response.addclosehook(self.fp, closehook)
42 closehook.close()
43
44 self.assertTrue(self.fp.closed)
45 self.assertTrue(closehook_called)
46
47 def test_addinfo(self):
48 info = urllib.response.addinfo(self.fp, self.test_headers)
49 self.assertEqual(info.info(), self.test_headers)
50 self.assertEqual(info.headers, self.test_headers)
51
52 def test_addinfourl(self):
53 url = "http://www.python.org"
54 code = 200
55 infourl = urllib.response.addinfourl(self.fp, self.test_headers,
56 url, code)
57 self.assertEqual(infourl.info(), self.test_headers)
58 self.assertEqual(infourl.geturl(), url)
59 self.assertEqual(infourl.getcode(), code)
60 self.assertEqual(infourl.headers, self.test_headers)
61 self.assertEqual(infourl.url, url)
62 self.assertEqual(infourl.status, code)
63
64 def tearDown(self):
65 self.sock.close()
66
67 if __name__ == '__main__':
68 unittest.main()