57 lines
3.1 KiB
Python
57 lines
3.1 KiB
Python
import unittest
|
|
from pathlib import Path
|
|
|
|
|
|
class AuthReloginSmokeTests(unittest.TestCase):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
cls.source = Path("main.py").read_text(encoding="utf-8")
|
|
|
|
def test_auth_command_builder_handles_frozen_and_source(self):
|
|
self.assertIn("def _build_auth_command(self, auth_url, output_path):", self.source)
|
|
self.assertIn('return sys.executable, ["--auth", auth_url, output_path]', self.source)
|
|
self.assertIn('return sys.executable, [os.path.abspath(__file__), "--auth", auth_url, output_path]', self.source)
|
|
|
|
def test_auth_runs_via_qprocess(self):
|
|
self.assertIn("process = QProcess(self)", self.source)
|
|
self.assertIn("process.start(program, args)", self.source)
|
|
self.assertIn("def _on_auth_process_finished(self, exit_code, _exit_status):", self.source)
|
|
self.assertIn("if self.auth_process and self.auth_process.state() == QProcess.NotRunning:", self.source)
|
|
|
|
def test_force_relogin_has_backoff_and_event_log(self):
|
|
self.assertIn("AUTH_RELOGIN_BACKOFF_SECONDS = 5.0", self.source)
|
|
self.assertIn("if self._auth_relogin_in_progress:", self.source)
|
|
self.assertIn("force_relogin_backoff", self.source)
|
|
self.assertIn("force_relogin", self.source)
|
|
|
|
def test_auth_error_paths_trigger_force_relogin(self):
|
|
self.assertIn("def _handle_vk_api_error(self, context, exc, action_name=None, ui_message_prefix=None, disable_ui=False):", self.source)
|
|
self.assertIn("self._force_relogin(exc, action_name or context)", self.source)
|
|
self.assertIn('"load_chats",', self.source)
|
|
self.assertIn('"execute_user_action",', self.source)
|
|
self.assertIn('"set_user_admin",', self.source)
|
|
|
|
def test_tab_checkbox_lists_use_existing_attributes(self):
|
|
self.assertIn("self.warehouse_chat_checkboxes", self.source)
|
|
self.assertIn("self.coffee_chat_checkboxes", self.source)
|
|
self.assertNotIn("self.retail_warehouse_checkboxes", self.source)
|
|
self.assertNotIn("self.retail_coffee_checkboxes", self.source)
|
|
|
|
def test_update_check_actions_exist(self):
|
|
self.assertIn("from app_version import APP_VERSION", self.source)
|
|
self.assertIn("UPDATE_REPOSITORY = ", self.source)
|
|
self.assertIn('QAction("Проверить обновления", self)', self.source)
|
|
self.assertIn("def check_for_updates(self, silent_no_updates=False):", self.source)
|
|
self.assertIn("class UpdateChecker(QObject):", self.source)
|
|
self.assertIn('message_box.addButton("Обновить сейчас", QMessageBox.AcceptRole)', self.source)
|
|
self.assertIn("def _start_auto_update(self, download_url, latest_version, checksum_url=\"\", download_name=\"\"):", self.source)
|
|
self.assertIn("def _verify_update_checksum(self, zip_path, checksum_url, download_name):", self.source)
|
|
self.assertIn("def _build_update_script(self, app_dir, source_dir, exe_name, target_pid):", self.source)
|
|
self.assertIn("set TARGET_PID=", self.source)
|
|
self.assertIn("set BACKUP_DIR=", self.source)
|
|
self.assertIn(":rollback", self.source)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|