Fix Tesla Fleet token refresh handling for expired tokens#165354
Open
Bre77 wants to merge 4 commits intohome-assistant:devfrom
Open
Fix Tesla Fleet token refresh handling for expired tokens#165354Bre77 wants to merge 4 commits intohome-assistant:devfrom
Bre77 wants to merge 4 commits intohome-assistant:devfrom
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR adjusts the Tesla Fleet integration’s token refresh/error handling to better distinguish setup-time OAuth failures from runtime token expiry, and expands test coverage for these behaviors.
Changes:
- Refactors setup product fetching into
_async_get_products()with consistent region fallback and explicit mapping of OAuth refresh exceptions to Home Assistant config-entry exceptions. - Updates coordinators to treat
InvalidToken/OAuthExpiredas recoverable at runtime by invalidating cachedexpires_atto trigger a refresh on the next request, instead of forcing reauthentication. - Expands/updates tests to cover OAuth refresh exceptions during setup and recovery behavior for vehicle and energy coordinators.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
homeassistant/components/tesla_fleet/__init__.py |
Adds _async_get_products() and maps OAuth refresh failures to ConfigEntryAuthFailed/ConfigEntryNotReady during setup with region fallback. |
homeassistant/components/tesla_fleet/coordinator.py |
Invalidates cached token expiry on InvalidToken/OAuthExpired so runtime updates can recover via refresh, while preserving reauth behavior for LoginRequired. |
tests/components/tesla_fleet/test_init.py |
Updates setup/runtime error parametrization and adds recovery tests asserting expires_at invalidation and subsequent coordinator recovery. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Proposed change
This change fixes Tesla Fleet token refresh handling for setup and runtime coordinator updates.
During setup, OAuth token failures are now mapped to Home Assistant OAuth exceptions and product fetching is retried with the existing region-discovery fallback.
During runtime refreshes, invalid or expired access tokens now invalidate the cached
expires_atvalue so the next request triggers token refresh instead of forcing immediate reauthentication.The test suite was expanded to cover OAuth refresh exceptions and recovery behavior for both vehicle and energy coordinators.
Type of change
Additional information
Checklist
ruff format homeassistant tests)If user exposed functionality or configuration variables are added/changed:
If the code communicates with devices, web services, or third-party tools:
Updated and included derived files by running:
python3 -m script.hassfest.requirements_all.txt.Updated by running
python3 -m script.gen_requirements_all.To help with the load of incoming pull requests: