def test_plugin_templates(self): """""" mock_app_dir = galaxy_mock.MockDir({ 'plugins': { 'plugin1': { 'templates': { 'test.mako': contents1 }, } } }) mock_app = galaxy_mock.MockApp(root=mock_app_dir.root_path) plugin_mgr = PageServingPluginManager(mock_app, 'test', directories_setting='plugins') self.assertEqual(plugin_mgr.plugins.keys(), ['plugin1']) plugin = plugin_mgr.plugins['plugin1'] rendered = plugin_mgr.fill_template(galaxy_mock.MockTrans(), plugin, 'test.mako', what='Hey', you='Ho', say='HeyHey HoHo') self.assertEqual(rendered, 'Hey Ho HeyHey HoHo') mock_app_dir.remove()
def setUp( self ): super(DataToolParameterTestCase, self).setUp() self.test_history = model.History() self.app.model.context.add( self.test_history ) self.app.model.context.flush() self.trans = galaxy_mock.MockTrans( history=self.test_history ) self.multiple = False self.optional = False self._param = None
def test_interactive_environ_plugin_load(self): """ """ mock_app_dir = galaxy_mock.MockDir({ 'plugins': { 'ipython': { 'config': { 'ipython.xml': ipython_config }, 'templates': { 'ipython.mako': ipython_template } }, } }) mock_app = galaxy_mock.MockApp(root=mock_app_dir.root_path) plugin_mgr = VisualizationsRegistry( mock_app, directories_setting='plugins', template_cache_dir=mock_app_dir.root_path) # use a mock request factory - this will be written into the filled template to show it was used plugin_mgr.IE_REQUEST_FACTORY = lambda t, p: 'mock_ie' expected_plugins_path = os.path.join(mock_app_dir.root_path, 'plugins') expected_plugin_names = ['ipython'] self.assertEqual(plugin_mgr.base_url, 'visualizations') self.assertItemsEqual(plugin_mgr.directories, [expected_plugins_path]) self.assertItemsEqual(plugin_mgr.plugins.keys(), expected_plugin_names) ipython_ie = plugin_mgr.plugins['ipython'] config = ipython_ie.get('config') self.assertEqual(ipython_ie.name, 'ipython') self.assertEqual(config.get('plugin_type'), 'interactive_environment') # get_api_key needs a user, fill_template a trans user = model.User(email="*****@*****.**", password="******") trans = galaxy_mock.MockTrans(user=user) # should return the (new) api key for the above user (see the template above) response = plugin_mgr.fill_template(trans, ipython_ie, 'ipython.mako') response.strip() self.assertIsInstance(response, basestring) self.assertTrue('-' in response) ie_request, api_key = response.split('-') self.assertEqual(ie_request, 'mock_ie') match = re.match(r'[a-f0-9]{32}', api_key) self.assertIsNotNone(match) self.assertEqual(match.span(), (0, 32)) mock_app_dir.remove()
def test_script_entry(self): """""" script_entry_config = test_utils.clean_multiline_string("""\ <?xml version="1.0" encoding="UTF-8"?> <visualization name="js-test"> <data_sources> <data_source> <model_class>HistoryDatasetAssociation</model_class> </data_source> </data_sources> <entry_point entry_point_type="script" data-main="one" src="bler"></entry_point> </visualization> """) mock_app_dir = galaxy_mock.MockDir({ 'plugins': { 'jstest': { 'config': { 'jstest.xml': script_entry_config }, 'static': {} }, } }) mock_app = galaxy_mock.MockApp(root=mock_app_dir.root_path) plugin_mgr = VisualizationsRegistry( mock_app, directories_setting='plugins', template_cache_dir=template_cache_dir) script_entry = plugin_mgr.plugins['jstest'] self.assertIsInstance(script_entry, plugin.ScriptVisualizationPlugin) self.assertEqual(script_entry.name, 'jstest') self.assertTrue(script_entry.serves_static) self.assertTrue(script_entry.serves_templates) self.assertEqual(script_entry.static_path, os.path.join(script_entry.path, 'static')) trans = galaxy_mock.MockTrans() script_entry._set_up_template_plugin(mock_app_dir.root_path, [addtional_templates_dir]) response = script_entry._render({}, trans=trans, embedded=True) # print response self.assertTrue('src="bler"' in response) self.assertTrue('type="text/javascript"' in response) self.assertTrue('data-main="one"' in response) mock_app_dir.remove()
def test_render(self): """ """ # use the python in a template to test for variables that should be there # TODO: gotta be a better way testing_template = test_utils.clean_multiline_string("""\ <% found_all = True should_have = [ title, visualization_name, visualization_display_name, visualization_id, saved_visualization, query, config, embedded, vars ] for var in should_have: try: var = str( var ) except NameError as name_err: found_all = False break %> ${ found_all } """) mock_app_dir = galaxy_mock.MockDir({ 'cache': {}, 'template.mako': testing_template }) mock_app = galaxy_mock.MockApp(root=mock_app_dir.root_path) plugin = self.plugin_class(mock_app, '', 'myvis', {"name": "Vlad News Bears"}) # somewhat easier to set this up by hand plugin.config['entry_point'] = {'file': 'template.mako'} plugin.template_path = mock_app_dir.root_path plugin.template_lookup = plugin._build_template_lookup( mock_app_dir.root_path) response = plugin.render(trans=galaxy_mock.MockTrans(app=mock_app)) self.assertIsInstance(response, string_types) self.assertEqual(response.strip(), "True")
def set_up_mocks(self): self.trans = galaxy_mock.MockTrans(admin_users=admin_users) self.app = self.trans.app
def test_interactive_environ_plugin_load( self ): """ """ ipython_config = test_utils.clean_multiline_string( """\ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE interactive_environment SYSTEM "../../interactive_environments.dtd"> <interactive_environment name="IPython"> <data_sources> <data_source> <model_class>HistoryDatasetAssociation</model_class> <test type="isinstance" test_attr="datatype" result_type="datatype">tabular.Tabular</test> <test type="isinstance" test_attr="datatype" result_type="datatype">data.Text</test> <to_param param_attr="id">dataset_id</to_param> </data_source> </data_sources> <params> <param type="dataset" var_name_in_template="hda" required="true">dataset_id</param> </params> <template>ipython.mako</template> </interactive_environment> """ ) mock_app_dir = { 'plugins': { 'ipython': { 'config': { 'ipython.xml': ipython_config }, 'templates': {} }, }, } # going to use a fake template here to simplify testing ipython_template = "${ ie_request }-${ get_api_key() }" mock_app_dir[ 'plugins' ][ 'ipython' ][ 'templates' ][ 'ipython.mako' ] = ipython_template # so that we don't create a cached version of that fake template in the real mako caches # we'll set up a cache in the temp dir mock_app_dir[ 'caches' ] = {} # and make sure the vis reg uses that mock_app_dir = galaxy_mock.MockDir( mock_app_dir ) mock_app = galaxy_mock.MockApp( root=mock_app_dir.root_path ) plugin_mgr = VisualizationsRegistry( mock_app, directories_setting='plugins', template_cache_dir=os.path.join( mock_app_dir.root_path, 'caches' ) ) # ...then start testing expected_plugins_path = os.path.join( mock_app_dir.root_path, 'plugins' ) expected_plugin_names = [ 'ipython' ] self.assertEqual( plugin_mgr.base_url, 'visualizations' ) self.assertEqual( plugin_mgr.directories, [ expected_plugins_path ] ) self.assertEqual( sorted(plugin_mgr.plugins.keys()), expected_plugin_names ) ipython = plugin_mgr.plugins[ 'ipython' ] config = ipython.config self.assertEqual( ipython.name, 'ipython' ) self.assertEqual( config.get( 'plugin_type' ), 'interactive_environment' ) # get_api_key needs a user, fill_template a trans user = model.User( email="*****@*****.**", password="******" ) trans = galaxy_mock.MockTrans( user=user ) # use a mock request factory - this will be written into the filled template to show it was used ipython.INTENV_REQUEST_FACTORY = lambda t, p: 'mock' # should return the (new) api key for the above user (see the template above) response = ipython._render( {}, trans=trans ) response.strip() self.assertIsInstance( response, string_types ) self.assertTrue( '-' in response ) ie_request, api_key = response.split( '-' ) self.assertEqual( ie_request, 'mock' ) match = re.match( r'[a-f0-9]{32}', api_key ) self.assertIsNotNone( match ) self.assertEqual( match.span(), ( 0, 32 ) ) mock_app_dir.remove()