50 lines
1.7 KiB
Python
50 lines
1.7 KiB
Python
|
# -*- encoding: utf-8 -*-
|
||
|
from sanic.sessions import SecureCookieSessionInterface
|
||
|
from sanic import Sanic
|
||
|
from sanic.views import HTTPMethodView
|
||
|
from sanic.response import text
|
||
|
from sanic.request import Request
|
||
|
from http.cookies import SimpleCookie
|
||
|
|
||
|
|
||
|
def test_sessions():
|
||
|
app = Sanic("test_sessions")
|
||
|
|
||
|
class DummyView(HTTPMethodView):
|
||
|
async def get(self, request):
|
||
|
"""method to check session value"""
|
||
|
value = request.session.get('value')
|
||
|
if value is None:
|
||
|
return text("No Value")
|
||
|
else:
|
||
|
return text("Value is: {}".format(value))
|
||
|
|
||
|
async def post(self, request: Request):
|
||
|
"""method to set session value"""
|
||
|
value = request.args.get('value')
|
||
|
if value is None:
|
||
|
return text("no args value")
|
||
|
else:
|
||
|
request.session['value'] = value
|
||
|
return text("set value to {}".format(value))
|
||
|
|
||
|
async def delete(self, request: Request):
|
||
|
"""method to delete session value"""
|
||
|
del request.session['value']
|
||
|
return text('deleled value.')
|
||
|
|
||
|
app.add_route(DummyView.as_view(), '/')
|
||
|
client = app.test_client
|
||
|
_, response = client.get('/')
|
||
|
assert response.text == "No Value"
|
||
|
_, response = client.post('/?value=123')
|
||
|
# TODO: TestClient not support cookie, need fix.
|
||
|
header = response.headers.get('Set-Cookie')
|
||
|
response_cookies = SimpleCookie()
|
||
|
response_cookies.load(header)
|
||
|
assert response.text == "set value to 123"
|
||
|
assert 'session' in response_cookies
|
||
|
|
||
|
_, response = client.get(cookies=response_cookies)
|
||
|
assert response.text == "Value is: 123"
|