瀏覽代碼

Modify config flow tests to check "special characters" in local key.

There are repeated claims that special characters in local keys do not
work, which have never led to any specific bug being found. Latest
report in issue #3149 gives a specific key that the user claims does
not work, and provides what they thought was a repeatable test case
using dummy data for device id and IP address, but turns out to not be
repeatable.

Use this "known bad" local key in unit tests to make sure there is no
truncation due to any of the characters in the key being processed by
Python that we are missing. Seems to work OK, as expected by the
non-reproducibility of the user's report.
Jason Rumney 1 年之前
父節點
當前提交
cb60cac289
共有 1 個文件被更改,包括 22 次插入20 次删除
  1. 22 20
      tests/test_config_flow.py

+ 22 - 20
tests/test_config_flow.py

@@ -22,6 +22,8 @@ from custom_components.tuya_local.const import (
     DOMAIN,
     DOMAIN,
 )
 )
 
 
+TESTKEY = ")<jO<@)'P1dkR$Kd"
+
 
 
 @pytest.fixture(autouse=True)
 @pytest.fixture(autouse=True)
 def auto_enable_custom_integrations(enable_custom_integrations):
 def auto_enable_custom_integrations(enable_custom_integrations):
@@ -56,7 +58,7 @@ async def test_init_entry(hass):
         data={
         data={
             CONF_DEVICE_ID: "deviceid",
             CONF_DEVICE_ID: "deviceid",
             CONF_HOST: "hostname",
             CONF_HOST: "hostname",
-            CONF_LOCAL_KEY: "localkey",
+            CONF_LOCAL_KEY: TESTKEY,
             CONF_POLL_ONLY: False,
             CONF_POLL_ONLY: False,
             CONF_PROTOCOL_VERSION: "auto",
             CONF_PROTOCOL_VERSION: "auto",
             CONF_TYPE: "kogan_kahtp_heater",
             CONF_TYPE: "kogan_kahtp_heater",
@@ -86,7 +88,7 @@ async def test_migrate_entry(mock_setup, hass):
         data={
         data={
             CONF_DEVICE_ID: "deviceid",
             CONF_DEVICE_ID: "deviceid",
             CONF_HOST: "hostname",
             CONF_HOST: "hostname",
-            CONF_LOCAL_KEY: "localkey",
+            CONF_LOCAL_KEY: TESTKEY,
             CONF_TYPE: "auto",
             CONF_TYPE: "auto",
             "climate": True,
             "climate": True,
             "child_lock": True,
             "child_lock": True,
@@ -106,7 +108,7 @@ async def test_migrate_entry(mock_setup, hass):
         data={
         data={
             CONF_DEVICE_ID: "deviceid",
             CONF_DEVICE_ID: "deviceid",
             CONF_HOST: "hostname",
             CONF_HOST: "hostname",
-            CONF_LOCAL_KEY: "localkey",
+            CONF_LOCAL_KEY: TESTKEY,
             CONF_TYPE: "unknown",
             CONF_TYPE: "unknown",
             "climate": False,
             "climate": False,
         },
         },
@@ -122,7 +124,7 @@ async def test_migrate_entry(mock_setup, hass):
         data={
         data={
             CONF_DEVICE_ID: "deviceid",
             CONF_DEVICE_ID: "deviceid",
             CONF_HOST: "hostname",
             CONF_HOST: "hostname",
-            CONF_LOCAL_KEY: "localkey",
+            CONF_LOCAL_KEY: TESTKEY,
             CONF_TYPE: "auto",
             CONF_TYPE: "auto",
         },
         },
         options={
         options={
@@ -142,7 +144,7 @@ async def test_migrate_entry(mock_setup, hass):
         data={
         data={
             CONF_DEVICE_ID: "deviceid",
             CONF_DEVICE_ID: "deviceid",
             CONF_HOST: "hostname",
             CONF_HOST: "hostname",
-            CONF_LOCAL_KEY: "localkey",
+            CONF_LOCAL_KEY: TESTKEY,
             CONF_TYPE: "smartplugv1",
             CONF_TYPE: "smartplugv1",
         },
         },
         options={
         options={
@@ -162,7 +164,7 @@ async def test_migrate_entry(mock_setup, hass):
         data={
         data={
             CONF_DEVICE_ID: "deviceid",
             CONF_DEVICE_ID: "deviceid",
             CONF_HOST: "hostname",
             CONF_HOST: "hostname",
-            CONF_LOCAL_KEY: "localkey",
+            CONF_LOCAL_KEY: TESTKEY,
             CONF_TYPE: "smartplugv1",
             CONF_TYPE: "smartplugv1",
         },
         },
         options={
         options={
@@ -182,7 +184,7 @@ async def test_migrate_entry(mock_setup, hass):
         data={
         data={
             CONF_DEVICE_ID: "deviceid",
             CONF_DEVICE_ID: "deviceid",
             CONF_HOST: "hostname",
             CONF_HOST: "hostname",
-            CONF_LOCAL_KEY: "localkey",
+            CONF_LOCAL_KEY: TESTKEY,
             CONF_TYPE: "goldair_dehumidifier",
             CONF_TYPE: "goldair_dehumidifier",
         },
         },
         options={
         options={
@@ -208,7 +210,7 @@ async def test_migrate_entry(mock_setup, hass):
         data={
         data={
             CONF_DEVICE_ID: "deviceid",
             CONF_DEVICE_ID: "deviceid",
             CONF_HOST: "hostname",
             CONF_HOST: "hostname",
-            CONF_LOCAL_KEY: "localkey",
+            CONF_LOCAL_KEY: TESTKEY,
             CONF_TYPE: "grid_connect_usb_double_power_point",
             CONF_TYPE: "grid_connect_usb_double_power_point",
         },
         },
         options={
         options={
@@ -243,7 +245,7 @@ async def test_flow_user_init(hass):
     # the same object
     # the same object
     try:
     try:
         result["data_schema"](
         result["data_schema"](
-            {CONF_DEVICE_ID: "test", CONF_LOCAL_KEY: "test", CONF_HOST: "test"}
+            {CONF_DEVICE_ID: "test", CONF_LOCAL_KEY: TESTKEY, CONF_HOST: "test"}
         )
         )
     except vol.MultipleInvalid:
     except vol.MultipleInvalid:
         assert False
         assert False
@@ -268,7 +270,7 @@ async def test_async_test_connection_valid(mock_device, hass):
     device = await config_flow.async_test_connection(
     device = await config_flow.async_test_connection(
         {
         {
             CONF_DEVICE_ID: "deviceid",
             CONF_DEVICE_ID: "deviceid",
-            CONF_LOCAL_KEY: "localkey",
+            CONF_LOCAL_KEY: TESTKEY,
             CONF_HOST: "hostname",
             CONF_HOST: "hostname",
             CONF_PROTOCOL_VERSION: "auto",
             CONF_PROTOCOL_VERSION: "auto",
         },
         },
@@ -293,7 +295,7 @@ async def test_async_test_connection_for_subdevice_valid(mock_device, hass):
     device = await config_flow.async_test_connection(
     device = await config_flow.async_test_connection(
         {
         {
             CONF_DEVICE_ID: "deviceid",
             CONF_DEVICE_ID: "deviceid",
-            CONF_LOCAL_KEY: "localkey",
+            CONF_LOCAL_KEY: TESTKEY,
             CONF_HOST: "hostname",
             CONF_HOST: "hostname",
             CONF_PROTOCOL_VERSION: "auto",
             CONF_PROTOCOL_VERSION: "auto",
             CONF_DEVICE_CID: "subdeviceid",
             CONF_DEVICE_CID: "subdeviceid",
@@ -315,7 +317,7 @@ async def test_async_test_connection_invalid(mock_device, hass):
     device = await config_flow.async_test_connection(
     device = await config_flow.async_test_connection(
         {
         {
             CONF_DEVICE_ID: "deviceid",
             CONF_DEVICE_ID: "deviceid",
-            CONF_LOCAL_KEY: "localkey",
+            CONF_LOCAL_KEY: TESTKEY,
             CONF_HOST: "hostname",
             CONF_HOST: "hostname",
             CONF_PROTOCOL_VERSION: "auto",
             CONF_PROTOCOL_VERSION: "auto",
         },
         },
@@ -371,7 +373,7 @@ async def test_flow_user_init_data_valid(mock_test, hass):
         user_input={
         user_input={
             CONF_DEVICE_ID: "deviceid",
             CONF_DEVICE_ID: "deviceid",
             CONF_HOST: "hostname",
             CONF_HOST: "hostname",
-            CONF_LOCAL_KEY: "localkey",
+            CONF_LOCAL_KEY: TESTKEY,
         },
         },
     )
     )
     assert "form" == result["type"]
     assert "form" == result["type"]
@@ -485,7 +487,7 @@ async def test_flow_choose_entities_creates_config_entry(hass, bypass_setup):
         config_flow.ConfigFlowHandler.data,
         config_flow.ConfigFlowHandler.data,
         {
         {
             CONF_DEVICE_ID: "deviceid",
             CONF_DEVICE_ID: "deviceid",
-            CONF_LOCAL_KEY: "localkey",
+            CONF_LOCAL_KEY: TESTKEY,
             CONF_HOST: "hostname",
             CONF_HOST: "hostname",
             CONF_POLL_ONLY: False,
             CONF_POLL_ONLY: False,
             CONF_PROTOCOL_VERSION: "auto",
             CONF_PROTOCOL_VERSION: "auto",
@@ -518,7 +520,7 @@ async def test_flow_choose_entities_creates_config_entry(hass, bypass_setup):
             "data": {
             "data": {
                 CONF_DEVICE_ID: "deviceid",
                 CONF_DEVICE_ID: "deviceid",
                 CONF_HOST: "hostname",
                 CONF_HOST: "hostname",
-                CONF_LOCAL_KEY: "localkey",
+                CONF_LOCAL_KEY: TESTKEY,
                 CONF_POLL_ONLY: False,
                 CONF_POLL_ONLY: False,
                 CONF_PROTOCOL_VERSION: "auto",
                 CONF_PROTOCOL_VERSION: "auto",
                 CONF_TYPE: "kogan_kahtp_heater",
                 CONF_TYPE: "kogan_kahtp_heater",
@@ -538,7 +540,7 @@ async def test_options_flow_init(hass):
         data={
         data={
             CONF_DEVICE_ID: "deviceid",
             CONF_DEVICE_ID: "deviceid",
             CONF_HOST: "hostname",
             CONF_HOST: "hostname",
-            CONF_LOCAL_KEY: "localkey",
+            CONF_LOCAL_KEY: TESTKEY,
             CONF_NAME: "test",
             CONF_NAME: "test",
             CONF_POLL_ONLY: False,
             CONF_POLL_ONLY: False,
             CONF_PROTOCOL_VERSION: "auto",
             CONF_PROTOCOL_VERSION: "auto",
@@ -559,7 +561,7 @@ async def test_options_flow_init(hass):
     assert result["data_schema"](
     assert result["data_schema"](
         {
         {
             CONF_HOST: "hostname",
             CONF_HOST: "hostname",
-            CONF_LOCAL_KEY: "localkey",
+            CONF_LOCAL_KEY: TESTKEY,
         }
         }
     )
     )
 
 
@@ -577,7 +579,7 @@ async def test_options_flow_modifies_config(mock_test, hass, bypass_setup):
         data={
         data={
             CONF_DEVICE_ID: "deviceid",
             CONF_DEVICE_ID: "deviceid",
             CONF_HOST: "hostname",
             CONF_HOST: "hostname",
-            CONF_LOCAL_KEY: "localkey",
+            CONF_LOCAL_KEY: TESTKEY,
             CONF_NAME: "test",
             CONF_NAME: "test",
             CONF_POLL_ONLY: False,
             CONF_POLL_ONLY: False,
             CONF_PROTOCOL_VERSION: "auto",
             CONF_PROTOCOL_VERSION: "auto",
@@ -625,7 +627,7 @@ async def test_options_flow_fails_when_connection_fails(mock_test, hass):
         data={
         data={
             CONF_DEVICE_ID: "deviceid",
             CONF_DEVICE_ID: "deviceid",
             CONF_HOST: "hostname",
             CONF_HOST: "hostname",
-            CONF_LOCAL_KEY: "localkey",
+            CONF_LOCAL_KEY: TESTKEY,
             CONF_NAME: "test",
             CONF_NAME: "test",
             CONF_POLL_ONLY: False,
             CONF_POLL_ONLY: False,
             CONF_PROTOCOL_VERSION: "auto",
             CONF_PROTOCOL_VERSION: "auto",
@@ -665,7 +667,7 @@ async def test_options_flow_fails_when_config_is_missing(mock_test, hass):
         data={
         data={
             CONF_DEVICE_ID: "deviceid",
             CONF_DEVICE_ID: "deviceid",
             CONF_HOST: "hostname",
             CONF_HOST: "hostname",
-            CONF_LOCAL_KEY: "localkey",
+            CONF_LOCAL_KEY: TESTKEY,
             CONF_NAME: "test",
             CONF_NAME: "test",
             CONF_POLL_ONLY: False,
             CONF_POLL_ONLY: False,
             CONF_PROTOCOL_VERSION: "auto",
             CONF_PROTOCOL_VERSION: "auto",