Make use of snapshot testing in Synology DSM (#115931)

pull/115934/head
Michael 2024-04-21 22:26:57 +02:00 committed by GitHub
parent 2620443a88
commit 5a24690d79
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 110 additions and 71 deletions

View File

@ -0,0 +1,86 @@
# serializer version: 1
# name: test_discovered_via_zeroconf
dict({
'host': '192.168.1.5',
'mac': list([
'00-11-32-XX-XX-59',
'00-11-32-XX-XX-5A',
]),
'password': 'password',
'port': 5001,
'ssl': True,
'username': 'Home_Assistant',
'verify_ssl': False,
})
# ---
# name: test_form_ssdp
dict({
'host': '192.168.1.5',
'mac': list([
'00-11-32-XX-XX-59',
'00-11-32-XX-XX-5A',
]),
'password': 'password',
'port': 5001,
'ssl': True,
'username': 'Home_Assistant',
'verify_ssl': False,
})
# ---
# name: test_user
dict({
'host': 'nas.meontheinternet.com',
'mac': list([
'00-11-32-XX-XX-59',
'00-11-32-XX-XX-5A',
]),
'password': 'password',
'port': 1234,
'ssl': True,
'username': 'Home_Assistant',
'verify_ssl': False,
})
# ---
# name: test_user.1
dict({
'host': 'nas.meontheinternet.com',
'mac': list([
'00-11-32-XX-XX-59',
'00-11-32-XX-XX-5A',
]),
'password': 'password',
'port': 5000,
'ssl': False,
'username': 'Home_Assistant',
'verify_ssl': False,
})
# ---
# name: test_user_2sa
dict({
'device_token': 'Dév!cè_T0k€ñ',
'host': 'nas.meontheinternet.com',
'mac': list([
'00-11-32-XX-XX-59',
'00-11-32-XX-XX-5A',
]),
'password': 'password',
'port': 5001,
'ssl': True,
'username': 'Home_Assistant',
'verify_ssl': False,
})
# ---
# name: test_user_vdsm
dict({
'host': 'nas.meontheinternet.com',
'mac': list([
'00-11-32-XX-XX-59',
'00-11-32-XX-XX-5A',
]),
'password': 'password',
'port': 1234,
'ssl': True,
'username': 'Home_Assistant',
'verify_ssl': False,
})
# ---

View File

@ -11,19 +11,15 @@ from synology_dsm.exceptions import (
SynologyDSMLoginInvalidException,
SynologyDSMRequestException,
)
from syrupy import SnapshotAssertion
from homeassistant.components import ssdp, zeroconf
from homeassistant.components.synology_dsm.config_flow import CONF_OTP_CODE
from homeassistant.components.synology_dsm.const import (
CONF_SNAPSHOT_QUALITY,
CONF_VOLUMES,
DEFAULT_PORT,
DEFAULT_PORT_SSL,
DEFAULT_SCAN_INTERVAL,
DEFAULT_SNAPSHOT_QUALITY,
DEFAULT_TIMEOUT,
DEFAULT_USE_SSL,
DEFAULT_VERIFY_SSL,
DOMAIN,
)
from homeassistant.config_entries import (
@ -33,7 +29,6 @@ from homeassistant.config_entries import (
SOURCE_ZEROCONF,
)
from homeassistant.const import (
CONF_DISKS,
CONF_HOST,
CONF_MAC,
CONF_PASSWORD,
@ -149,7 +144,11 @@ def mock_controller_service_failed():
@pytest.mark.usefixtures("mock_setup_entry")
async def test_user(hass: HomeAssistant, service: MagicMock) -> None:
async def test_user(
hass: HomeAssistant,
service: MagicMock,
snapshot: SnapshotAssertion,
) -> None:
"""Test user config."""
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_USER}, data=None
@ -177,16 +176,7 @@ async def test_user(hass: HomeAssistant, service: MagicMock) -> None:
assert result["type"] is FlowResultType.CREATE_ENTRY
assert result["result"].unique_id == SERIAL
assert result["title"] == HOST
assert result["data"][CONF_HOST] == HOST
assert result["data"][CONF_PORT] == PORT
assert result["data"][CONF_SSL] == USE_SSL
assert result["data"][CONF_VERIFY_SSL] == VERIFY_SSL
assert result["data"][CONF_USERNAME] == USERNAME
assert result["data"][CONF_PASSWORD] == PASSWORD
assert result["data"][CONF_MAC] == MACS
assert result["data"].get("device_token") is None
assert result["data"].get(CONF_DISKS) is None
assert result["data"].get(CONF_VOLUMES) is None
assert result["data"] == snapshot
service.information.serial = SERIAL_2
with patch(
@ -208,20 +198,13 @@ async def test_user(hass: HomeAssistant, service: MagicMock) -> None:
assert result["type"] is FlowResultType.CREATE_ENTRY
assert result["result"].unique_id == SERIAL_2
assert result["title"] == HOST
assert result["data"][CONF_HOST] == HOST
assert result["data"][CONF_PORT] == DEFAULT_PORT
assert not result["data"][CONF_SSL]
assert result["data"][CONF_VERIFY_SSL] == VERIFY_SSL
assert result["data"][CONF_USERNAME] == USERNAME
assert result["data"][CONF_PASSWORD] == PASSWORD
assert result["data"][CONF_MAC] == MACS
assert result["data"].get("device_token") is None
assert result["data"].get(CONF_DISKS) is None
assert result["data"].get(CONF_VOLUMES) is None
assert result["data"] == snapshot
@pytest.mark.usefixtures("mock_setup_entry")
async def test_user_2sa(hass: HomeAssistant, service_2sa: MagicMock) -> None:
async def test_user_2sa(
hass: HomeAssistant, service_2sa: MagicMock, snapshot: SnapshotAssertion
) -> None:
"""Test user with 2sa authentication config."""
with patch(
"homeassistant.components.synology_dsm.config_flow.SynologyDSM",
@ -261,20 +244,13 @@ async def test_user_2sa(hass: HomeAssistant, service_2sa: MagicMock) -> None:
assert result["type"] is FlowResultType.CREATE_ENTRY
assert result["result"].unique_id == SERIAL
assert result["title"] == HOST
assert result["data"][CONF_HOST] == HOST
assert result["data"][CONF_PORT] == DEFAULT_PORT_SSL
assert result["data"][CONF_SSL] == DEFAULT_USE_SSL
assert result["data"][CONF_VERIFY_SSL] == DEFAULT_VERIFY_SSL
assert result["data"][CONF_USERNAME] == USERNAME
assert result["data"][CONF_PASSWORD] == PASSWORD
assert result["data"][CONF_MAC] == MACS
assert result["data"].get("device_token") == DEVICE_TOKEN
assert result["data"].get(CONF_DISKS) is None
assert result["data"].get(CONF_VOLUMES) is None
assert result["data"] == snapshot
@pytest.mark.usefixtures("mock_setup_entry")
async def test_user_vdsm(hass: HomeAssistant, service_vdsm: MagicMock) -> None:
async def test_user_vdsm(
hass: HomeAssistant, service_vdsm: MagicMock, snapshot: SnapshotAssertion
) -> None:
"""Test user config."""
with patch(
"homeassistant.components.synology_dsm.config_flow.SynologyDSM",
@ -306,16 +282,7 @@ async def test_user_vdsm(hass: HomeAssistant, service_vdsm: MagicMock) -> None:
assert result["type"] is FlowResultType.CREATE_ENTRY
assert result["result"].unique_id == SERIAL
assert result["title"] == HOST
assert result["data"][CONF_HOST] == HOST
assert result["data"][CONF_PORT] == PORT
assert result["data"][CONF_SSL] == USE_SSL
assert result["data"][CONF_VERIFY_SSL] == VERIFY_SSL
assert result["data"][CONF_USERNAME] == USERNAME
assert result["data"][CONF_PASSWORD] == PASSWORD
assert result["data"][CONF_MAC] == MACS
assert result["data"].get("device_token") is None
assert result["data"].get(CONF_DISKS) is None
assert result["data"].get(CONF_VOLUMES) is None
assert result["data"] == snapshot
@pytest.mark.usefixtures("mock_setup_entry")
@ -467,7 +434,9 @@ async def test_missing_data_after_login(
@pytest.mark.usefixtures("mock_setup_entry")
async def test_form_ssdp(hass: HomeAssistant, service: MagicMock) -> None:
async def test_form_ssdp(
hass: HomeAssistant, service: MagicMock, snapshot: SnapshotAssertion
) -> None:
"""Test we can setup from ssdp."""
result = await hass.config_entries.flow.async_init(
@ -498,16 +467,7 @@ async def test_form_ssdp(hass: HomeAssistant, service: MagicMock) -> None:
assert result["type"] is FlowResultType.CREATE_ENTRY
assert result["result"].unique_id == SERIAL
assert result["title"] == "mydsm"
assert result["data"][CONF_HOST] == "192.168.1.5"
assert result["data"][CONF_PORT] == 5001
assert result["data"][CONF_SSL] == DEFAULT_USE_SSL
assert result["data"][CONF_VERIFY_SSL] == DEFAULT_VERIFY_SSL
assert result["data"][CONF_USERNAME] == USERNAME
assert result["data"][CONF_PASSWORD] == PASSWORD
assert result["data"][CONF_MAC] == MACS
assert result["data"].get("device_token") is None
assert result["data"].get(CONF_DISKS) is None
assert result["data"].get(CONF_VOLUMES) is None
assert result["data"] == snapshot
@pytest.mark.usefixtures("mock_setup_entry")
@ -664,7 +624,9 @@ async def test_options_flow(hass: HomeAssistant, service: MagicMock) -> None:
@pytest.mark.usefixtures("mock_setup_entry")
async def test_discovered_via_zeroconf(hass: HomeAssistant, service: MagicMock) -> None:
async def test_discovered_via_zeroconf(
hass: HomeAssistant, service: MagicMock, snapshot: SnapshotAssertion
) -> None:
"""Test we can setup from zeroconf."""
result = await hass.config_entries.flow.async_init(
@ -697,16 +659,7 @@ async def test_discovered_via_zeroconf(hass: HomeAssistant, service: MagicMock)
assert result["type"] is FlowResultType.CREATE_ENTRY
assert result["result"].unique_id == SERIAL
assert result["title"] == "mydsm"
assert result["data"][CONF_HOST] == "192.168.1.5"
assert result["data"][CONF_PORT] == 5001
assert result["data"][CONF_SSL] == DEFAULT_USE_SSL
assert result["data"][CONF_VERIFY_SSL] == DEFAULT_VERIFY_SSL
assert result["data"][CONF_USERNAME] == USERNAME
assert result["data"][CONF_PASSWORD] == PASSWORD
assert result["data"][CONF_MAC] == MACS
assert result["data"].get("device_token") is None
assert result["data"].get(CONF_DISKS) is None
assert result["data"].get(CONF_VOLUMES) is None
assert result["data"] == snapshot
@pytest.mark.usefixtures("mock_setup_entry")