diff --git a/homeassistant/components/teslemetry/device_tracker.py b/homeassistant/components/teslemetry/device_tracker.py index 6a758e68497..bb90a7b19bd 100644 --- a/homeassistant/components/teslemetry/device_tracker.py +++ b/homeassistant/components/teslemetry/device_tracker.py @@ -5,6 +5,7 @@ from __future__ import annotations from collections.abc import Callable from dataclasses import dataclass +from tesla_fleet_api.const import Scope from teslemetry_stream import TeslemetryStreamVehicle from teslemetry_stream.const import TeslaLocation @@ -75,6 +76,10 @@ async def async_setup_entry( entities: list[ TeslemetryPollingDeviceTrackerEntity | TeslemetryStreamingDeviceTrackerEntity ] = [] + # Only add vehicle location entities if the user has granted vehicle location scope. + if Scope.VEHICLE_LOCATION not in entry.runtime_data.scopes: + return + for vehicle in entry.runtime_data.vehicles: for description in DESCRIPTIONS: if vehicle.api.pre2021 or vehicle.firmware < description.streaming_firmware: diff --git a/tests/components/teslemetry/const.py b/tests/components/teslemetry/const.py index a7cd5b7a39c..b658c1e2271 100644 --- a/tests/components/teslemetry/const.py +++ b/tests/components/teslemetry/const.py @@ -45,6 +45,7 @@ METADATA = { "vehicle_device_data", "vehicle_cmds", "vehicle_charging_cmds", + "vehicle_location", "energy_device_data", "energy_cmds", ], diff --git a/tests/components/teslemetry/snapshots/test_diagnostics.ambr b/tests/components/teslemetry/snapshots/test_diagnostics.ambr index a39e8a0ff74..6b02b2f6d83 100644 --- a/tests/components/teslemetry/snapshots/test_diagnostics.ambr +++ b/tests/components/teslemetry/snapshots/test_diagnostics.ambr @@ -191,6 +191,7 @@ 'vehicle_device_data', 'vehicle_cmds', 'vehicle_charging_cmds', + 'vehicle_location', 'energy_device_data', 'energy_cmds', ]), diff --git a/tests/components/teslemetry/test_device_tracker.py b/tests/components/teslemetry/test_device_tracker.py index 38a28092d33..ea0ee08e64f 100644 --- a/tests/components/teslemetry/test_device_tracker.py +++ b/tests/components/teslemetry/test_device_tracker.py @@ -11,7 +11,7 @@ from homeassistant.core import HomeAssistant from homeassistant.helpers import entity_registry as er from . import assert_entities, assert_entities_alt, setup_platform -from .const import VEHICLE_DATA_ALT +from .const import METADATA_NOSCOPE, VEHICLE_DATA_ALT @pytest.mark.usefixtures("entity_registry_enabled_by_default") @@ -42,6 +42,23 @@ async def test_device_tracker_alt( assert_entities_alt(hass, entry.entry_id, entity_registry, snapshot) +@pytest.mark.usefixtures("entity_registry_enabled_by_default") +async def test_device_tracker_noscope( + hass: HomeAssistant, + snapshot: SnapshotAssertion, + entity_registry: er.EntityRegistry, + mock_metadata: AsyncMock, + mock_vehicle_data: AsyncMock, + mock_legacy: AsyncMock, +) -> None: + """Tests that the device tracker entities are correct.""" + + mock_metadata.return_value = METADATA_NOSCOPE + entry = await setup_platform(hass, [Platform.DEVICE_TRACKER]) + entity_entries = er.async_entries_for_config_entry(entity_registry, entry.entry_id) + assert len(entity_entries) == 0 + + @pytest.mark.usefixtures("entity_registry_enabled_by_default") async def test_device_tracker_streaming( hass: HomeAssistant,