def test_session_denies_access_if_not_loaded(): session = Session(in_memory) with pytest.raises(SessionNotLoaded): session.data.keys() with pytest.raises(SessionNotLoaded): session["key"] = "value"
async def test_session_flush(in_memory): await in_memory.write({"key": "value"}, "session_id") session = Session(in_memory, "session_id") await session.load() new_id = await session.flush() assert new_id == session.session_id assert new_id != "session_id" assert session.is_modified is True assert session.is_empty is True # it shouldn't fail on non-persisted session session = Session(in_memory) await session.load() await session.flush() assert session.is_modified is True assert session.is_empty is True
async def test_old_data(json_request): session_id = "sid" json_request.scope["session"] = Session( InMemoryBackend({"sid": { "_redirect_data": { "user": "******" } }}), session_id) await json_request.session.load() assert json_request.old_data() == {"user": "******"}
async def test_session_delete(in_memory): await in_memory.write({}, "session_id") session = Session(in_memory, "session_id") await session.load() session["key"] = "value" await session.delete() assert await in_memory.exists("session_id") is False assert session.is_modified is True assert session.is_empty is True # it shouldn't fail on non-persisted session session = Session(in_memory) await session.load() await session.delete() assert session.is_empty is True assert session.is_modified is False
async def test_session_persist(in_memory): session = Session(in_memory, "session_id") await session.load() session["key"] = "value" new_id = await session.persist() # session ID should no change when was passed via arguments assert new_id == "session_id" assert in_memory.data == {"session_id": {"key": "value"}}
async def test_session_subsequent_load(in_memory): """It should return the cached data on any sequential call to load().""" await in_memory.write(dict(key="value"), "session_id") session = Session(in_memory, "session_id") await session.load() assert "key" in session # add key2 to session. this value should survive the second load() call session["key2"] = "value2" await session.load() assert "key" in session assert "key2" in session
def test_session(json_request): json_request.scope["session"] = Session(InMemoryBackend()) assert isinstance(json_request.session, Session)
def in_memory_session(in_memory): session = Session(in_memory) session.is_loaded = True return session
async def test_session_regenerate_id(in_memory): session = Session(in_memory, "session_id") new_id = await session.regenerate_id() assert session.session_id == new_id assert session.session_id != "session_id" assert session.is_modified is True
async def test_session_load_with_new_session(in_memory, session_payload): session = Session(in_memory) await session.load() assert len(session.keys()) == 0
async def test_session_load(in_memory, session_payload): await in_memory.write(session_payload, "session_id") session = Session(in_memory, "session_id") await session.load() assert session.items() == session_payload.items()