diff --git a/octoprint_bambu_printer/printer/remote_sd_card_file_list.py b/octoprint_bambu_printer/printer/remote_sd_card_file_list.py index fc5ee73..a11d524 100644 --- a/octoprint_bambu_printer/printer/remote_sd_card_file_list.py +++ b/octoprint_bambu_printer/printer/remote_sd_card_file_list.py @@ -78,9 +78,7 @@ class RemoteSDCardFileList: existing_files.append(file_info.file_name) def _get_existing_files_info(self): - host = self._settings.get(["host"]) - access_code = self._settings.get(["access_code"]) - ftp = IoTFTPSClient(str(host), 990, "bblp", str(access_code), ssl_implicit=True) + ftp = self._connect_ftps_server() all_files_info: list[FileInfo] = [] existing_files = [] @@ -95,6 +93,12 @@ class RemoteSDCardFileList: return all_files_info + def _connect_ftps_server(self): + host = self._settings.get(["host"]) + access_code = self._settings.get(["access_code"]) + ftp = IoTFTPSClient(str(host), 990, "bblp", str(access_code), ssl_implicit=True) + return ftp + def _get_file_data(self, file_path: str) -> FileInfo | None: self._logger.debug(f"_getSdFileData: {file_path}") file_name = Path(file_path).name.lower() diff --git a/test/test_gcode_execution.py b/test/test_gcode_execution.py index 40787b1..e686234 100644 --- a/test/test_gcode_execution.py +++ b/test/test_gcode_execution.py @@ -1,15 +1,20 @@ from __future__ import annotations +from collections.abc import Callable from datetime import datetime, timezone import logging from pathlib import Path import time +from typing import Any import unittest from unittest.mock import MagicMock import unittest.mock from octoprint_bambu_printer.bambu_print_plugin import BambuPrintPlugin from octoprint_bambu_printer.printer.bambu_virtual_printer import BambuVirtualPrinter -from octoprint_bambu_printer.printer.remote_sd_card_file_list import FileInfo +from octoprint_bambu_printer.printer.remote_sd_card_file_list import ( + FileInfo, + RemoteSDCardFileList, +) from octoprint_bambu_printer.printer.states.idle_state import IdleState from octoprint_bambu_printer.printer.states.paused_state import PausedState from octoprint_bambu_printer.printer.states.print_finished_state import ( @@ -33,11 +38,11 @@ def log_test(): class DictGetter: def __init__(self, options: dict) -> None: - self._options = options + self._options: dict[str | tuple[str, ...], Any] = options - def __call__(self, key: str | list[str]): + def __call__(self, key: str | list[str] | tuple[str, ...]): if isinstance(key, list): - key = "_".join(key) + key = tuple(key) return self._options.get(key, None) @@ -96,13 +101,19 @@ def ftps_session_mock(files_info_ftp): ) all_files = list(files_info_ftp.keys()) - ftps_client_mock.list_files.side_effect = DictGetter( + file_registry = DictGetter( { ("", ".3mf"): all_files, ("cache/", ".3mf"): [f"cache/{file}" for file in all_files], } ) + ftps_client_mock.list_files.side_effect = lambda folder, ext: file_registry( + (folder, ext) + ) ftps_client_mock.ftps_session = ftps_session + RemoteSDCardFileList._connect_ftps_server = MagicMock( + return_value=ftps_client_mock + ) yield