mirror of
https://github.com/home-assistant/core.git
synced 2025-08-07 14:45:09 +02:00
Remove async_entry_has_scopes check
This is not needed. This was copied from google calendar integration where it was needed to reauth when the scope changed.
This commit is contained in:
@@ -21,7 +21,7 @@ from homeassistant.helpers.config_entry_oauth2_flow import (
|
|||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
from homeassistant.helpers.selector import ConfigEntrySelector
|
from homeassistant.helpers.selector import ConfigEntrySelector
|
||||||
|
|
||||||
from .const import DATA_CONFIG_ENTRY, DEFAULT_ACCESS, DOMAIN
|
from .const import DATA_CONFIG_ENTRY, DOMAIN
|
||||||
|
|
||||||
DATA = "data"
|
DATA = "data"
|
||||||
WORKSHEET = "worksheet"
|
WORKSHEET = "worksheet"
|
||||||
@@ -51,9 +51,6 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||||||
raise ConfigEntryNotReady from err
|
raise ConfigEntryNotReady from err
|
||||||
except aiohttp.ClientError as err:
|
except aiohttp.ClientError as err:
|
||||||
raise ConfigEntryNotReady from err
|
raise ConfigEntryNotReady from err
|
||||||
|
|
||||||
if not async_entry_has_scopes(hass, entry):
|
|
||||||
raise ConfigEntryAuthFailed("Required scopes are not present, reauth required")
|
|
||||||
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = session
|
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = session
|
||||||
|
|
||||||
await async_setup_service(hass)
|
await async_setup_service(hass)
|
||||||
@@ -61,11 +58,6 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
def async_entry_has_scopes(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|
||||||
"""Verify that the config entry desired scope is present in the oauth token."""
|
|
||||||
return DEFAULT_ACCESS in entry.data.get(CONF_TOKEN, {}).get("scope", "").split(" ")
|
|
||||||
|
|
||||||
|
|
||||||
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||||
"""Unload a config entry."""
|
"""Unload a config entry."""
|
||||||
hass.data[DOMAIN].pop(entry.entry_id)
|
hass.data[DOMAIN].pop(entry.entry_id)
|
||||||
|
@@ -13,7 +13,7 @@ from homeassistant.const import CONF_ACCESS_TOKEN, CONF_TOKEN
|
|||||||
from homeassistant.data_entry_flow import FlowResult
|
from homeassistant.data_entry_flow import FlowResult
|
||||||
from homeassistant.helpers import config_entry_oauth2_flow
|
from homeassistant.helpers import config_entry_oauth2_flow
|
||||||
|
|
||||||
from .const import DEFAULT_ACCESS, DEFAULT_NAME, DOMAIN
|
from .const import DEFAULT_NAME, DOMAIN
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@ class OAuth2FlowHandler(
|
|||||||
def extra_authorize_data(self) -> dict[str, Any]:
|
def extra_authorize_data(self) -> dict[str, Any]:
|
||||||
"""Extra data that needs to be appended to the authorize url."""
|
"""Extra data that needs to be appended to the authorize url."""
|
||||||
return {
|
return {
|
||||||
"scope": DEFAULT_ACCESS,
|
"scope": "https://www.googleapis.com/auth/drive.file",
|
||||||
# Add params to ensure we get back a refresh token
|
# Add params to ensure we get back a refresh token
|
||||||
"access_type": "offline",
|
"access_type": "offline",
|
||||||
"prompt": "consent",
|
"prompt": "consent",
|
||||||
|
@@ -7,4 +7,3 @@ DOMAIN = "google_sheets"
|
|||||||
|
|
||||||
DATA_CONFIG_ENTRY: Final = "config_entry"
|
DATA_CONFIG_ENTRY: Final = "config_entry"
|
||||||
DEFAULT_NAME = "Google Sheets"
|
DEFAULT_NAME = "Google Sheets"
|
||||||
DEFAULT_ACCESS = "https://www.googleapis.com/auth/drive.file"
|
|
||||||
|
@@ -95,32 +95,6 @@ async def test_setup_success(
|
|||||||
assert not len(hass.services.async_services().get(DOMAIN, {}))
|
assert not len(hass.services.async_services().get(DOMAIN, {}))
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
|
||||||
"scopes",
|
|
||||||
[
|
|
||||||
[],
|
|
||||||
[
|
|
||||||
"https://www.googleapis.com/auth/drive.file+plus+extra"
|
|
||||||
], # Required scope is a prefix
|
|
||||||
["https://www.googleapis.com/auth/drive.readonly"],
|
|
||||||
],
|
|
||||||
ids=["no_scope", "required_scope_prefix", "other_scope"],
|
|
||||||
)
|
|
||||||
async def test_missing_required_scopes_requires_reauth(
|
|
||||||
hass: HomeAssistant, setup_integration: ComponentSetup
|
|
||||||
) -> None:
|
|
||||||
"""Test that reauth is invoked when required scopes are not present."""
|
|
||||||
await setup_integration()
|
|
||||||
|
|
||||||
entries = hass.config_entries.async_entries(DOMAIN)
|
|
||||||
assert len(entries) == 1
|
|
||||||
assert entries[0].state is ConfigEntryState.SETUP_ERROR
|
|
||||||
|
|
||||||
flows = hass.config_entries.flow.async_progress()
|
|
||||||
assert len(flows) == 1
|
|
||||||
assert flows[0]["step_id"] == "reauth_confirm"
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("expires_at", [time.time() - 3600], ids=["expired"])
|
@pytest.mark.parametrize("expires_at", [time.time() - 3600], ids=["expired"])
|
||||||
async def test_expired_token_refresh_success(
|
async def test_expired_token_refresh_success(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
|
Reference in New Issue
Block a user