17db96d56Sopenharmony_ci"""Unit tests for code in urllib.response.""" 27db96d56Sopenharmony_ci 37db96d56Sopenharmony_ciimport socket 47db96d56Sopenharmony_ciimport tempfile 57db96d56Sopenharmony_ciimport urllib.response 67db96d56Sopenharmony_ciimport unittest 77db96d56Sopenharmony_cifrom test import support 87db96d56Sopenharmony_ci 97db96d56Sopenharmony_ciif support.is_wasi: 107db96d56Sopenharmony_ci raise unittest.SkipTest("Cannot create socket on WASI") 117db96d56Sopenharmony_ci 127db96d56Sopenharmony_ci 137db96d56Sopenharmony_ciclass TestResponse(unittest.TestCase): 147db96d56Sopenharmony_ci 157db96d56Sopenharmony_ci def setUp(self): 167db96d56Sopenharmony_ci self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 177db96d56Sopenharmony_ci self.fp = self.sock.makefile('rb') 187db96d56Sopenharmony_ci self.test_headers = {"Host": "www.python.org", 197db96d56Sopenharmony_ci "Connection": "close"} 207db96d56Sopenharmony_ci 217db96d56Sopenharmony_ci def test_with(self): 227db96d56Sopenharmony_ci addbase = urllib.response.addbase(self.fp) 237db96d56Sopenharmony_ci 247db96d56Sopenharmony_ci self.assertIsInstance(addbase, tempfile._TemporaryFileWrapper) 257db96d56Sopenharmony_ci 267db96d56Sopenharmony_ci def f(): 277db96d56Sopenharmony_ci with addbase as spam: 287db96d56Sopenharmony_ci pass 297db96d56Sopenharmony_ci self.assertFalse(self.fp.closed) 307db96d56Sopenharmony_ci f() 317db96d56Sopenharmony_ci self.assertTrue(self.fp.closed) 327db96d56Sopenharmony_ci self.assertRaises(ValueError, f) 337db96d56Sopenharmony_ci 347db96d56Sopenharmony_ci def test_addclosehook(self): 357db96d56Sopenharmony_ci closehook_called = False 367db96d56Sopenharmony_ci 377db96d56Sopenharmony_ci def closehook(): 387db96d56Sopenharmony_ci nonlocal closehook_called 397db96d56Sopenharmony_ci closehook_called = True 407db96d56Sopenharmony_ci 417db96d56Sopenharmony_ci closehook = urllib.response.addclosehook(self.fp, closehook) 427db96d56Sopenharmony_ci closehook.close() 437db96d56Sopenharmony_ci 447db96d56Sopenharmony_ci self.assertTrue(self.fp.closed) 457db96d56Sopenharmony_ci self.assertTrue(closehook_called) 467db96d56Sopenharmony_ci 477db96d56Sopenharmony_ci def test_addinfo(self): 487db96d56Sopenharmony_ci info = urllib.response.addinfo(self.fp, self.test_headers) 497db96d56Sopenharmony_ci self.assertEqual(info.info(), self.test_headers) 507db96d56Sopenharmony_ci self.assertEqual(info.headers, self.test_headers) 517db96d56Sopenharmony_ci 527db96d56Sopenharmony_ci def test_addinfourl(self): 537db96d56Sopenharmony_ci url = "http://www.python.org" 547db96d56Sopenharmony_ci code = 200 557db96d56Sopenharmony_ci infourl = urllib.response.addinfourl(self.fp, self.test_headers, 567db96d56Sopenharmony_ci url, code) 577db96d56Sopenharmony_ci self.assertEqual(infourl.info(), self.test_headers) 587db96d56Sopenharmony_ci self.assertEqual(infourl.geturl(), url) 597db96d56Sopenharmony_ci self.assertEqual(infourl.getcode(), code) 607db96d56Sopenharmony_ci self.assertEqual(infourl.headers, self.test_headers) 617db96d56Sopenharmony_ci self.assertEqual(infourl.url, url) 627db96d56Sopenharmony_ci self.assertEqual(infourl.status, code) 637db96d56Sopenharmony_ci 647db96d56Sopenharmony_ci def tearDown(self): 657db96d56Sopenharmony_ci self.sock.close() 667db96d56Sopenharmony_ci 677db96d56Sopenharmony_ciif __name__ == '__main__': 687db96d56Sopenharmony_ci unittest.main() 69