Fix remote sd card mocks.

This commit is contained in:
Anton Skrypnyk 2024-07-24 17:15:46 +03:00
parent 07f601694d
commit 06c9d68390
2 changed files with 23 additions and 8 deletions

View File

@ -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()

View File

@ -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