mirror of
https://github.com/home-assistant/core.git
synced 2025-12-24 21:06:19 +00:00
Support blocking trusted network from new ip (#44630)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
This commit is contained in:
@@ -14,6 +14,7 @@ import requests_mock as _requests_mock
|
||||
|
||||
from homeassistant import core as ha, loader, runner, util
|
||||
from homeassistant.auth.const import GROUP_ID_ADMIN, GROUP_ID_READ_ONLY
|
||||
from homeassistant.auth.models import Credentials
|
||||
from homeassistant.auth.providers import homeassistant, legacy_api_password
|
||||
from homeassistant.components import mqtt
|
||||
from homeassistant.components.websocket_api.auth import (
|
||||
@@ -201,10 +202,20 @@ def mock_device_tracker_conf():
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def hass_access_token(hass, hass_admin_user):
|
||||
async def hass_admin_credential(hass, local_auth):
|
||||
"""Provide credentials for admin user."""
|
||||
await hass.async_add_executor_job(local_auth.data.add_auth, "admin", "admin-pass")
|
||||
|
||||
return await local_auth.async_get_or_create_credentials({"username": "admin"})
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
async def hass_access_token(hass, hass_admin_user, hass_admin_credential):
|
||||
"""Return an access token to access Home Assistant."""
|
||||
refresh_token = hass.loop.run_until_complete(
|
||||
hass.auth.async_create_refresh_token(hass_admin_user, CLIENT_ID)
|
||||
await hass.auth.async_link_user(hass_admin_user, hass_admin_credential)
|
||||
|
||||
refresh_token = await hass.auth.async_create_refresh_token(
|
||||
hass_admin_user, CLIENT_ID, credential=hass_admin_credential
|
||||
)
|
||||
return hass.auth.async_create_access_token(refresh_token)
|
||||
|
||||
@@ -234,10 +245,21 @@ def hass_read_only_user(hass, local_auth):
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def hass_read_only_access_token(hass, hass_read_only_user):
|
||||
def hass_read_only_access_token(hass, hass_read_only_user, local_auth):
|
||||
"""Return a Home Assistant read only user."""
|
||||
credential = Credentials(
|
||||
id="mock-readonly-credential-id",
|
||||
auth_provider_type="homeassistant",
|
||||
auth_provider_id=None,
|
||||
data={"username": "readonly"},
|
||||
is_new=False,
|
||||
)
|
||||
hass_read_only_user.credentials.append(credential)
|
||||
|
||||
refresh_token = hass.loop.run_until_complete(
|
||||
hass.auth.async_create_refresh_token(hass_read_only_user, CLIENT_ID)
|
||||
hass.auth.async_create_refresh_token(
|
||||
hass_read_only_user, CLIENT_ID, credential=credential
|
||||
)
|
||||
)
|
||||
return hass.auth.async_create_access_token(refresh_token)
|
||||
|
||||
@@ -260,6 +282,7 @@ def local_auth(hass):
|
||||
prv = homeassistant.HassAuthProvider(
|
||||
hass, hass.auth._store, {"type": "homeassistant"}
|
||||
)
|
||||
hass.loop.run_until_complete(prv.async_initialize())
|
||||
hass.auth._providers[(prv.type, prv.id)] = prv
|
||||
return prv
|
||||
|
||||
|
||||
Reference in New Issue
Block a user