Пример #1
0
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"
Пример #2
0
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
Пример #3
0
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": "******"}
Пример #4
0
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
Пример #5
0
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"}}
Пример #6
0
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
Пример #7
0
def test_session(json_request):
    json_request.scope["session"] = Session(InMemoryBackend())
    assert isinstance(json_request.session, Session)
Пример #8
0
def in_memory_session(in_memory):
    session = Session(in_memory)
    session.is_loaded = True
    return session
Пример #9
0
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
Пример #10
0
async def test_session_load_with_new_session(in_memory, session_payload):
    session = Session(in_memory)
    await session.load()
    assert len(session.keys()) == 0
Пример #11
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()