snipe/tests/platforms/test_ebay_auth.py
pyr0ball eb05be0612
Some checks are pending
CI / API — lint + test (pull_request) Waiting to run
CI / Web — typecheck + test + build (pull_request) Waiting to run
feat: wire Forgejo Actions CI/CD workflows (#22)
- ci.yml: API lint (ruff F+I) + pytest, web vue-tsc + vitest + build
- mirror.yml: push to GitHub (CircuitForgeLLC) + Codeberg (CircuitForge) on main/tags
- release.yml: Docker build → Forgejo registry + release via API; GHCR deferred pending BSL policy (cf-agents#3)
- .cliff.toml: git-cliff changelog config for semver releases
- pyproject.toml: add [dev] extras (pytest, ruff), ruff config
- Fix 45 ruff violations across codebase (import sorting, unused vars, unused imports)
2026-04-06 00:00:28 -07:00

48 lines
1.9 KiB
Python

import time
from unittest.mock import MagicMock, patch
import pytest
import requests
from app.platforms.ebay.auth import EbayTokenManager
def test_fetches_token_on_first_call():
manager = EbayTokenManager(client_id="id", client_secret="secret", env="sandbox")
mock_resp = MagicMock()
mock_resp.json.return_value = {"access_token": "tok123", "expires_in": 7200}
mock_resp.raise_for_status = MagicMock()
with patch("app.platforms.ebay.auth.requests.post", return_value=mock_resp) as mock_post:
token = manager.get_token()
assert token == "tok123"
assert mock_post.called
def test_returns_cached_token_before_expiry():
manager = EbayTokenManager(client_id="id", client_secret="secret", env="sandbox")
manager._token = "cached"
manager._expires_at = time.time() + 3600
with patch("app.platforms.ebay.auth.requests.post") as mock_post:
token = manager.get_token()
assert token == "cached"
assert not mock_post.called
def test_refreshes_token_after_expiry():
manager = EbayTokenManager(client_id="id", client_secret="secret", env="sandbox")
manager._token = "old"
manager._expires_at = time.time() - 1 # expired
mock_resp = MagicMock()
mock_resp.json.return_value = {"access_token": "new_tok", "expires_in": 7200}
mock_resp.raise_for_status = MagicMock()
with patch("app.platforms.ebay.auth.requests.post", return_value=mock_resp):
token = manager.get_token()
assert token == "new_tok"
def test_token_fetch_failure_raises():
"""Spec requires: on token fetch failure, raise immediately — no silent fallback."""
manager = EbayTokenManager(client_id="id", client_secret="secret", env="sandbox")
with patch("app.platforms.ebay.auth.requests.post", side_effect=requests.RequestException("network error")):
with pytest.raises(requests.RequestException):
manager.get_token()