"""Tests de base pour le système de souscription."""

import pytest

from web_sentinel.subscription import SubscriptionManager, SubscriptionTier
from web_sentinel.subscription.validator import LicenseValidator, LicenseError


def test_free_tier_domain_limit():
    manager = SubscriptionManager("user123", tier=SubscriptionTier.FREE)
    assert manager.get_domain_limit() == 3
    assert not manager.can_use_invasive_tests()
    assert not manager.can_export_html()


def test_pro_tier_features():
    manager = SubscriptionManager("user456", tier="pro")
    assert manager.get_domain_limit() == -1  # unlimited
    assert manager.can_use_invasive_tests()
    assert manager.can_export_html()
    assert not manager.can_use_api()


def test_enterprise_tier_features():
    manager = SubscriptionManager("user789", tier="enterprise")
    assert manager.can_use_api()
    assert manager.can_manage_users()
    assert manager.can_export_html()


def test_validator_raises_for_forbidden_features():
    manager = SubscriptionManager("user", tier="free")
    validator = LicenseValidator(manager)

    with pytest.raises(LicenseError):
        validator.ensure_invasive_tests_allowed()
