def test_archiveEndpoints(server, admin, fsAssetstore): # See comments above assert 'girder_archive_access' in loadedPlugins() testDir = os.path.dirname(os.path.realpath(__file__)) filePath = os.path.join(testDir, 'TCIA.image.tar.bz2') name = os.path.basename(filePath) publicFolder = Folder().find({ 'parentId': admin['_id'], 'name': 'Public', })[0] file = Upload().uploadFromFile(open(filePath, 'rb'), os.path.getsize(filePath), name, parentType='folder', parent=publicFolder, user=admin, assetstore=fsAssetstore) resp = server.request(path='/file/%s/archive' % file['_id'], user=admin) assert len(resp.json['names']) == 10 resp = server.request(path='/file/%s/archive/download' % file['_id'], params={'path': '002.dcm'}, user=admin, isJson=False) datalen = 0 for chunk in resp.body: if not isinstance(chunk, six.binary_type): chunk = chunk.encode('utf8') datalen += len(chunk) assert datalen == 527192
def testLoadMultiplePluginsWithFailure(registry, logprint): plugin._loadPlugins(['plugin1', 'plugin2'], {}) logprint.exception.assert_has_calls( [mock.call('Failed to load plugin plugin1')]) assert 'plugin1' in plugin.getPluginFailureInfo() assert plugin.loadedPlugins() == ['plugin2']
def _renderHTML(self): from girder.utility import server from girder.plugin import loadedPlugins self.vars['plugins'] = loadedPlugins() self.vars['pluginCss'] = [] self.vars['pluginJs'] = [] builtDir = os.path.join(constants.STATIC_ROOT_DIR, 'built', 'plugins') for plugin in self.vars['plugins']: if os.path.exists(os.path.join(builtDir, plugin, 'plugin.min.css')): self.vars['pluginCss'].append(plugin) if os.path.exists(os.path.join(builtDir, plugin, 'plugin.min.js')): self.vars['pluginJs'].append(plugin) self.vars['apiRoot'] = server.getApiRoot() self.vars['staticPublicPath'] = server.getStaticPublicPath() self.vars['brandName'] = Setting().get(SettingKey.BRAND_NAME) self.vars['contactEmail'] = Setting().get( SettingKey.CONTACT_EMAIL_ADDRESS) self.vars['privacyNoticeHref'] = Setting().get( SettingKey.PRIVACY_NOTICE) self.vars['bannerColor'] = Setting().get(SettingKey.BANNER_COLOR) self.vars['registrationPolicy'] = Setting().get( SettingKey.REGISTRATION_POLICY) self.vars['enablePasswordLogin'] = Setting().get( SettingKey.ENABLE_PASSWORD_LOGIN) return super(Webroot, self)._renderHTML()
def testLoadPluginsMissing(registry): # This case should not typically happen outside of the testing environment with pytest.raises(GirderException, match='Plugin missing is not installed'): plugin._loadPlugins(info={}, names=['missing']) assert plugin.loadedPlugins() == []
def testPluginLoadOrder(registry, logprint): plugin.getPlugin('plugin0').load({}) assert plugin.loadedPlugins() == ['plugin1', 'plugin2', 'plugin0'] logprint.success.assert_has_calls([ mock.call('Loaded plugin "plugin1"'), mock.call('Loaded plugin "plugin2"'), mock.call('Loaded plugin "plugin0"') ])
def testLoadMultiplePluginsWithFailure(registry, logprint): plugin._loadPlugins(['plugin1', 'plugin2'], {}) logprint.exception.assert_has_calls([ mock.call('Failed to load plugin plugin1') ]) assert 'plugin1' in plugin.getPluginFailureInfo() assert plugin.loadedPlugins() == ['plugin2']
def testLoadPluginsSingle(registry, logprint): plugin._loadPlugins(info={}, names=['plugin1']) assert set(plugin.loadedPlugins()) == {'plugin1'} plugin1Definition = plugin.getPlugin('plugin1') assert plugin1Definition is not None assert plugin1Definition.loaded is True plugin1Definition._testLoadMock.assert_called_once() logprint.success.assert_any_call('Loaded plugin "plugin1"')
def testLoadPluginsWithError(registry): with pytest.raises(Exception) as exception1: plugin._loadPlugins(info={}, names=['throws']) assert plugin.loadedPlugins() == [] # Try again, as this shouldn't corrupt the loading system with pytest.raises(Exception) as exception2: plugin._loadPlugins(info={}, names=['throws']) # Ensure the exception is new each time assert exception1.value is not exception2.value
def testLoadPluginsExclusion(registry): # Ignoring installed but not-requested plugins only happens in the testing environment, but # is critical functionality plugin._loadPlugins(info={}, names=['plugin1']) assert set(plugin.loadedPlugins()) == {'plugin1'} for pluginName in ['plugin2', 'plugin3']: pluginDefinition = plugin.getPlugin(pluginName) assert pluginDefinition is not None assert pluginDefinition.loaded is False pluginDefinition._testLoadMock.assert_not_called()
def load(self, info): getPlugin('gravatar').load(info) getPlugin('jobs').load(info) getPlugin('worker').load(info) getPlugin('thumbnails').load(info) mail_utils.addTemplateDirectory(os.path.join(_HERE, 'mail_templates')) ModelImporter.registerModel('challenge', Challenge, 'covalic') ModelImporter.registerModel('phase', Phase, 'covalic') ModelImporter.registerModel('submission', Submission, 'covalic') resource.allowedSearchTypes.add('challenge.covalic') info['apiRoot'].challenge = ChallengeResource() info['apiRoot'].challenge_phase = PhaseResource() info['apiRoot'].covalic_submission = SubmissionResource() webroot = WebrootBase(os.path.join(_HERE, 'webroot.mako')) webroot.updateHtmlVars({ 'pluginCss': [ plugin for plugin in loadedPlugins() if os.path.exists(os.path.join( STATIC_ROOT_DIR, 'built', 'plugins', plugin, 'plugin.min.css')) ], 'pluginJs': [ plugin for plugin in loadedPlugins() if os.path.exists(os.path.join( STATIC_ROOT_DIR, 'built', 'plugins', plugin, 'plugin.min.js')) ] }) registerPluginWebroot(webroot, 'covalic') events.bind('jobs.job.update', 'covalic', onJobUpdate) events.bind('model.setting.validate', 'covalic', validateSettings) events.bind('model.challenge_challenge.save.after', 'covalic', challengeSaved) events.bind('model.challenge_phase.save.after', 'covalic', onPhaseSave) events.bind('model.user.save.after', 'covalic', onUserSave)
def getPlugins(self): def _pluginNameToResponse(name): p = plugin.getPlugin(name) return { 'name': p.displayName, 'description': p.description, 'url': p.url, 'version': p.version } return { 'all': {name: _pluginNameToResponse(name) for name in plugin.allPlugins()}, 'loaded': plugin.loadedPlugins() }
def testLoadPluginsWithDeps(registry, logprint): plugin._loadPlugins(info={}, names=['plugin2']) assert set(plugin.loadedPlugins()) == {'plugin1', 'plugin2'} for pluginName in ['plugin1', 'plugin2']: pluginDefinition = plugin.getPlugin(pluginName) assert pluginDefinition is not None assert pluginDefinition.loaded is True pluginDefinition._testLoadMock.assert_called_once() # Since plugin1 is the dependant, it must be loaded first logprint.success.assert_has_calls([ mock.call('Loaded plugin "plugin1"'), mock.call('Loaded plugin "plugin2"') ], any_order=False)
def getPlugins(self): def _pluginNameToResponse(name): p = plugin.getPlugin(name) return { 'name': p.displayName, 'description': p.description, 'url': p.url, 'version': p.version } return { 'all': { name: _pluginNameToResponse(name) for name in plugin.allPlugins() }, 'loaded': plugin.loadedPlugins() }
def _renderHTML(self): from girder.utility import server from girder.plugin import loadedPlugins self.vars['plugins'] = loadedPlugins() self.vars['pluginCss'] = [] self.vars['pluginJs'] = [] builtDir = os.path.join(constants.STATIC_ROOT_DIR, 'built', 'plugins') for plugin in self.vars['plugins']: if os.path.exists(os.path.join(builtDir, plugin, 'plugin.min.css')): self.vars['pluginCss'].append(plugin) if os.path.exists(os.path.join(builtDir, plugin, 'plugin.min.js')): self.vars['pluginJs'].append(plugin) self.vars['apiRoot'] = server.getApiRoot() self.vars['staticPublicPath'] = server.getStaticPublicPath() self.vars['brandName'] = Setting().get(SettingKey.BRAND_NAME) self.vars['contactEmail'] = Setting().get(SettingKey.CONTACT_EMAIL_ADDRESS) self.vars['privacyNoticeHref'] = Setting().get(SettingKey.PRIVACY_NOTICE) self.vars['bannerColor'] = Setting().get(SettingKey.BANNER_COLOR) self.vars['registrationPolicy'] = Setting().get(SettingKey.REGISTRATION_POLICY) self.vars['enablePasswordLogin'] = Setting().get(SettingKey.ENABLE_PASSWORD_LOGIN) return super(Webroot, self)._renderHTML()
def getPlugins(self): def _pluginNameToResponse(name): p = plugin.getPlugin(name) return { 'name': p.displayName, 'description': p.description, 'url': p.url, 'version': p.version } plugins = { 'all': {name: _pluginNameToResponse(name) for name in plugin.allPlugins()}, 'enabled': Setting().get(SettingKey.PLUGINS_ENABLED), 'loaded': plugin.loadedPlugins() } failureInfo = { plugin: ''.join(traceback.format_exception(*exc_info)) for plugin, exc_info in six.iteritems(plugin.getPluginFailureInfo()) } if failureInfo: plugins['failed'] = failureInfo return plugins
def test_import(server): assert 'nli' in loadedPlugins()
def test_import(server): assert 'isic_challenge_submission' in loadedPlugins()
def test_import(server): assert 'histomicsui' in loadedPlugins()
def test_import(server): assert 'resource_path_tools' in loadedPlugins()
def test_import(server): assert '{{ cookiecutter.entrypoint_name }}' in loadedPlugins()
def test_import(server): assert 'girder_mouse' in loadedPlugins()
def test_import(server): assert 'geo_heatmap' in loadedPlugins()
def test_import(server): assert 'stem' in loadedPlugins()
def test_import(server): assert 'nwb' in loadedPlugins()
def test_import(server): assert 'arbor_tasks' in loadedPlugins()
def test_import(server): assert 'slicer_job_adjuster' in loadedPlugins()
def test_import(server): assert "dandi_archive" in loadedPlugins()
def test_import(server): assert 'slicer_cli_web' in loadedPlugins()
def test_import(server): assert 'annotation_tracker' in loadedPlugins()
def test_import(server): assert 'colormaps' in loadedPlugins()