#!/usr/bin/env python3

from datetime import timedelta

import pytest
import tentacles.store as s


@pytest.yield_fixture
def store():
    conn = s.Store(":memory:")
    conn.connect()
    yield conn
    conn.close()


@pytest.fixture
def username_testy():
    return "testy@test.com"


@pytest.fixture
def password_testy():
    return "testpw"


@pytest.fixture
def uid_testy(store: s.Store, username_testy, password_testy):
    with store.savepoint():
        return store.try_create_user(
            username=username_testy,
            email=username_testy,
            password=password_testy,
            sid=1,
        ).id


@pytest.fixture
def login_ttl():
    return timedelta(hours=12)


@pytest.fixture
def sid_testy(store, uid_testy, username_testy, password_testy, login_ttl):
    with store.savepoint():
        return store.try_login(
            username=username_testy, password=password_testy, ttl=login_ttl
        ).id