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()