1from circuits.web import Controller
2from circuits.web.tools import check_auth, basic_auth
3
4from .helpers import HTTPError, HTTPBasicAuthHandler
5from .helpers import urlopen, build_opener, install_opener
6
7
8class Root(Controller):
9
10    def index(self):
11        realm = "Test"
12        users = {"admin": "admin"}
13        encrypt = str
14
15        if check_auth(self.request, self.response, realm, users, encrypt):
16            return "Hello World!"
17
18        return basic_auth(self.request, self.response, realm, users, encrypt)
19
20
21def test(webapp):
22    try:
23        f = urlopen(webapp.server.http.base)
24    except HTTPError as e:
25        assert e.code == 401
26        assert e.msg == "Unauthorized"
27    else:
28        assert False
29
30    handler = HTTPBasicAuthHandler()
31    handler.add_password("Test", webapp.server.http.base, "admin", "admin")
32    opener = build_opener(handler)
33    install_opener(opener)
34
35    f = urlopen(webapp.server.http.base)
36    s = f.read()
37    assert s == b"Hello World!"
38    install_opener(None)
39