49 lines
1.5 KiB
Python
49 lines
1.5 KiB
Python
"""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
|