# -*- coding: utf-8 -*- from __future__ import annotations import os import shutil import sys import tempfile import pytest _scripts = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "scripts") if _scripts not in sys.path: sys.path.insert(0, _scripts) from db.connection import get_conn, init_db # noqa: E402 from util.platforms import seed_platforms # noqa: E402 @pytest.fixture() def iso_seed_env(monkeypatch): tmp = tempfile.mkdtemp(prefix="seed_plat_") data_root = os.path.join(tmp, "claw-data") os.makedirs(data_root) uid = "seed_user_1" monkeypatch.setenv("JIANGCHANG_DATA_ROOT", data_root) monkeypatch.setenv("JIANGCHANG_USER_ID", uid) monkeypatch.setenv("CLAW_DATA_ROOT", data_root) monkeypatch.setenv("CLAW_USER_ID", uid) yield shutil.rmtree(tmp, ignore_errors=True) def _default_auth_maersk() -> str | None: conn = get_conn() try: row = conn.execute( "SELECT default_auth_strategy FROM platforms WHERE platform_key = ?", ("maersk",), ).fetchone() return row[0] if row else None finally: conn.close() def test_default_auth_strategy_filled_on_first_seed(iso_seed_env): init_db() conn = get_conn() try: seed_platforms(conn) finally: conn.close() assert _default_auth_maersk() == "qr_code_manual" def test_default_auth_strategy_updated_on_reseed(iso_seed_env): init_db() conn = get_conn() try: seed_platforms(conn) conn.execute( "UPDATE platforms SET default_auth_strategy = ? WHERE platform_key = ?", ("password_auto", "maersk"), ) conn.commit() seed_platforms(conn) finally: conn.close() assert _default_auth_maersk() == "qr_code_manual"