"""Test OAuth configuration schema."""
import pytest
from nanobot.config.schema import ProviderConfig, OAuthCredentials


def test_provider_config_has_oauth_fields():
    """ProviderConfig should have oauth_credentials field."""
    config = ProviderConfig(api_key="test")
    assert hasattr(config, "oauth_credentials")
    assert config.oauth_credentials is None


def test_oauth_credentials_model():
    """OAuthCredentials should store token, refresh, expiry."""
    creds = OAuthCredentials(
        access_token="sk-ant-oat01-xxx",
        refresh_token="rt_xxx",
        expires_at=1234567890,
        token_type="oauth"
    )
    assert creds.access_token.startswith("sk-ant-oat")
    assert creds.is_oauth_token is True


def test_oauth_credentials_expiry_check():
    """OAuthCredentials should detect expired tokens."""
    import time
    expired = OAuthCredentials(
        access_token="sk-ant-oat01-xxx",
        expires_at=int(time.time()) - 3600  # 1 hour ago
    )
    assert expired.is_expired is True

    valid = OAuthCredentials(
        access_token="sk-ant-oat01-xxx",
        expires_at=int(time.time()) + 3600  # 1 hour from now
    )
    assert valid.is_expired is False


def test_oauth_credentials_no_expiry():
    """Setup tokens with expires_at=0 should never be expired."""
    creds = OAuthCredentials(
        access_token="sk-ant-oat01-xxx",
        expires_at=0  # No expiry (setup-token)
    )
    assert creds.is_expired is False
    assert creds.expires_soon is False
