"""Tests autour des backends de licence et du basculement PostgreSQL."""

import importlib
import sqlite3

from web_sentinel.license import backends
from web_sentinel.subscription.manager import SubscriptionManager


def test_load_backend_postgresql(monkeypatch):
    monkeypatch.setenv("WEB_SENTINEL_SUBSCRIPTION_BACKEND", "postgresql")
    monkeypatch.setenv("WEB_SENTINEL_POSTGRES_URL", "postgresql://user:pw@host:5432/db")

    importlib.reload(backends)
    backend = backends.load_backend()

    assert backend.name == "postgresql"


def test_subscription_manager_ignores_local_db_when_disabled(tmp_path, monkeypatch):
    db_path = tmp_path / "auth.db"
    conn = sqlite3.connect(db_path)
    conn.execute(
        "CREATE TABLE user_subscriptions (email TEXT, tier TEXT, expires_at TEXT)"
    )
    conn.execute(
        "INSERT INTO user_subscriptions (email, tier, expires_at) VALUES (?, ?, ?)",
        ("user@example.com", "enterprise", None),
    )
    conn.commit()
    conn.close()

    monkeypatch.setenv("WEB_SENTINEL_SUBSCRIPTION_DB", str(db_path))
    monkeypatch.setenv("WEB_SENTINEL_DISABLE_LOCAL_DB", "1")

    manager = SubscriptionManager("user@example.com", tier="pro")

    # La base locale existe mais doit être ignorée : on reste sur le tier fourni.
    assert manager.tier.value == "pro"
