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']
Exemple #3
0
    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()
Exemple #4
0
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 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"')
Exemple #9
0
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"')
Exemple #10
0
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
Exemple #11
0
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
Exemple #12
0
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()
Exemple #13
0
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()
Exemple #14
0
    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)
Exemple #15
0
    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()
        }
Exemple #16
0
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)
Exemple #17
0
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)
Exemple #18
0
    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()
        }
Exemple #19
0
    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()
Exemple #20
0
    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
Exemple #21
0
    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()
Exemple #23
0
def test_import(server):
    assert 'isic_challenge_submission' in loadedPlugins()
Exemple #24
0
def test_import(server):
    assert 'histomicsui' in loadedPlugins()
def test_import(server):
    assert 'resource_path_tools' in loadedPlugins()
Exemple #26
0
def test_import(server):
    assert '{{ cookiecutter.entrypoint_name }}' in loadedPlugins()
Exemple #27
0
def test_import(server):
    assert 'girder_mouse' in loadedPlugins()
def test_import(server):
    assert 'geo_heatmap' in loadedPlugins()
Exemple #29
0
def test_import(server):
    assert 'stem' in loadedPlugins()
Exemple #30
0
def test_import(server):
    assert 'nwb' in loadedPlugins()
Exemple #31
0
def test_import(server):
    assert 'arbor_tasks' in loadedPlugins()
def test_import(server):
    assert 'slicer_job_adjuster' in loadedPlugins()
Exemple #33
0
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() == []
Exemple #34
0
def test_import(server):
    assert "dandi_archive" in loadedPlugins()
Exemple #35
0
def test_import(server):
    assert 'slicer_cli_web' in loadedPlugins()
Exemple #36
0
def test_import(server):
    assert 'annotation_tracker' in loadedPlugins()
Exemple #37
0
def test_import(server):
    assert 'colormaps' in loadedPlugins()