/tests/web/test_serve_download.py

https://bitbucket.org/prologic/circuits/ · Python · 36 lines · 25 code · 10 blank · 1 comment · 0 complexity · 33b773c95ccd5f1645197cbcf41a4f6b MD5 · raw file

  1. #!/usr/bin/env python
  2. import os
  3. from tempfile import mkstemp
  4. from circuits import handler
  5. from circuits.web import Controller
  6. from .helpers import urlopen
  7. class Root(Controller):
  8. @handler("started", priority=1.0, channel="*")
  9. def _on_started(self, component):
  10. fd, self.filename = mkstemp()
  11. os.write(fd, b"Hello World!")
  12. os.close(fd)
  13. @handler("stopped", channel="(")
  14. def _on_stopped(self, component):
  15. os.remove(self.filename)
  16. def index(self):
  17. return self.serve_download(self.filename)
  18. def test(webapp):
  19. f = urlopen(webapp.server.http.base)
  20. s = f.read()
  21. assert s == b"Hello World!"
  22. contentType = f.headers["Content-Type"]
  23. contentDisposition = f.headers["Content-Disposition"]
  24. assert contentType == "application/x-download"
  25. assert contentDisposition.startswith("attachment;")
  26. assert "filename" in contentDisposition