From 5a24690d795d9c233541e3fc55d0a733a12c90dc Mon Sep 17 00:00:00 2001 From: Michael <35783820+mib1185@users.noreply.github.com> Date: Sun, 21 Apr 2024 22:26:57 +0200 Subject: [PATCH] Make use of snapshot testing in Synology DSM (#115931) --- .../snapshots/test_config_flow.ambr | 86 +++++++++++++++++ .../synology_dsm/test_config_flow.py | 95 +++++-------------- 2 files changed, 110 insertions(+), 71 deletions(-) create mode 100644 tests/components/synology_dsm/snapshots/test_config_flow.ambr diff --git a/tests/components/synology_dsm/snapshots/test_config_flow.ambr b/tests/components/synology_dsm/snapshots/test_config_flow.ambr new file mode 100644 index 00000000000..807ec764e52 --- /dev/null +++ b/tests/components/synology_dsm/snapshots/test_config_flow.ambr @@ -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, + }) +# --- diff --git a/tests/components/synology_dsm/test_config_flow.py b/tests/components/synology_dsm/test_config_flow.py index 483e22f2359..85814f84aad 100644 --- a/tests/components/synology_dsm/test_config_flow.py +++ b/tests/components/synology_dsm/test_config_flow.py @@ -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")