test_urllib_response.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. """Unit tests for code in urllib.response."""
  2. import socket
  3. import tempfile
  4. import urllib.response
  5. import unittest
  6. from test import support
  7. if support.is_wasi:
  8. raise unittest.SkipTest("Cannot create socket on WASI")
  9. class TestResponse(unittest.TestCase):
  10. def setUp(self):
  11. 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"}
  15. def test_with(self):
  16. addbase = urllib.response.addbase(self.fp)
  17. self.assertIsInstance(addbase, tempfile._TemporaryFileWrapper)
  18. def f():
  19. with addbase as spam:
  20. pass
  21. self.assertFalse(self.fp.closed)
  22. f()
  23. self.assertTrue(self.fp.closed)
  24. self.assertRaises(ValueError, f)
  25. def test_addclosehook(self):
  26. closehook_called = False
  27. def closehook():
  28. nonlocal closehook_called
  29. closehook_called = True
  30. closehook = urllib.response.addclosehook(self.fp, closehook)
  31. closehook.close()
  32. self.assertTrue(self.fp.closed)
  33. self.assertTrue(closehook_called)
  34. def test_addinfo(self):
  35. info = urllib.response.addinfo(self.fp, self.test_headers)
  36. self.assertEqual(info.info(), self.test_headers)
  37. self.assertEqual(info.headers, self.test_headers)
  38. def test_addinfourl(self):
  39. url = "http://www.python.org"
  40. code = 200
  41. infourl = urllib.response.addinfourl(self.fp, self.test_headers,
  42. url, code)
  43. self.assertEqual(infourl.info(), self.test_headers)
  44. self.assertEqual(infourl.geturl(), url)
  45. self.assertEqual(infourl.getcode(), code)
  46. self.assertEqual(infourl.headers, self.test_headers)
  47. self.assertEqual(infourl.url, url)
  48. self.assertEqual(infourl.status, code)
  49. def tearDown(self):
  50. self.sock.close()
  51. if __name__ == '__main__':
  52. unittest.main()