Plain is headed towards 1.0! Subscribe for development updates →

 1from http.cookies import SimpleCookie
 2
 3from plain.http.request import HttpRequest
 4from plain.runtime import settings
 5from plain.sessions import SessionStore
 6
 7from .sessions import get_user, login, logout
 8
 9
10def login_client(client, user):
11    """Log a user into a test client."""
12    request = HttpRequest()
13    if client.session:
14        request.session = client.session
15    else:
16        request.session = SessionStore()
17    login(request, user)
18    request.session.save()
19    session_cookie = settings.SESSION_COOKIE_NAME
20    client.cookies[session_cookie] = request.session.session_key
21    cookie_data = {
22        "max-age": None,
23        "path": "/",
24        "domain": settings.SESSION_COOKIE_DOMAIN,
25        "secure": settings.SESSION_COOKIE_SECURE or None,
26        "expires": None,
27    }
28    client.cookies[session_cookie].update(cookie_data)
29
30
31def logout_client(client):
32    """Log out a user from a test client."""
33    request = HttpRequest()
34    if client.session:
35        request.session = client.session
36        request.user = get_user(request)
37    else:
38        request.session = SessionStore()
39    logout(request)
40    client.cookies = SimpleCookie()