1"""Unit tests for code in urllib.response.""" 2 3import socket 4import tempfile 5import urllib.response 6import unittest 7from test import support 8 9if support.is_wasi: 10 raise unittest.SkipTest("Cannot create socket on WASI") 11 12 13class TestResponse(unittest.TestCase): 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 67if __name__ == '__main__': 68 unittest.main() 69