/tests/web/test_unicode.py

https://bitbucket.org/prologic/circuits/ · Python · 105 lines · 76 code · 27 blank · 2 comment · 3 complexity · f5f40e3c08861888e640595fda090e69 MD5 · raw file

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. try:
  4. from httplib import HTTPConnection
  5. except ImportError:
  6. from http.client import HTTPConnection # NOQA
  7. from circuits.six import b
  8. from circuits.web import Controller
  9. from circuits.web.client import Client, request
  10. from .helpers import urlopen
  11. class Root(Controller):
  12. def index(self):
  13. return "Hello World!"
  14. def request_body(self):
  15. return self.request.body.read()
  16. def response_body(self):
  17. return "ä"
  18. def request_headers(self):
  19. return self.request.headers["A"]
  20. def response_headers(self):
  21. self.response.headers["A"] = "ä"
  22. return "ä"
  23. def test_index(webapp):
  24. f = urlopen(webapp.server.http.base)
  25. s = f.read()
  26. assert s == b("Hello World!")
  27. def test_request_body(webapp):
  28. connection = HTTPConnection(webapp.server.host, webapp.server.port)
  29. connection.connect()
  30. body = b("ä")
  31. connection.request("GET", "/request_body", body)
  32. response = connection.getresponse()
  33. assert response.status == 200
  34. assert response.reason == "OK"
  35. s = response.read()
  36. assert s == b("ä")
  37. connection.close()
  38. def test_response_body(webapp):
  39. connection = HTTPConnection(webapp.server.host, webapp.server.port)
  40. connection.connect()
  41. connection.request("GET", "/response_body")
  42. response = connection.getresponse()
  43. assert response.status == 200
  44. assert response.reason == "OK"
  45. s = response.read()
  46. assert s == b("ä")
  47. connection.close()
  48. def test_request_headers(webapp):
  49. connection = HTTPConnection(webapp.server.host, webapp.server.port)
  50. connection.connect()
  51. body = b("")
  52. headers = {"A": "ä"}
  53. connection.request("GET", "/request_headers", body, headers)
  54. response = connection.getresponse()
  55. assert response.status == 200
  56. assert response.reason == "OK"
  57. s = response.read()
  58. assert s == b("ä")
  59. connection.close()
  60. def test_response_headers(webapp):
  61. client = Client()
  62. client.start()
  63. client.fire(
  64. request(
  65. "GET",
  66. "http://%s:%s/response_headers" % (
  67. webapp.server.host, webapp.server.port
  68. )
  69. )
  70. )
  71. while client.response is None:
  72. pass
  73. assert client.response.status == 200
  74. assert client.response.reason == 'OK'
  75. s = client.response.read()
  76. a = client.response.headers.get('A')
  77. assert a == "ä"
  78. assert s == b("ä")