diff --git a/tests/components/fritz/__init__.py b/tests/components/fritz/__init__.py
index a1fd1ce42fb..1462ec77b8f 100644
--- a/tests/components/fritz/__init__.py
+++ b/tests/components/fritz/__init__.py
@@ -1,127 +1 @@
"""Tests for the AVM Fritz!Box integration."""
-from unittest import mock
-
-from homeassistant.components.fritz.const import DOMAIN
-from homeassistant.const import (
- CONF_DEVICES,
- CONF_HOST,
- CONF_PASSWORD,
- CONF_PORT,
- CONF_USERNAME,
-)
-
-MOCK_CONFIG = {
- DOMAIN: {
- CONF_DEVICES: [
- {
- CONF_HOST: "fake_host",
- CONF_PORT: "1234",
- CONF_PASSWORD: "fake_pass",
- CONF_USERNAME: "fake_user",
- }
- ]
- }
-}
-
-
-class FritzConnectionMock: # pylint: disable=too-few-public-methods
- """FritzConnection mocking."""
-
- FRITZBOX_DATA = {
- ("WANIPConn:1", "GetStatusInfo"): {
- "NewConnectionStatus": "Connected",
- "NewUptime": 35307,
- },
- ("WANIPConnection:1", "GetStatusInfo"): {},
- ("WANCommonIFC:1", "GetCommonLinkProperties"): {
- "NewLayer1DownstreamMaxBitRate": 10087000,
- "NewLayer1UpstreamMaxBitRate": 2105000,
- "NewPhysicalLinkStatus": "Up",
- },
- ("WANCommonIFC:1", "GetAddonInfos"): {
- "NewByteSendRate": 3438,
- "NewByteReceiveRate": 67649,
- "NewTotalBytesSent": 1712232562,
- "NewTotalBytesReceived": 5221019883,
- },
- ("LANEthernetInterfaceConfig:1", "GetStatistics"): {
- "NewBytesSent": 23004321,
- "NewBytesReceived": 12045,
- },
- ("DeviceInfo:1", "GetInfo"): {
- "NewSerialNumber": "abcdefgh",
- "NewName": "TheName",
- "NewModelName": "FRITZ!Box 7490",
- },
- }
-
- FRITZBOX_DATA_INDEXED = {
- ("X_AVM-DE_Homeauto:1", "GetGenericDeviceInfos"): [
- {
- "NewSwitchIsValid": "VALID",
- "NewMultimeterIsValid": "VALID",
- "NewTemperatureIsValid": "VALID",
- "NewDeviceId": 16,
- "NewAIN": "08761 0114116",
- "NewDeviceName": "FRITZ!DECT 200 #1",
- "NewTemperatureOffset": "0",
- "NewSwitchLock": "0",
- "NewProductName": "FRITZ!DECT 200",
- "NewPresent": "CONNECTED",
- "NewMultimeterPower": 1673,
- "NewHkrComfortTemperature": "0",
- "NewSwitchMode": "AUTO",
- "NewManufacturer": "AVM",
- "NewMultimeterIsEnabled": "ENABLED",
- "NewHkrIsTemperature": "0",
- "NewFunctionBitMask": 2944,
- "NewTemperatureIsEnabled": "ENABLED",
- "NewSwitchState": "ON",
- "NewSwitchIsEnabled": "ENABLED",
- "NewFirmwareVersion": "03.87",
- "NewHkrSetVentilStatus": "CLOSED",
- "NewMultimeterEnergy": 5182,
- "NewHkrComfortVentilStatus": "CLOSED",
- "NewHkrReduceTemperature": "0",
- "NewHkrReduceVentilStatus": "CLOSED",
- "NewHkrIsEnabled": "DISABLED",
- "NewHkrSetTemperature": "0",
- "NewTemperatureCelsius": "225",
- "NewHkrIsValid": "INVALID",
- },
- {},
- ],
- ("Hosts1", "GetGenericHostEntry"): [
- {
- "NewSerialNumber": 1234,
- "NewName": "TheName",
- "NewModelName": "FRITZ!Box 7490",
- },
- {},
- ],
- }
-
- MODELNAME = "FRITZ!Box 7490"
-
- def __init__(self):
- """Inint Mocking class."""
- type(self).modelname = mock.PropertyMock(return_value=self.MODELNAME)
- self.call_action = mock.Mock(side_effect=self._side_effect_call_action)
- type(self).action_names = mock.PropertyMock(
- side_effect=self._side_effect_action_names
- )
- services = {
- srv: None
- for srv, _ in list(self.FRITZBOX_DATA) + list(self.FRITZBOX_DATA_INDEXED)
- }
- type(self).services = mock.PropertyMock(side_effect=[services])
-
- def _side_effect_call_action(self, service, action, **kwargs):
- if kwargs:
- index = next(iter(kwargs.values()))
- return self.FRITZBOX_DATA_INDEXED[(service, action)][index]
-
- return self.FRITZBOX_DATA[(service, action)]
-
- def _side_effect_action_names(self):
- return list(self.FRITZBOX_DATA) + list(self.FRITZBOX_DATA_INDEXED)
diff --git a/tests/components/fritz/conftest.py b/tests/components/fritz/conftest.py
new file mode 100644
index 00000000000..6f99ab483e6
--- /dev/null
+++ b/tests/components/fritz/conftest.py
@@ -0,0 +1,116 @@
+"""Common stuff for AVM Fritz!Box tests."""
+from unittest import mock
+from unittest.mock import patch
+
+import pytest
+
+
+@pytest.fixture()
+def fc_class_mock():
+ """Fixture that sets up a mocked FritzConnection class."""
+ with patch("fritzconnection.FritzConnection", autospec=True) as result:
+ result.return_value = FritzConnectionMock()
+ yield result
+
+
+class FritzConnectionMock: # pylint: disable=too-few-public-methods
+ """FritzConnection mocking."""
+
+ FRITZBOX_DATA = {
+ ("WANIPConn:1", "GetStatusInfo"): {
+ "NewConnectionStatus": "Connected",
+ "NewUptime": 35307,
+ },
+ ("WANIPConnection:1", "GetStatusInfo"): {},
+ ("WANCommonIFC:1", "GetCommonLinkProperties"): {
+ "NewLayer1DownstreamMaxBitRate": 10087000,
+ "NewLayer1UpstreamMaxBitRate": 2105000,
+ "NewPhysicalLinkStatus": "Up",
+ },
+ ("WANCommonIFC:1", "GetAddonInfos"): {
+ "NewByteSendRate": 3438,
+ "NewByteReceiveRate": 67649,
+ "NewTotalBytesSent": 1712232562,
+ "NewTotalBytesReceived": 5221019883,
+ },
+ ("LANEthernetInterfaceConfig:1", "GetStatistics"): {
+ "NewBytesSent": 23004321,
+ "NewBytesReceived": 12045,
+ },
+ ("DeviceInfo:1", "GetInfo"): {
+ "NewSerialNumber": "abcdefgh",
+ "NewName": "TheName",
+ "NewModelName": "FRITZ!Box 7490",
+ },
+ }
+
+ FRITZBOX_DATA_INDEXED = {
+ ("X_AVM-DE_Homeauto:1", "GetGenericDeviceInfos"): [
+ {
+ "NewSwitchIsValid": "VALID",
+ "NewMultimeterIsValid": "VALID",
+ "NewTemperatureIsValid": "VALID",
+ "NewDeviceId": 16,
+ "NewAIN": "08761 0114116",
+ "NewDeviceName": "FRITZ!DECT 200 #1",
+ "NewTemperatureOffset": "0",
+ "NewSwitchLock": "0",
+ "NewProductName": "FRITZ!DECT 200",
+ "NewPresent": "CONNECTED",
+ "NewMultimeterPower": 1673,
+ "NewHkrComfortTemperature": "0",
+ "NewSwitchMode": "AUTO",
+ "NewManufacturer": "AVM",
+ "NewMultimeterIsEnabled": "ENABLED",
+ "NewHkrIsTemperature": "0",
+ "NewFunctionBitMask": 2944,
+ "NewTemperatureIsEnabled": "ENABLED",
+ "NewSwitchState": "ON",
+ "NewSwitchIsEnabled": "ENABLED",
+ "NewFirmwareVersion": "03.87",
+ "NewHkrSetVentilStatus": "CLOSED",
+ "NewMultimeterEnergy": 5182,
+ "NewHkrComfortVentilStatus": "CLOSED",
+ "NewHkrReduceTemperature": "0",
+ "NewHkrReduceVentilStatus": "CLOSED",
+ "NewHkrIsEnabled": "DISABLED",
+ "NewHkrSetTemperature": "0",
+ "NewTemperatureCelsius": "225",
+ "NewHkrIsValid": "INVALID",
+ },
+ {},
+ ],
+ ("Hosts1", "GetGenericHostEntry"): [
+ {
+ "NewSerialNumber": 1234,
+ "NewName": "TheName",
+ "NewModelName": "FRITZ!Box 7490",
+ },
+ {},
+ ],
+ }
+
+ MODELNAME = "FRITZ!Box 7490"
+
+ def __init__(self):
+ """Inint Mocking class."""
+ type(self).modelname = mock.PropertyMock(return_value=self.MODELNAME)
+ self.call_action = mock.Mock(side_effect=self._side_effect_call_action)
+ type(self).action_names = mock.PropertyMock(
+ side_effect=self._side_effect_action_names
+ )
+ services = {
+ srv: None
+ for srv, _ in list(self.FRITZBOX_DATA) + list(self.FRITZBOX_DATA_INDEXED)
+ }
+ type(self).services = mock.PropertyMock(side_effect=[services])
+
+ def _side_effect_call_action(self, service, action, **kwargs):
+ if kwargs:
+ index = next(iter(kwargs.values()))
+ return self.FRITZBOX_DATA_INDEXED[(service, action)][index]
+
+ return self.FRITZBOX_DATA[(service, action)]
+
+ def _side_effect_action_names(self):
+ return list(self.FRITZBOX_DATA) + list(self.FRITZBOX_DATA_INDEXED)
diff --git a/tests/components/fritz/const.py b/tests/components/fritz/const.py
new file mode 100644
index 00000000000..3212794fc85
--- /dev/null
+++ b/tests/components/fritz/const.py
@@ -0,0 +1,48 @@
+"""Common stuff for AVM Fritz!Box tests."""
+from homeassistant.components import ssdp
+from homeassistant.components.fritz.const import DOMAIN
+from homeassistant.components.ssdp import ATTR_UPNP_FRIENDLY_NAME, ATTR_UPNP_UDN
+from homeassistant.const import (
+ CONF_DEVICES,
+ CONF_HOST,
+ CONF_PASSWORD,
+ CONF_PORT,
+ CONF_USERNAME,
+)
+
+ATTR_HOST = "host"
+ATTR_NEW_SERIAL_NUMBER = "NewSerialNumber"
+
+MOCK_CONFIG = {
+ DOMAIN: {
+ CONF_DEVICES: [
+ {
+ CONF_HOST: "fake_host",
+ CONF_PORT: "1234",
+ CONF_PASSWORD: "fake_pass",
+ CONF_USERNAME: "fake_user",
+ }
+ ]
+ }
+}
+MOCK_HOST = "fake_host"
+MOCK_IP = "192.168.178.1"
+MOCK_SERIAL_NUMBER = "fake_serial_number"
+MOCK_FIRMWARE_INFO = [True, "1.1.1"]
+
+MOCK_USER_DATA = MOCK_CONFIG[DOMAIN][CONF_DEVICES][0]
+MOCK_DEVICE_INFO = {
+ ATTR_HOST: MOCK_HOST,
+ ATTR_NEW_SERIAL_NUMBER: MOCK_SERIAL_NUMBER,
+}
+MOCK_SSDP_DATA = ssdp.SsdpServiceInfo(
+ ssdp_usn="mock_usn",
+ ssdp_st="mock_st",
+ ssdp_location=f"https://{MOCK_IP}:12345/test",
+ upnp={
+ ATTR_UPNP_FRIENDLY_NAME: "fake_name",
+ ATTR_UPNP_UDN: "uuid:only-a-test",
+ },
+)
+
+MOCK_REQUEST = b'xxxxxxxxxxxxxxxxxxxxxxxx0Dial2App2HomeAuto2BoxAdmin2Phone2NAS2FakeFritzUser\n'
diff --git a/tests/components/fritz/test_config_flow.py b/tests/components/fritz/test_config_flow.py
index edb03c51603..6505ee2bcaa 100644
--- a/tests/components/fritz/test_config_flow.py
+++ b/tests/components/fritz/test_config_flow.py
@@ -3,9 +3,7 @@ import dataclasses
from unittest.mock import patch
from fritzconnection.core.exceptions import FritzConnectionException, FritzSecurityError
-import pytest
-from homeassistant.components import ssdp
from homeassistant.components.device_tracker.const import (
CONF_CONSIDER_HOME,
DEFAULT_CONSIDER_HOME,
@@ -16,9 +14,9 @@ from homeassistant.components.fritz.const import (
ERROR_CANNOT_CONNECT,
ERROR_UNKNOWN,
)
-from homeassistant.components.ssdp import ATTR_UPNP_FRIENDLY_NAME, ATTR_UPNP_UDN
+from homeassistant.components.ssdp import ATTR_UPNP_UDN
from homeassistant.config_entries import SOURCE_REAUTH, SOURCE_SSDP, SOURCE_USER
-from homeassistant.const import CONF_DEVICES, CONF_HOST, CONF_PASSWORD, CONF_USERNAME
+from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME
from homeassistant.core import HomeAssistant
from homeassistant.data_entry_flow import (
RESULT_TYPE_ABORT,
@@ -26,42 +24,15 @@ from homeassistant.data_entry_flow import (
RESULT_TYPE_FORM,
)
-from . import MOCK_CONFIG, FritzConnectionMock
-
-from tests.common import MockConfigEntry
-
-ATTR_HOST = "host"
-ATTR_NEW_SERIAL_NUMBER = "NewSerialNumber"
-
-MOCK_HOST = "fake_host"
-MOCK_IP = "192.168.178.1"
-MOCK_SERIAL_NUMBER = "fake_serial_number"
-MOCK_FIRMWARE_INFO = [True, "1.1.1"]
-
-MOCK_USER_DATA = MOCK_CONFIG[DOMAIN][CONF_DEVICES][0]
-MOCK_DEVICE_INFO = {
- ATTR_HOST: MOCK_HOST,
- ATTR_NEW_SERIAL_NUMBER: MOCK_SERIAL_NUMBER,
-}
-MOCK_SSDP_DATA = ssdp.SsdpServiceInfo(
- ssdp_usn="mock_usn",
- ssdp_st="mock_st",
- ssdp_location=f"https://{MOCK_IP}:12345/test",
- upnp={
- ATTR_UPNP_FRIENDLY_NAME: "fake_name",
- ATTR_UPNP_UDN: "uuid:only-a-test",
- },
+from .const import (
+ MOCK_FIRMWARE_INFO,
+ MOCK_IP,
+ MOCK_REQUEST,
+ MOCK_SSDP_DATA,
+ MOCK_USER_DATA,
)
-MOCK_REQUEST = b'xxxxxxxxxxxxxxxxxxxxxxxx0Dial2App2HomeAuto2BoxAdmin2Phone2NAS2FakeFritzUser\n'
-
-
-@pytest.fixture()
-def fc_class_mock():
- """Fixture that sets up a mocked FritzConnection class."""
- with patch("fritzconnection.FritzConnection", autospec=True) as result:
- result.return_value = FritzConnectionMock()
- yield result
+from tests.common import MockConfigEntry
async def test_user(hass: HomeAssistant, fc_class_mock, mock_get_source_ip):