/tests/web/test_digestauth.py

https://bitbucket.org/prologic/circuits/ · Python · 43 lines · 30 code · 12 blank · 1 comment · 5 complexity · 7fe4e9a048fe05a9cbc69d5b2899e406 MD5 · raw file

  1. #!/usr/bin/env python
  2. import pytest
  3. if pytest.PYVER[:2] == (3, 3):
  4. pytest.skip("Broken on Python 3.3")
  5. from circuits.web import Controller
  6. from circuits.web.tools import check_auth, digest_auth
  7. from .helpers import HTTPError, HTTPDigestAuthHandler
  8. from .helpers import urlopen, build_opener, install_opener
  9. class Root(Controller):
  10. def index(self):
  11. realm = "Test"
  12. users = {"admin": "admin"}
  13. if check_auth(self.request, self.response, realm, users):
  14. return "Hello World!"
  15. return digest_auth(self.request, self.response, realm, users)
  16. def test(webapp):
  17. try:
  18. f = urlopen(webapp.server.http.base)
  19. except HTTPError as e:
  20. assert e.code == 401
  21. assert e.msg == "Unauthorized"
  22. else:
  23. assert False
  24. handler = HTTPDigestAuthHandler()
  25. handler.add_password("Test", webapp.server.http.base, "admin", "admin")
  26. opener = build_opener(handler)
  27. install_opener(opener)
  28. f = urlopen(webapp.server.http.base)
  29. s = f.read()
  30. assert s == b"Hello World!"
  31. install_opener(None)