import io import pytest from PIL import Image from soapbox import db from soapbox.app import create_app from soapbox.config import load_config @pytest.fixture def cfg(tmp_path): return load_config( {"SOAPBOX_DATA_DIR": str(tmp_path / "data"), "SOAPBOX_SITE_URL": "https://blog.example.no"} ) @pytest.fixture def app(cfg): app = create_app(cfg) app.config["TESTING"] = True conn = db.connect(cfg.db_path) db.create_user(conn, "eier", "hemmelig123", db.ROLE_OWNER, "Ole") db.create_user(conn, "gjest1", "hemmelig123", db.ROLE_GUEST, "Gjest En") conn.close() return app @pytest.fixture def client(app): return app.test_client() def login(client, username="eier", password="hemmelig123", prefix=""): client.get(f"{prefix}/admin/login") # gir sesjonen et CSRF-token return client.post( f"{prefix}/admin/login", data={"username": username, "password": password, "csrf": csrf(client, prefix)}, ) def csrf(client, prefix=""): with client.session_transaction(path=f"{prefix}/admin/") as s: return s["csrf"] def png_bytes(size=(3000, 1500)): buf = io.BytesIO() Image.new("RGB", size, "green").save(buf, "PNG") return buf.getvalue()