#!/usr/bin/env python # coding=utf-8 from __future__ import absolute_import import unittest import mock from octoprint_tailscale_funnel import TailscaleFunnelPlugin import octoprint_tailscale_funnel class TestTailscaleFunnelPlugin(unittest.TestCase): def setUp(self): self.plugin = TailscaleFunnelPlugin() def test_plugin_name(self): # Test that the plugin has the correct name self.assertEqual(octoprint_tailscale_funnel.__plugin_name__, "Tailscale Funnel Plugin") def test_get_settings_defaults(self): # Test that the default settings are correct defaults = self.plugin.get_settings_defaults() self.assertIn("enabled", defaults) self.assertIn("port", defaults) self.assertIn("confirm_enable", defaults) self.assertEqual(defaults["enabled"], False) self.assertEqual(defaults["port"], 80) self.assertEqual(defaults["confirm_enable"], True) def test_get_assets(self): # Test that the assets are correctly defined assets = self.plugin.get_assets() self.assertIn("js", assets) self.assertIn("css", assets) self.assertIn("less", assets) self.assertIn("js/tailscale_funnel.js", assets["js"]) self.assertIn("css/tailscale_funnel.css", assets["css"]) self.assertIn("less/tailscale_funnel.less", assets["less"]) @mock.patch('octoprint_tailscale_funnel.tailscale_interface.subprocess.run') def test_get_update_information(self, mock_run): # Setup self.plugin._plugin_version = "1.0.0" # Execute update_info = self.plugin.get_update_information() # Assert self.assertIn("tailscale_funnel", update_info) plugin_info = update_info["tailscale_funnel"] self.assertEqual(plugin_info["displayName"], "Tailscale Funnel Plugin") self.assertEqual(plugin_info["displayVersion"], "1.0.0") self.assertEqual(plugin_info["type"], "github_release") self.assertEqual(plugin_info["user"], "markus") self.assertEqual(plugin_info["repo"], "OctoPrint-Tailscale-Funnel") if __name__ == '__main__': unittest.main()