Review AndroidTV tests (#69048)
parent
25779a49a4
commit
21f9b19fad
|
@ -73,7 +73,8 @@ SERVICE_DOWNLOAD = "download"
|
|||
SERVICE_LEARN_SENDEVENT = "learn_sendevent"
|
||||
SERVICE_UPLOAD = "upload"
|
||||
|
||||
DEFAULT_NAME = "Android TV"
|
||||
PREFIX_ANDROIDTV = "Android TV"
|
||||
PREFIX_FIRETV = "Fire TV"
|
||||
|
||||
# Translate from `AndroidTV` / `FireTV` reported state to HA state.
|
||||
ANDROIDTV_STATES = {
|
||||
|
@ -93,7 +94,9 @@ async def async_setup_entry(
|
|||
"""Set up the Android TV entity."""
|
||||
aftv = hass.data[DOMAIN][entry.entry_id][ANDROID_DEV]
|
||||
device_class = aftv.DEVICE_CLASS
|
||||
device_type = "Android TV" if device_class == DEVICE_ANDROIDTV else "Fire TV"
|
||||
device_type = (
|
||||
PREFIX_ANDROIDTV if device_class == DEVICE_ANDROIDTV else PREFIX_FIRETV
|
||||
)
|
||||
# CONF_NAME may be present in entry.data for configuration imported from YAML
|
||||
device_name = entry.data.get(CONF_NAME) or f"{device_type} {entry.data[CONF_HOST]}"
|
||||
|
||||
|
|
|
@ -28,6 +28,7 @@ from homeassistant.components.androidtv.const import (
|
|||
CONF_TURN_ON_COMMAND,
|
||||
DEFAULT_ADB_SERVER_PORT,
|
||||
DEFAULT_PORT,
|
||||
DEVICE_ANDROIDTV,
|
||||
DOMAIN,
|
||||
PROP_ETHMAC,
|
||||
PROP_WIFIMAC,
|
||||
|
@ -35,8 +36,9 @@ from homeassistant.components.androidtv.const import (
|
|||
from homeassistant.config_entries import SOURCE_USER
|
||||
from homeassistant.const import CONF_DEVICE_CLASS, CONF_HOST, CONF_PORT
|
||||
|
||||
from .patchers import isfile
|
||||
|
||||
from tests.common import MockConfigEntry
|
||||
from tests.components.androidtv.patchers import isfile
|
||||
|
||||
ADBKEY = "adbkey"
|
||||
ETH_MAC = "a1:b1:c1:d1:e1:f1"
|
||||
|
@ -49,14 +51,14 @@ VALID_DETECT_RULE = [{"paused": {"media_session_state": 3}}]
|
|||
CONFIG_PYTHON_ADB = {
|
||||
CONF_HOST: HOST,
|
||||
CONF_PORT: DEFAULT_PORT,
|
||||
CONF_DEVICE_CLASS: "androidtv",
|
||||
CONF_DEVICE_CLASS: DEVICE_ANDROIDTV,
|
||||
}
|
||||
|
||||
# Android TV device with ADB server
|
||||
CONFIG_ADB_SERVER = {
|
||||
CONF_HOST: HOST,
|
||||
CONF_PORT: DEFAULT_PORT,
|
||||
CONF_DEVICE_CLASS: "androidtv",
|
||||
CONF_DEVICE_CLASS: DEVICE_ANDROIDTV,
|
||||
CONF_ADB_SERVER_IP: "127.0.0.1",
|
||||
CONF_ADB_SERVER_PORT: DEFAULT_ADB_SERVER_PORT,
|
||||
}
|
||||
|
@ -133,7 +135,7 @@ async def test_user_adbkey(hass):
|
|||
with patch(
|
||||
CONNECT_METHOD,
|
||||
return_value=(MockConfigDevice(), None),
|
||||
), PATCH_SETUP_ENTRY as mock_setup_entry, PATCH_ISFILE, PATCH_ACCESS:
|
||||
), PATCH_ISFILE, PATCH_ACCESS, PATCH_SETUP_ENTRY as mock_setup_entry:
|
||||
|
||||
result = await hass.config_entries.flow.async_init(
|
||||
DOMAIN,
|
||||
|
|
|
@ -18,11 +18,15 @@ from homeassistant.components.androidtv.const import (
|
|||
CONF_TURN_ON_COMMAND,
|
||||
DEFAULT_ADB_SERVER_PORT,
|
||||
DEFAULT_PORT,
|
||||
DEVICE_ANDROIDTV,
|
||||
DEVICE_FIRETV,
|
||||
DOMAIN,
|
||||
)
|
||||
from homeassistant.components.androidtv.media_player import (
|
||||
ATTR_DEVICE_PATH,
|
||||
ATTR_LOCAL_PATH,
|
||||
PREFIX_ANDROIDTV,
|
||||
PREFIX_FIRETV,
|
||||
SERVICE_ADB_COMMAND,
|
||||
SERVICE_DOWNLOAD,
|
||||
SERVICE_LEARN_SENDEVENT,
|
||||
|
@ -64,10 +68,13 @@ from homeassistant.const import (
|
|||
from homeassistant.helpers.entity_component import async_update_entity
|
||||
from homeassistant.util import slugify
|
||||
|
||||
from . import patchers
|
||||
|
||||
from tests.common import MockConfigEntry
|
||||
from tests.components.androidtv import patchers
|
||||
|
||||
CONF_OPTIONS = "options"
|
||||
HOST = "127.0.0.1"
|
||||
TEST_ENTITY_NAME = "entity_name"
|
||||
|
||||
PATCH_ACCESS = patch("homeassistant.components.androidtv.os.access", return_value=True)
|
||||
PATCH_ISFILE = patch(
|
||||
|
@ -79,72 +86,62 @@ SHELL_RESPONSE_STANDBY = "1"
|
|||
|
||||
# Android TV device with Python ADB implementation
|
||||
CONFIG_ANDROIDTV_PYTHON_ADB = {
|
||||
TEST_ENTITY_NAME: f"{PREFIX_ANDROIDTV} {HOST}",
|
||||
DOMAIN: {
|
||||
CONF_HOST: "127.0.0.1",
|
||||
CONF_HOST: HOST,
|
||||
CONF_PORT: DEFAULT_PORT,
|
||||
CONF_DEVICE_CLASS: "androidtv",
|
||||
CONF_ADB_SERVER_PORT: DEFAULT_ADB_SERVER_PORT,
|
||||
}
|
||||
CONF_DEVICE_CLASS: DEVICE_ANDROIDTV,
|
||||
},
|
||||
}
|
||||
|
||||
# Android TV device with Python ADB implementation imported from YAML
|
||||
CONFIG_ANDROIDTV_PYTHON_ADB_YAML = {
|
||||
TEST_ENTITY_NAME: "ADB yaml import",
|
||||
DOMAIN: {
|
||||
CONF_NAME: "ADB yaml import",
|
||||
**CONFIG_ANDROIDTV_PYTHON_ADB[DOMAIN],
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
# Android TV device with ADB server
|
||||
CONFIG_ANDROIDTV_ADB_SERVER = {
|
||||
TEST_ENTITY_NAME: f"{PREFIX_ANDROIDTV} {HOST}",
|
||||
DOMAIN: {
|
||||
CONF_HOST: "127.0.0.1",
|
||||
CONF_HOST: HOST,
|
||||
CONF_PORT: DEFAULT_PORT,
|
||||
CONF_DEVICE_CLASS: "androidtv",
|
||||
CONF_ADB_SERVER_IP: "127.0.0.1",
|
||||
CONF_DEVICE_CLASS: DEVICE_ANDROIDTV,
|
||||
CONF_ADB_SERVER_IP: HOST,
|
||||
CONF_ADB_SERVER_PORT: DEFAULT_ADB_SERVER_PORT,
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
# Fire TV device with Python ADB implementation
|
||||
CONFIG_FIRETV_PYTHON_ADB = {
|
||||
TEST_ENTITY_NAME: f"{PREFIX_FIRETV} {HOST}",
|
||||
DOMAIN: {
|
||||
CONF_HOST: "127.0.0.1",
|
||||
CONF_HOST: HOST,
|
||||
CONF_PORT: DEFAULT_PORT,
|
||||
CONF_DEVICE_CLASS: "firetv",
|
||||
CONF_ADB_SERVER_PORT: DEFAULT_ADB_SERVER_PORT,
|
||||
}
|
||||
CONF_DEVICE_CLASS: DEVICE_FIRETV,
|
||||
},
|
||||
}
|
||||
|
||||
# Fire TV device with ADB server
|
||||
CONFIG_FIRETV_ADB_SERVER = {
|
||||
TEST_ENTITY_NAME: f"{PREFIX_FIRETV} {HOST}",
|
||||
DOMAIN: {
|
||||
CONF_HOST: "127.0.0.1",
|
||||
CONF_HOST: HOST,
|
||||
CONF_PORT: DEFAULT_PORT,
|
||||
CONF_DEVICE_CLASS: "firetv",
|
||||
CONF_ADB_SERVER_IP: "127.0.0.1",
|
||||
CONF_DEVICE_CLASS: DEVICE_FIRETV,
|
||||
CONF_ADB_SERVER_IP: HOST,
|
||||
CONF_ADB_SERVER_PORT: DEFAULT_ADB_SERVER_PORT,
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
def _setup(config):
|
||||
"""Perform common setup tasks for the tests."""
|
||||
if CONF_ADB_SERVER_IP not in config[DOMAIN]:
|
||||
patch_key = "python"
|
||||
else:
|
||||
patch_key = "server"
|
||||
|
||||
host = config[DOMAIN][CONF_HOST]
|
||||
# CONF_NAME available for configuration imported from YAML
|
||||
if conf_name := config[DOMAIN].get(CONF_NAME):
|
||||
entity_id = slugify(conf_name)
|
||||
elif config[DOMAIN].get(CONF_DEVICE_CLASS) != "firetv":
|
||||
entity_id = slugify(f"Android TV {host}")
|
||||
else:
|
||||
entity_id = slugify(f"Fire TV {host}")
|
||||
entity_id = f"{MP_DOMAIN}.{entity_id}"
|
||||
|
||||
patch_key = "server" if CONF_ADB_SERVER_IP in config[DOMAIN] else "python"
|
||||
entity_id = f"{MP_DOMAIN}.{slugify(config[TEST_ENTITY_NAME])}"
|
||||
config_entry = MockConfigEntry(
|
||||
domain=DOMAIN,
|
||||
data=config[DOMAIN],
|
||||
|
@ -320,7 +317,7 @@ async def test_sources(hass, config0):
|
|||
assert state is not None
|
||||
assert state.state == STATE_OFF
|
||||
|
||||
if config[DOMAIN].get(CONF_DEVICE_CLASS) != "firetv":
|
||||
if config[DOMAIN].get(CONF_DEVICE_CLASS) != DEVICE_FIRETV:
|
||||
patch_update = patchers.patch_androidtv_update(
|
||||
"playing",
|
||||
"com.app.test1",
|
||||
|
@ -346,7 +343,7 @@ async def test_sources(hass, config0):
|
|||
assert state.attributes["source"] == "TEST 1"
|
||||
assert sorted(state.attributes["source_list"]) == ["TEST 1", "com.app.test2"]
|
||||
|
||||
if config[DOMAIN].get(CONF_DEVICE_CLASS) != "firetv":
|
||||
if config[DOMAIN].get(CONF_DEVICE_CLASS) != DEVICE_FIRETV:
|
||||
patch_update = patchers.patch_androidtv_update(
|
||||
"playing",
|
||||
"com.app.test2",
|
||||
|
@ -399,7 +396,7 @@ async def _test_exclude_sources(hass, config0, expected_sources):
|
|||
assert state is not None
|
||||
assert state.state == STATE_OFF
|
||||
|
||||
if config[DOMAIN].get(CONF_DEVICE_CLASS) != "firetv":
|
||||
if config[DOMAIN].get(CONF_DEVICE_CLASS) != DEVICE_FIRETV:
|
||||
patch_update = patchers.patch_androidtv_update(
|
||||
"playing",
|
||||
"com.app.test1",
|
||||
|
@ -1189,7 +1186,7 @@ async def test_volume_mute(hass):
|
|||
|
||||
async def test_connection_closed_on_ha_stop(hass):
|
||||
"""Test that the ADB socket connection is closed when HA stops."""
|
||||
patch_key, entity_id, config_entry = _setup(CONFIG_ANDROIDTV_ADB_SERVER)
|
||||
patch_key, _, config_entry = _setup(CONFIG_ANDROIDTV_ADB_SERVER)
|
||||
config_entry.add_to_hass(hass)
|
||||
|
||||
with patchers.PATCH_ADB_DEVICE_TCP, patchers.patch_connect(True)[
|
||||
|
|
Loading…
Reference in New Issue