mirror of
https://github.com/home-assistant/core.git
synced 2025-07-29 08:07:45 +00:00
Adjust get_mac routine in SamsungTV (#67804)
Co-authored-by: epenet <epenet@users.noreply.github.com>
This commit is contained in:
parent
2d4ccddd99
commit
5b23b9a617
@ -50,9 +50,8 @@ KEY_PRESS_TIMEOUT = 1.2
|
|||||||
|
|
||||||
def mac_from_device_info(info: dict[str, Any]) -> str | None:
|
def mac_from_device_info(info: dict[str, Any]) -> str | None:
|
||||||
"""Extract the mac address from the device info."""
|
"""Extract the mac address from the device info."""
|
||||||
dev_info = info.get("device", {})
|
if wifi_mac := info.get("device", {}).get("wifiMac"):
|
||||||
if dev_info.get("networkType") == "wireless" and dev_info.get("wifiMac"):
|
return format_mac(wifi_mac)
|
||||||
return format_mac(dev_info["wifiMac"])
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
@ -33,3 +33,43 @@ SAMPLE_DEVICE_INFO_WIFI = {
|
|||||||
"networkType": "wireless",
|
"networkType": "wireless",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SAMPLE_DEVICE_INFO_FRAME = {
|
||||||
|
"device": {
|
||||||
|
"FrameTVSupport": "true",
|
||||||
|
"GamePadSupport": "true",
|
||||||
|
"ImeSyncedSupport": "true",
|
||||||
|
"OS": "Tizen",
|
||||||
|
"TokenAuthSupport": "true",
|
||||||
|
"VoiceSupport": "true",
|
||||||
|
"countryCode": "FR",
|
||||||
|
"description": "Samsung DTV RCR",
|
||||||
|
"developerIP": "0.0.0.0",
|
||||||
|
"developerMode": "0",
|
||||||
|
"duid": "uuid:be9554b9-c9fb-41f4-8920-22da015376a4",
|
||||||
|
"firmwareVersion": "Unknown",
|
||||||
|
"id": "uuid:be9554b9-c9fb-41f4-8920-22da015376a4",
|
||||||
|
"ip": "1.2.3.4",
|
||||||
|
"model": "17_KANTM_UHD",
|
||||||
|
"modelName": "UE43LS003",
|
||||||
|
"name": "[TV] Samsung Frame (43)",
|
||||||
|
"networkType": "wired",
|
||||||
|
"resolution": "3840x2160",
|
||||||
|
"smartHubAgreement": "true",
|
||||||
|
"type": "Samsung SmartTV",
|
||||||
|
"udn": "uuid:be9554b9-c9fb-41f4-8920-22da015376a4",
|
||||||
|
"wifiMac": "aa:ee:tt:hh:ee:rr",
|
||||||
|
},
|
||||||
|
"id": "uuid:be9554b9-c9fb-41f4-8920-22da015376a4",
|
||||||
|
"isSupport": (
|
||||||
|
'{"DMP_DRM_PLAYREADY":"false","DMP_DRM_WIDEVINE":"false","DMP_available":"true",'
|
||||||
|
'"EDEN_available":"true","FrameTVSupport":"true","ImeSyncedSupport":"true",'
|
||||||
|
'"TokenAuthSupport":"true","remote_available":"true","remote_fourDirections":"true",'
|
||||||
|
'"remote_touchPad":"true","remote_voiceControl":"true"}\n'
|
||||||
|
),
|
||||||
|
"name": "[TV] Samsung Frame (43)",
|
||||||
|
"remote": "1.0",
|
||||||
|
"type": "Samsung SmartTV",
|
||||||
|
"uri": "https://1.2.3.4:8002/api/v2/",
|
||||||
|
"version": "2.0.25",
|
||||||
|
}
|
||||||
|
@ -44,7 +44,7 @@ from homeassistant.const import (
|
|||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.setup import async_setup_component
|
from homeassistant.setup import async_setup_component
|
||||||
|
|
||||||
from .const import SAMPLE_APP_LIST
|
from .const import SAMPLE_APP_LIST, SAMPLE_DEVICE_INFO_FRAME
|
||||||
|
|
||||||
from tests.common import MockConfigEntry
|
from tests.common import MockConfigEntry
|
||||||
|
|
||||||
@ -697,7 +697,7 @@ async def test_import_unknown_host(hass: HomeAssistant):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.usefixtures("remote", "remotews")
|
@pytest.mark.usefixtures("remote", "remotews")
|
||||||
async def test_dhcp(hass: HomeAssistant) -> None:
|
async def test_dhcp_wireless(hass: HomeAssistant) -> None:
|
||||||
"""Test starting a flow from dhcp."""
|
"""Test starting a flow from dhcp."""
|
||||||
# confirm to add the entry
|
# confirm to add the entry
|
||||||
result = await hass.config_entries.flow.async_init(
|
result = await hass.config_entries.flow.async_init(
|
||||||
@ -723,6 +723,35 @@ async def test_dhcp(hass: HomeAssistant) -> None:
|
|||||||
assert result["result"].unique_id == "be9554b9-c9fb-41f4-8920-22da015376a4"
|
assert result["result"].unique_id == "be9554b9-c9fb-41f4-8920-22da015376a4"
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.usefixtures("remote", "remotews")
|
||||||
|
async def test_dhcp_wired(hass: HomeAssistant, rest_api: Mock) -> None:
|
||||||
|
"""Test starting a flow from dhcp."""
|
||||||
|
# Even though it is named "wifiMac", it matches the mac of the wired connection
|
||||||
|
rest_api.rest_device_info.return_value = SAMPLE_DEVICE_INFO_FRAME
|
||||||
|
# confirm to add the entry
|
||||||
|
result = await hass.config_entries.flow.async_init(
|
||||||
|
DOMAIN,
|
||||||
|
context={"source": config_entries.SOURCE_DHCP},
|
||||||
|
data=MOCK_DHCP_DATA,
|
||||||
|
)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
assert result["type"] == "form"
|
||||||
|
assert result["step_id"] == "confirm"
|
||||||
|
|
||||||
|
# entry was added
|
||||||
|
result = await hass.config_entries.flow.async_configure(
|
||||||
|
result["flow_id"], user_input="whatever"
|
||||||
|
)
|
||||||
|
assert result["type"] == "create_entry"
|
||||||
|
assert result["title"] == "Samsung Frame (43) (UE43LS003)"
|
||||||
|
assert result["data"][CONF_HOST] == "fake_host"
|
||||||
|
assert result["data"][CONF_NAME] == "Samsung Frame (43)"
|
||||||
|
assert result["data"][CONF_MAC] == "aa:ee:tt:hh:ee:rr"
|
||||||
|
assert result["data"][CONF_MANUFACTURER] == "Samsung"
|
||||||
|
assert result["data"][CONF_MODEL] == "UE43LS003"
|
||||||
|
assert result["result"].unique_id == "be9554b9-c9fb-41f4-8920-22da015376a4"
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.usefixtures("remote", "remotews")
|
@pytest.mark.usefixtures("remote", "remotews")
|
||||||
async def test_zeroconf(hass: HomeAssistant) -> None:
|
async def test_zeroconf(hass: HomeAssistant) -> None:
|
||||||
"""Test starting a flow from zeroconf."""
|
"""Test starting a flow from zeroconf."""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user