From f7eaeb7a398b807c2945af8f1e3d08bd9078be1e Mon Sep 17 00:00:00 2001 From: Matthias Alphart Date: Thu, 2 Mar 2023 16:13:02 +0100 Subject: [PATCH] Fix KNX Keyfile upload (#89029) * Fix KNX Keyfile upload * use shutil.move instead --- homeassistant/components/knx/config_flow.py | 11 ++++++++--- tests/components/knx/test_config_flow.py | 11 ++++++----- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/knx/config_flow.py b/homeassistant/components/knx/config_flow.py index ec79dbc5f9a..85e23cbe547 100644 --- a/homeassistant/components/knx/config_flow.py +++ b/homeassistant/components/knx/config_flow.py @@ -4,6 +4,7 @@ from __future__ import annotations from abc import ABC, abstractmethod from collections.abc import AsyncGenerator from pathlib import Path +import shutil from typing import Any, Final import voluptuous as vol @@ -549,9 +550,12 @@ class KNXCommonFlow(ABC, FlowHandler): ), None, ) + _tunnel_identifier = selected_tunnel_ia or self.new_entry_data.get( + CONF_HOST + ) + _tunnel_suffix = f" @ {_tunnel_identifier}" if _tunnel_identifier else "" self.new_title = ( - f"{'Secure ' if _if_user_id else ''}" - f"Tunneling @ {selected_tunnel_ia or self.new_entry_data[CONF_HOST]}" + f"{'Secure ' if _if_user_id else ''}Tunneling{_tunnel_suffix}" ) return self.finish_flow() @@ -708,7 +712,8 @@ class KNXCommonFlow(ABC, FlowHandler): else: dest_path = Path(self.hass.config.path(STORAGE_DIR, DOMAIN)) dest_path.mkdir(exist_ok=True) - file_path.rename(dest_path / DEFAULT_KNX_KEYRING_FILENAME) + dest_file = dest_path / DEFAULT_KNX_KEYRING_FILENAME + shutil.move(file_path, dest_file) return keyring, errors keyring, errors = await self.hass.async_add_executor_job(_process_upload) diff --git a/tests/components/knx/test_config_flow.py b/tests/components/knx/test_config_flow.py index 4ac6a366119..054d7844714 100644 --- a/tests/components/knx/test_config_flow.py +++ b/tests/components/knx/test_config_flow.py @@ -77,16 +77,17 @@ def patch_file_upload(return_value=FIXTURE_KEYRING, side_effect=None): side_effect=side_effect, ), patch( "pathlib.Path.mkdir" - ) as mkdir_mock: - file_path_mock = Mock() - file_upload_mock.return_value.__enter__.return_value = file_path_mock + ) as mkdir_mock, patch( + "shutil.move" + ) as shutil_move_mock: + file_upload_mock.return_value.__enter__.return_value = Mock() yield return_value if side_effect: mkdir_mock.assert_not_called() - file_path_mock.rename.assert_not_called() + shutil_move_mock.assert_not_called() else: mkdir_mock.assert_called_once() - file_path_mock.rename.assert_called_once() + shutil_move_mock.assert_called_once() def _gateway_descriptor(