diff --git a/tests/filemanager/__init__.py b/tests/filemanager/__init__.py index 107fc063..92a8db72 100644 --- a/tests/filemanager/__init__.py +++ b/tests/filemanager/__init__.py @@ -8,100 +8,3 @@ from __future__ import absolute_import __author__ = "Gina Häußge " __license__ = 'GNU Affero General Public License http://www.gnu.org/licenses/agpl.html' __copyright__ = "Copyright (C) 2014 The OctoPrint Project - Released under terms of the AGPLv3 License" - -import unittest -import mock - -import octoprint.filemanager - -class FilemanagerUtilTest(unittest.TestCase): - - def setUp(self): - # mock plugin manager - self.plugin_manager_patcher = mock.patch("octoprint.plugin.plugin_manager") - self.plugin_manager_getter = self.plugin_manager_patcher.start() - - self.plugin_manager = mock.MagicMock() - - hook_extensions = dict( - some_plugin=lambda: dict(dict(machinecode=dict(foo=["foo", "f"]))), - other_plugin=lambda: dict(dict(model=dict(amf=["amf"]))), - mime_map=lambda: dict( - mime_map=dict( - mime_map_yes=octoprint.filemanager.ContentTypeMapping(["mime_map_yes"], "application/mime_map_yes") - ) - ), - mime_detect=lambda: dict( - dict( - machinecode=dict( - mime_detect_yes=octoprint.filemanager.ContentTypeDetector(["mime_detect_yes"], lambda x: "application/mime_detect_yes"), - mime_detect_no=octoprint.filemanager.ContentTypeDetector(["mime_detect_no"], lambda x: None) - ) - ) - ) - ) - self.plugin_manager.get_hooks.return_value = hook_extensions - - self.plugin_manager_getter.return_value = self.plugin_manager - - def tearDown(self): - self.plugin_manager_patcher.stop() - - def test_full_extension_tree(self): - full = octoprint.filemanager.full_extension_tree() - self.assertTrue("machinecode" in full) - self.assertTrue("gcode" in full["machinecode"]) - self.assertTrue(isinstance(full["machinecode"]["gcode"], octoprint.filemanager.ContentTypeMapping)) - self.assertItemsEqual(["gcode", "gco", "g"], full["machinecode"]["gcode"].extensions) - self.assertTrue("foo" in full["machinecode"]) - self.assertTrue(isinstance(full["machinecode"]["foo"], list)) - self.assertItemsEqual(["f", "foo"], full["machinecode"]["foo"]) - - self.assertTrue("model" in full) - self.assertTrue("stl" in full["model"]) - self.assertTrue(isinstance(full["model"]["stl"], octoprint.filemanager.ContentTypeMapping)) - self.assertItemsEqual(["stl"], full["model"]["stl"].extensions) - self.assertTrue("amf" in full["model"]) - self.assertTrue(isinstance(full["model"]["amf"], list)) - self.assertItemsEqual(["amf"], full["model"]["amf"]) - - def test_get_mimetype(self): - self.assertEquals(octoprint.filemanager.get_mime_type("foo.stl"), "application/sla") - self.assertEquals(octoprint.filemanager.get_mime_type("foo.gcode"), "text/plain") - self.assertEquals(octoprint.filemanager.get_mime_type("foo.unknown"), "application/octet-stream") - self.assertEquals(octoprint.filemanager.get_mime_type("foo.mime_map_yes"), "application/mime_map_yes") - self.assertEquals(octoprint.filemanager.get_mime_type("foo.mime_map_no"), "application/octet-stream") - self.assertEquals(octoprint.filemanager.get_mime_type("foo.mime_detect_yes"), "application/mime_detect_yes") - self.assertEquals(octoprint.filemanager.get_mime_type("foo.mime_detect_no"), "application/octet-stream") - - def test_valid_file_type(self): - self.assertTrue(octoprint.filemanager.valid_file_type("foo.stl", type="model")) - self.assertTrue(octoprint.filemanager.valid_file_type("foo.stl", type="stl")) - self.assertFalse(octoprint.filemanager.valid_file_type("foo.stl", type="machinecode")) - self.assertTrue(octoprint.filemanager.valid_file_type("foo.foo", type="machinecode")) - self.assertTrue(octoprint.filemanager.valid_file_type("foo.foo", type="foo")) - self.assertTrue(octoprint.filemanager.valid_file_type("foo.foo")) - self.assertTrue(octoprint.filemanager.valid_file_type("foo.mime_map_yes")) - self.assertTrue(octoprint.filemanager.valid_file_type("foo.mime_detect_yes")) - self.assertFalse(octoprint.filemanager.valid_file_type("foo.unknown")) - - def test_get_file_type(self): - self.assertEquals(["machinecode", "gcode"], octoprint.filemanager.get_file_type("foo.gcode")) - self.assertEquals(["machinecode", "gcode"], octoprint.filemanager.get_file_type("foo.gco")) - self.assertEquals(["machinecode", "foo"], octoprint.filemanager.get_file_type("foo.f")) - self.assertEquals(["model", "stl"], octoprint.filemanager.get_file_type("foo.stl")) - self.assertEquals(["model", "amf"], octoprint.filemanager.get_file_type("foo.amf")) - self.assertIsNone(octoprint.filemanager.get_file_type("foo.unknown")) - - def test_hook_failure(self): - def hook(): - raise RuntimeError("Boo!") - self.plugin_manager.get_hooks.return_value = dict(hook=hook) - - with mock.patch("octoprint.filemanager.logging") as patched_logging: - logger = mock.MagicMock() - patched_logging.getLogger.return_value = logger - - octoprint.filemanager.get_all_extensions() - - self.assertEquals(1, len(logger.mock_calls)) diff --git a/tests/filemanager/test_filemanager.py b/tests/filemanager/test_filemanager.py index 64c72528..96ac277c 100644 --- a/tests/filemanager/test_filemanager.py +++ b/tests/filemanager/test_filemanager.py @@ -13,6 +13,98 @@ import mock import octoprint.filemanager import octoprint.filemanager.util +class FilemanagerMethodTest(unittest.TestCase): + + def setUp(self): + # mock plugin manager + self.plugin_manager_patcher = mock.patch("octoprint.plugin.plugin_manager") + self.plugin_manager_getter = self.plugin_manager_patcher.start() + + self.plugin_manager = mock.MagicMock() + + hook_extensions = dict( + some_plugin=lambda: dict(dict(machinecode=dict(foo=["foo", "f"]))), + other_plugin=lambda: dict(dict(model=dict(amf=["amf"]))), + mime_map=lambda: dict( + mime_map=dict( + mime_map_yes=octoprint.filemanager.ContentTypeMapping(["mime_map_yes"], "application/mime_map_yes") + ) + ), + mime_detect=lambda: dict( + dict( + machinecode=dict( + mime_detect_yes=octoprint.filemanager.ContentTypeDetector(["mime_detect_yes"], lambda x: "application/mime_detect_yes"), + mime_detect_no=octoprint.filemanager.ContentTypeDetector(["mime_detect_no"], lambda x: None) + ) + ) + ) + ) + self.plugin_manager.get_hooks.return_value = hook_extensions + + self.plugin_manager_getter.return_value = self.plugin_manager + + def tearDown(self): + self.plugin_manager_patcher.stop() + + def test_full_extension_tree(self): + full = octoprint.filemanager.full_extension_tree() + self.assertTrue("machinecode" in full) + self.assertTrue("gcode" in full["machinecode"]) + self.assertTrue(isinstance(full["machinecode"]["gcode"], octoprint.filemanager.ContentTypeMapping)) + self.assertItemsEqual(["gcode", "gco", "g"], full["machinecode"]["gcode"].extensions) + self.assertTrue("foo" in full["machinecode"]) + self.assertTrue(isinstance(full["machinecode"]["foo"], list)) + self.assertItemsEqual(["f", "foo"], full["machinecode"]["foo"]) + + self.assertTrue("model" in full) + self.assertTrue("stl" in full["model"]) + self.assertTrue(isinstance(full["model"]["stl"], octoprint.filemanager.ContentTypeMapping)) + self.assertItemsEqual(["stl"], full["model"]["stl"].extensions) + self.assertTrue("amf" in full["model"]) + self.assertTrue(isinstance(full["model"]["amf"], list)) + self.assertItemsEqual(["amf"], full["model"]["amf"]) + + def test_get_mimetype(self): + self.assertEquals(octoprint.filemanager.get_mime_type("foo.stl"), "application/sla") + self.assertEquals(octoprint.filemanager.get_mime_type("foo.gcode"), "text/plain") + self.assertEquals(octoprint.filemanager.get_mime_type("foo.unknown"), "application/octet-stream") + self.assertEquals(octoprint.filemanager.get_mime_type("foo.mime_map_yes"), "application/mime_map_yes") + self.assertEquals(octoprint.filemanager.get_mime_type("foo.mime_map_no"), "application/octet-stream") + self.assertEquals(octoprint.filemanager.get_mime_type("foo.mime_detect_yes"), "application/mime_detect_yes") + self.assertEquals(octoprint.filemanager.get_mime_type("foo.mime_detect_no"), "application/octet-stream") + + def test_valid_file_type(self): + self.assertTrue(octoprint.filemanager.valid_file_type("foo.stl", type="model")) + self.assertTrue(octoprint.filemanager.valid_file_type("foo.stl", type="stl")) + self.assertFalse(octoprint.filemanager.valid_file_type("foo.stl", type="machinecode")) + self.assertTrue(octoprint.filemanager.valid_file_type("foo.foo", type="machinecode")) + self.assertTrue(octoprint.filemanager.valid_file_type("foo.foo", type="foo")) + self.assertTrue(octoprint.filemanager.valid_file_type("foo.foo")) + self.assertTrue(octoprint.filemanager.valid_file_type("foo.mime_map_yes")) + self.assertTrue(octoprint.filemanager.valid_file_type("foo.mime_detect_yes")) + self.assertFalse(octoprint.filemanager.valid_file_type("foo.unknown")) + + def test_get_file_type(self): + self.assertEquals(["machinecode", "gcode"], octoprint.filemanager.get_file_type("foo.gcode")) + self.assertEquals(["machinecode", "gcode"], octoprint.filemanager.get_file_type("foo.gco")) + self.assertEquals(["machinecode", "foo"], octoprint.filemanager.get_file_type("foo.f")) + self.assertEquals(["model", "stl"], octoprint.filemanager.get_file_type("foo.stl")) + self.assertEquals(["model", "amf"], octoprint.filemanager.get_file_type("foo.amf")) + self.assertIsNone(octoprint.filemanager.get_file_type("foo.unknown")) + + def test_hook_failure(self): + def hook(): + raise RuntimeError("Boo!") + self.plugin_manager.get_hooks.return_value = dict(hook=hook) + + with mock.patch("octoprint.filemanager.logging") as patched_logging: + logger = mock.MagicMock() + patched_logging.getLogger.return_value = logger + + octoprint.filemanager.get_all_extensions() + + self.assertEquals(1, len(logger.mock_calls)) + class FileManagerTest(unittest.TestCase): def setUp(self):