Enhance OAuth client to support scope options and update related tests

This commit is contained in:
claudi 2026-04-07 09:38:15 +02:00
parent 1a9f924764
commit bebf99d826
5 changed files with 80 additions and 15 deletions

View file

@ -33,3 +33,19 @@ def test_get_valid_token_reuses_unexpired_token() -> None:
token = client.get_valid_token(scopes=["scope.a"])
assert token.access_token == "cached-token"
def test_get_valid_token_reuses_token_when_any_scope_option_matches() -> None:
config = EbayOAuthConfig(client_id="client-id", client_secret="client-secret")
store = InMemoryTokenStore()
store.set_token(OAuthToken(access_token="cached-token", scope="scope.base scope.write"))
client = EbayOAuthClient(config, token_store=store)
token = client.get_valid_token(
scope_options=[
["scope.base", "scope.read"],
["scope.base", "scope.write"],
]
)
assert token.access_token == "cached-token"

View file

@ -30,8 +30,19 @@ from ebay_client.notification.client import NotificationClient
class DummyOAuthClient:
def get_valid_token(self, *, scopes: list[str] | None = None) -> OAuthToken:
return OAuthToken(access_token="test-token", scope=" ".join(scopes or []))
def get_valid_token(
self,
*,
scopes: list[str] | None = None,
scope_options: list[list[str]] | None = None,
) -> OAuthToken:
if scopes:
resolved_scopes = scopes
elif scope_options:
resolved_scopes = scope_options[0]
else:
resolved_scopes = []
return OAuthToken(access_token="test-token", scope=" ".join(resolved_scopes))
def build_transport() -> ApiTransport: