/tests/web/test_expires.py

https://bitbucket.org/prologic/circuits/ · Python · 48 lines · 32 code · 15 blank · 1 comment · 0 complexity · 079e9efb1e6a3d563534e522cd69f949 MD5 · raw file

  1. #!/usr/bin/env python
  2. from datetime import datetime
  3. from time import mktime
  4. from email.utils import parsedate
  5. from circuits.web import Controller
  6. from .helpers import urlopen
  7. class Root(Controller):
  8. def index(self):
  9. self.expires(60)
  10. return "Hello World!"
  11. def nocache(self):
  12. self.expires(0)
  13. return "Hello World!"
  14. def test(webapp):
  15. f = urlopen(webapp.server.http.base)
  16. s = f.read()
  17. assert s == b"Hello World!"
  18. expires = f.headers["Expires"]
  19. diff = (mktime(parsedate(expires)) - mktime(datetime.utcnow().timetuple()))
  20. assert 60 - (60 * 0.1) < diff < 60 + (60 * 0.1) # diff is about 60 +- 10%
  21. def test_nocache(webapp):
  22. f = urlopen("%s/nocache" % webapp.server.http.base)
  23. s = f.read()
  24. assert s == b"Hello World!"
  25. expires = f.headers["Expires"]
  26. pragma = f.headers["Pragma"]
  27. cacheControl = f.headers["Cache-Control"]
  28. now = datetime.utcnow()
  29. lastyear = now.replace(year=now.year-1)
  30. diff = (mktime(parsedate(expires)) - mktime(lastyear.utctimetuple()))
  31. assert diff < 1.0
  32. assert pragma == "no-cache"
  33. assert cacheControl == "no-cache, must-revalidate"