summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/XMLHttpRequest/resources/authentication.py
blob: 4f65fa23d2c42481e6d610b8640bdcab84278420 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
def main(request, response):
    if "logout" in request.GET:
        return ((401, "Unauthorized"),
                [("WWW-Authenticate", 'Basic realm="test"')],
                "Logged out, hopefully")

    session_user = request.auth.username
    session_pass = request.auth.password
    expected_user_name = request.headers.get("X-User", None)

    token = expected_user_name
    if session_user is None and session_pass is None:
        if token is not None and request.server.stash.take(token) is not None:
            return 'FAIL (did not authorize)'
        else:
            if token is not None:
                request.server.stash.put(token, "1")
            status = (401, 'Unauthorized')
            headers = [('WWW-Authenticate', 'Basic realm="test"'),
                       ('XHR-USER', expected_user_name),
                       ('SES-USER', session_user)]
            return status, headers, 'FAIL (should be transparent)'
    else:
        if request.server.stash.take(token) == "1":
            challenge = "DID"
        else:
            challenge = "DID-NOT"
        headers = [('XHR-USER', expected_user_name),
                   ('SES-USER', session_user),
                   ("X-challenge", challenge)]
        return headers, session_user + "\n" + session_pass;