def test_check_plugin_archive(self): with mock.patch('compose.plugin_manager.zipfile.is_zipfile') as mock_is_zipfile, \ mock.patch('compose.plugin_manager.zipfile.ZipFile') as mock_zipfile, \ mock.patch('compose.plugin_manager.tarfile.is_tarfile') as mock_is_tarfile, \ mock.patch('compose.plugin_manager.tarfile.TarFile') as mock_tarfile: plugin_manager = PluginManager('plugin_dir') mock_is_zipfile.return_value = False mock_is_tarfile.return_value = False with self.assertRaises(InvalidPluginFileTypeError) as e: plugin_manager._check_plugin_archive('no_plugin') self.assertEqual(str(e.exception), "Invalid file type.") mock_is_zipfile.return_value = True mock_zipfile.return_value = self._get_archive_mock([]) with self.assertRaises(InvalidPluginError) as e: plugin_manager._check_plugin_archive('no_plugin') self.assertEqual(str(e.exception), "Wrong plugin structure.") mock_zipfile.return_value = self._get_archive_mock([ 'root_dir/', 'second_root_dir/', 'root_dir/plugin.json' ]) with self.assertRaises(InvalidPluginError) as e: plugin_manager._check_plugin_archive('plugin.zip') self.assertEqual(str(e.exception), "Wrong plugin structure.") mock_zipfile.return_value = self._get_archive_mock([ 'root_dir/', 'root_dir/plugin.js' ]) with self.assertRaises(InvalidPluginError) as e: plugin_manager._check_plugin_archive('plugin.zip') self.assertEqual(str(e.exception), "Missing plugin.json file.") mock_zipfile.return_value = self._get_archive_mock([ 'root_dir/', 'root_dir/plugin.json' ]) result = plugin_manager._check_plugin_archive('plugin.zip') self.assertEqual(result, "plugin_dir/root_dir") mock_is_zipfile.return_value = False mock_is_tarfile.return_value = True mock_tarfile.return_value = self._get_archive_mock([ 'root_dir/', 'root_dir/plugin.json' ]) result = plugin_manager._check_plugin_archive('plugin.zip') self.assertEqual(result, "plugin_dir/root_dir")