@Before public void setUp() throws Exception { manager = new MockBackingRepositoryLifecycleManager(new MockSecurityHelper()); repo = context.mock(IUnifiedRepository.class); booter = new MicroPlatform("test-res/solution1"); booter.define(IPasswordService.class, Base64PasswordService.class, Scope.GLOBAL); booter.define(IDatabaseConnection.class, DatabaseConnection.class, Scope.GLOBAL); booter.define(IDatabaseDialectService.class, DatabaseDialectService.class, Scope.GLOBAL); booter.define(IMondrianCatalogService.class, MondrianCatalogHelper.class, Scope.GLOBAL); booter.define(ICacheManager.class, CacheManager.class, Scope.GLOBAL); booter.defineInstance(IUserRoleListService.class, context.mock(IUserRoleListService.class)); final IAuthorizationPolicy policy = context.mock(IAuthorizationPolicy.class); booter.defineInstance(IAuthorizationPolicy.class, policy); booter.defineInstance(IUnifiedRepository.class, repo); booter.setSettingsProvider(new SystemSettings()); booter.start(); context.checking( new Expectations() { { oneOf(policy); will(returnValue(false)); oneOf(policy); will(returnValue(false)); oneOf(policy); will(returnValue(false)); } }); PentahoSessionHolder.setStrategyName(PentahoSessionHolder.MODE_GLOBAL); SecurityContextHolder.setStrategyName(SecurityContextHolder.MODE_GLOBAL); }
@SuppressWarnings("deprecation") @Test(expected = PlatformPluginRegistrationException.class) public void testLoad_BadSolutionPath() throws PlatformPluginRegistrationException { MicroPlatform mp = new MicroPlatform("plugin-mgr/test-res/SystemPathPluginProviderTest/system"); mp.define(ISolutionEngine.class, SolutionEngine.class); mp.define(ISolutionRepository.class, FileBasedSolutionRepository.class); mp.init(); provider.getPlugins(new StandaloneSession()); }
@Before public void beforeTest() throws PlatformInitializationException { System.setProperty(SYSTEM_PROPERTY, "MODE_INHERITABLETHREADLOCAL"); mp = new MicroPlatform(); File path = new File(".", "test-res/PluginResourceTest/system/test-plugin"); mp.setFilePath(path.getAbsolutePath()); // used by DefaultPentahoJackrabbitAccessControlHelper mp.define(IPluginManager.class, DefaultPluginManager.class, Scope.GLOBAL); mp.defineInstance( IPluginResourceLoader.class, new PluginResourceLoader() { protected PluginClassLoader getOverrideClassloader() { return new PluginClassLoader( new File(".", "test-res/PluginResourceTest/system/test-plugin"), this); } }); mp.define(IPluginProvider.class, TestPlugin.class, Scope.GLOBAL); mp.defineInstance(IAuthorizationPolicy.class, authorizationPolicy); mp.defineInstance(ITenantManager.class, tenantManager); mp.define(ITenant.class, Tenant.class); mp.defineInstance("roleAuthorizationPolicyRoleBindingDaoTarget", roleBindingDaoTarget); mp.defineInstance(IRoleAuthorizationPolicyRoleBindingDao.class, roleBindingDaoTarget); mp.defineInstance("tenantedUserNameUtils", tenantedUserNameUtils); mp.defineInstance("repositoryAdminUsername", repositoryAdminUsername); UserRoleDaoUserDetailsService userDetailsService = new UserRoleDaoUserDetailsService(); userDetailsService.setUserRoleDao(userRoleDao); List<String> systemRoles = new ArrayList<String>(); systemRoles.add("Admin"); List<String> extraRoles = Arrays.asList(new String[] {"Authenticated", "Anonymous"}); String adminRole = "Admin"; userRoleListService = new UserRoleDaoUserRoleListService( userRoleDao, userDetailsService, tenantedUserNameUtils, systemRoles, extraRoles, adminRole); ((UserRoleDaoUserRoleListService) userRoleListService).setUserRoleDao(userRoleDao); ((UserRoleDaoUserRoleListService) userRoleListService) .setUserDetailsService(userDetailsService); mp.defineInstance(IUserRoleListService.class, userRoleListService); mp.start(); PentahoSystem.get(IPluginManager.class).reload(); logout(); startupCalled = true; }
@SuppressWarnings("deprecation") @Test public void testLoad_Good() throws PlatformPluginRegistrationException { microPlatform.define(ISolutionRepository.class, FileBasedSolutionRepository.class).init(); PluginMessageLogger.clear(); List<IPlatformPlugin> plugins = provider.getPlugins(new StandaloneSession()); // should successfully load good-plugin1 and good-plugin2 and not load bad-plugin. The fact // that bad-plugin does not load should not prevent the good ones from being loaded assertTrue( "plugin1 was not found", CollectionUtils.exists(plugins, new PluginNameMatcherPredicate("Plugin 1"))); assertTrue( "plugin2 was not found", CollectionUtils.exists(plugins, new PluginNameMatcherPredicate("Plugin 2"))); // make sure that the bad plugin caused an error message to be logged assertEquals( "bad plugin did not log an error message", 1, PluginMessageLogger.count("SystemPathXmlPluginProvider.ERROR_0001")); for (String msg : PluginMessageLogger.getAll()) { System.err.println(msg); } }
@Before public void init() { microPlatform = new MicroPlatform("plugin-mgr/test-res/SystemPathPluginProviderTest/"); microPlatform.define(ISolutionEngine.class, SolutionEngine.class); provider = new SystemPathXmlPluginProvider(); }
@SuppressWarnings("deprecation") @Test public void tesLoadtLifecycleListener() throws PlatformPluginRegistrationException { microPlatform.define(ISolutionRepository.class, FileBasedSolutionRepository.class).init(); PluginMessageLogger.clear(); List<IPlatformPlugin> plugins = provider.getPlugins(new StandaloneSession()); // first make sure Plugin 1 was loaded, otherwise our check for lifcycle class will never happen assertTrue( "plugin1 was not found", CollectionUtils.exists(plugins, new PluginNameMatcherPredicate("Plugin 1"))); for (IPlatformPlugin plugin : plugins) { if (plugin.getId().equals("Plugin 1")) { assertEquals( "org.pentaho.test.platform.plugin.pluginmgr.FooInitializer", plugin.getLifecycleListenerClassname()); } if (plugin.getId().equals("Plugin 2")) { // no listener defined to for Plugin 2 assertNull(plugin.getLifecycleListenerClassname()); } } }
@Before public void beforeTest() throws PlatformInitializationException { mp = new MicroPlatform(); // used by DefaultPentahoJackrabbitAccessControlHelper mp.defineInstance(IAuthorizationPolicy.class, authorizationPolicy); mp.defineInstance(ITenantManager.class, tenantManager); mp.define(ITenant.class, Tenant.class); mp.defineInstance("roleAuthorizationPolicyRoleBindingDaoTarget", roleBindingDaoTarget); mp.defineInstance(IRoleAuthorizationPolicyRoleBindingDao.class, roleBindingDaoTarget); mp.defineInstance("tenantedUserNameUtils", tenantedUserNameUtils); mp.defineInstance("tenantedRoleNameUtils", tenantedRoleNameUtils); mp.defineInstance("repositoryAdminUsername", repositoryAdminUsername); mp.define( IRoleAuthorizationPolicyRoleBindingDao.class, RoleAuthorizationPolicy.class, Scope.GLOBAL); mp.define(ITenantManager.class, RepositoryTenantManager.class, Scope.GLOBAL); mp.defineInstance("singleTenantAdminAuthorityName", new String("Administrator")); mp.defineInstance( "RepositoryFileProxyFactory", new RepositoryFileProxyFactory(this.testJcrTemplate, this.repositoryFileDao)); UserRoleDaoUserDetailsService userDetailsService = new UserRoleDaoUserDetailsService(); userDetailsService.setUserRoleDao(userRoleDao); List<String> systemRoles = new ArrayList<String>(); systemRoles.add("Admin"); List<String> extraRoles = Arrays.asList(new String[] {"Authenticated", "Anonymous"}); String adminRole = "Admin"; userRoleListService = new UserRoleDaoUserRoleListService( userRoleDao, userDetailsService, tenantedUserNameUtils, systemRoles, extraRoles, adminRole); ((UserRoleDaoUserRoleListService) userRoleListService).setUserRoleDao(userRoleDao); ((UserRoleDaoUserRoleListService) userRoleListService) .setUserDetailsService(userDetailsService); mp.defineInstance(IUserRoleListService.class, userRoleListService); mp.start(); logout(); startupCalled = true; SecurityContextHolder.setStrategyName(SecurityContextHolder.MODE_GLOBAL); }
@Before public void init0() { microPlatform = new MicroPlatform("test-src/solution"); microPlatform.define(ISolutionEngine.class, SolutionEngine.class); microPlatform.define( IUnifiedRepository.class, FileSystemBackedUnifiedRepository.class, Scope.GLOBAL); microPlatform.define(IMondrianCatalogService.class, MondrianCatalogHelper.class, Scope.GLOBAL); microPlatform.define("connection-SQL", SQLConnection.class); microPlatform.define("connection-MDX", MDXConnection.class); microPlatform.define(IDBDatasourceService.class, JndiDatasourceService.class, Scope.GLOBAL); microPlatform.define(IUserRoleListService.class, TestUserRoleListService.class, Scope.GLOBAL); microPlatform.define(UserDetailsService.class, TestUserDetailsService.class, Scope.GLOBAL); FileSystemBackedUnifiedRepository repo = (FileSystemBackedUnifiedRepository) PentahoSystem.get(IUnifiedRepository.class); repo.setRootDir(new File("test-src/solution")); try { microPlatform.start(); } catch (PlatformInitializationException ex) { Assert.fail(); } MondrianCatalogHelper catalogService = (MondrianCatalogHelper) PentahoSystem.get(IMondrianCatalogService.class); catalogService.setDataSourcesConfig( "file:" + PentahoSystem.getApplicationContext() .getSolutionPath("test/analysis/test-datasources.xml")); // JNDI System.setProperty("java.naming.factory.initial", "org.osjava.sj.SimpleContextFactory"); System.setProperty("org.osjava.sj.root", "test-src/solution/system/simple-jndi"); System.setProperty("org.osjava.sj.delimiter", "/"); }
@Before public void beforeTest() throws PlatformInitializationException { System.setProperty(SYSTEM_PROPERTY, "MODE_INHERITABLETHREADLOCAL"); mp = new MicroPlatform(); mp.defineInstance("tenantedUserNameUtils", tenantedUserNameUtils); mp.define(IPluginManager.class, DefaultPluginManager.class, Scope.GLOBAL); mp.defineInstance(IAuthorizationPolicy.class, authorizationPolicy); mp.defineInstance(ITenantManager.class, tenantManager); mp.define(ITenant.class, Tenant.class); mp.defineInstance("roleAuthorizationPolicyRoleBindingDaoTarget", roleBindingDaoTarget); mp.defineInstance(IRoleAuthorizationPolicyRoleBindingDao.class, roleBindingDaoTarget); mp.defineInstance("tenantedUserNameUtils", tenantedUserNameUtils); mp.defineInstance("tenantedRoleNameUtils", tenantedRoleNameUtils); mp.defineInstance("repositoryAdminUsername", repositoryAdminUsername); mp.define(IConfiguration.class, SystemConfig.class); mp.defineInstance( "RepositoryFileProxyFactory", new RepositoryFileProxyFactory(this.jcrTemplate, this.repositoryFileDao)); UserRoleDaoUserDetailsService userDetailsService = new UserRoleDaoUserDetailsService(); userDetailsService.setUserRoleDao(userRoleDao); List<String> systemRoles = new ArrayList<String>(); systemRoles.add("Administrator"); List<String> extraRoles = Arrays.asList(new String[] {"Authenticated", "Anonymous"}); String adminRole = "Admin"; userRoleListService = new UserRoleDaoUserRoleListService( userRoleDao, userDetailsService, tenantedUserNameUtils, systemRoles, extraRoles, adminRole); ((UserRoleDaoUserRoleListService) userRoleListService).setUserRoleDao(userRoleDao); ((UserRoleDaoUserRoleListService) userRoleListService) .setUserDetailsService(userDetailsService); mp.defineInstance(IUserRoleListService.class, userRoleListService); mp.start(); loginAsRepositoryAdmin(); setAclManagement(); logout(); startupCalled = true; }
/** @throws java.lang.Exception */ @SuppressWarnings("deprecation") @Before public void setUp() throws Exception { String solutionsRelativePath = "test-src/org/pentaho/test/platform/plugin/chartbeans/solutions"; MicroPlatform mp = new MicroPlatform(solutionsRelativePath); mp.define(ISolutionEngine.class, Object.class); ISystemSettings settings = new XmlSimpleSystemSettings(); mp.setSettingsProvider(settings); mp.init(); }
@SuppressWarnings("deprecation") @Test public void testLoadContentGenerators() throws PlatformPluginRegistrationException { microPlatform.define(ISolutionRepository.class, FileBasedSolutionRepository.class).init(); List<IPlatformPlugin> plugins = provider.getPlugins(new StandaloneSession()); IPlatformPlugin plugin = (IPlatformPlugin) CollectionUtils.find( plugins, new PluginNameMatcherPredicate("content-generator-plugin")); assertNotNull("content-generator-plugin should have been found", plugin); List<IContentInfo> contentTypes = plugin.getContentInfos(); Object contentType = CollectionUtils.find( contentTypes, new Predicate() { public boolean evaluate(Object object) { IContentInfo type = (IContentInfo) object; return type.getTitle().equals("Good Test Type"); } }); assertNotNull("\"Good Test Type\" should have been loaded", contentType); assertNotNull( "\"Good Test Type\" extension definition is incorrect", ((IContentInfo) contentType).getExtension().equals("good-content-type")); assertEquals( "\"Test Type Missing type\" should not have been loaded", 0, CollectionUtils.countMatches( contentTypes, new Predicate() { public boolean evaluate(Object object) { IContentInfo contentType = (IContentInfo) object; return contentType.getTitle().equals("Test Type Missing type"); } })); assertEquals( "\"test-type-missing-title\" should not have been loaded", 0, CollectionUtils.countMatches( contentTypes, new Predicate() { public boolean evaluate(Object object) { IContentInfo contentType = (IContentInfo) object; return contentType.getExtension().equals("test-type-missing-title"); } })); }
@SuppressWarnings("deprecation") @Test public void testLoadLifeCycleListener() throws PlatformPluginRegistrationException { microPlatform.define(ISolutionRepository.class, FileBasedSolutionRepository.class).init(); List<IPlatformPlugin> plugins = provider.getPlugins(new StandaloneSession()); IPlatformPlugin plugin = (IPlatformPlugin) CollectionUtils.find(plugins, new PluginNameMatcherPredicate("Plugin 1")); assertNotNull("Plugin 1 should have been found", plugin); assertEquals( "org.pentaho.test.platform.plugin.pluginmgr.FooInitializer", plugin.getLifecycleListenerClassname()); }
@Before public void setUp() throws Exception { mp = new MicroPlatform(); // used by DefaultPentahoJackrabbitAccessControlHelper mp.defineInstance("tenantedUserNameUtils", tenantedUserNameUtils); mp.defineInstance("tenantedRoleNameUtils", tenantedRoleNameUtils); mp.defineInstance(IAuthorizationPolicy.class, authorizationPolicy); mp.defineInstance(ITenantManager.class, tenantManager); mp.define(ITenant.class, Tenant.class); mp.defineInstance( "roleAuthorizationPolicyRoleBindingDaoTarget", roleAuthorizationPolicyRoleBindingDao); mp.defineInstance("repositoryAdminUsername", repositoryAdminUsername); // Start the micro-platform mp.start(); logout(); startupCalled = true; }
@SuppressWarnings("deprecation") @Test public void testLoadBeanDefinition() throws PlatformPluginRegistrationException { microPlatform.define(ISolutionRepository.class, FileBasedSolutionRepository.class).init(); List<IPlatformPlugin> plugins = provider.getPlugins(new StandaloneSession()); IPlatformPlugin plugin = (IPlatformPlugin) CollectionUtils.find(plugins, new PluginNameMatcherPredicate("Plugin 1")); assertNotNull("Plugin 1 should have been found", plugin); Collection<PluginBeanDefinition> beans = plugin.getBeans(); assertEquals( "FooComponent was not loaded", 1, CollectionUtils.countMatches( beans, new Predicate() { public boolean evaluate(Object object) { PluginBeanDefinition bean = (PluginBeanDefinition) object; return bean.getBeanId().equals("FooComponent") && bean.getClassname() .equals("org.pentaho.test.platform.plugin.pluginmgr.FooComponent"); } })); assertEquals( "genericBean was not loaded", 1, CollectionUtils.countMatches( beans, new Predicate() { public boolean evaluate(Object object) { PluginBeanDefinition bean = (PluginBeanDefinition) object; return bean.getBeanId().equals("genericBean") && bean.getClassname().equals("java.lang.Object"); } })); }
@SuppressWarnings("deprecation") @Test public void testLoadWebservices() throws PlatformPluginRegistrationException { microPlatform.define(ISolutionRepository.class, FileBasedSolutionRepository.class).init(); List<IPlatformPlugin> plugins = provider.getPlugins(new StandaloneSession()); System.out.println(PluginMessageLogger.getAll()); IPlatformPlugin plugin = (IPlatformPlugin) CollectionUtils.find(plugins, new PluginNameMatcherPredicate("Plugin 1")); assertNotNull("Plugin 1 should have been found", plugin); Collection<PluginServiceDefinition> webservices = plugin.getServices(); Object wsobj = CollectionUtils.find( webservices, new Predicate() { public boolean evaluate(Object object) { PluginServiceDefinition ws = (PluginServiceDefinition) object; boolean ret = ws.getTitle().equals("%TestWS1.TITLE%"); return ret; } }); assertNotNull("Webservice \"%TestWS1.TITLE%\" should have been loaded", wsobj); PluginServiceDefinition wsDfn = (PluginServiceDefinition) wsobj; assertEquals("org.pentaho.test.platform.engine.core.EchoServiceBean", wsDfn.getServiceClass()); assertEquals("xml", wsDfn.getTypes()[0]); assertEquals("gwt", wsDfn.getTypes()[1]); assertEquals("A test webservice", wsDfn.getDescription()); assertEquals(1, wsDfn.getExtraClasses().size()); assertEquals("java.lang.String", wsDfn.getExtraClasses().iterator().next()); }
@BeforeClass public static void setUp() throws Exception { System.setProperty( "org.osjava.sj.root", "test-res/solution1/system/simple-jndi"); // $NON-NLS-1$ //$NON-NLS-2$ mp = new MicroPlatform("test-res/solution1"); IAuthorizationPolicy mockAuthorizationPolicy = mock(IAuthorizationPolicy.class); when(mockAuthorizationPolicy.isAllowed(anyString())).thenReturn(true); IUserRoleListService mockUserRoleListService = mock(IUserRoleListService.class); IDataAccessPermissionHandler mockDataAccessPermHandler = mock(IDataAccessPermissionHandler.class); when(mockDataAccessPermHandler.hasDataAccessPermission(any(IPentahoSession.class))) .thenReturn(true); mp.define( ISolutionEngine.class, SolutionEngine.class, IPentahoDefinableObjectFactory.Scope.GLOBAL); mp.define( IUnifiedRepository.class, TestFileSystemBackedUnifiedRepository.class, IPentahoDefinableObjectFactory.Scope.GLOBAL); mp.define( IMondrianCatalogService.class, MondrianCatalogHelper.class, IPentahoDefinableObjectFactory.Scope.GLOBAL); mp.define("connection-SQL", SQLConnection.class); mp.define("connection-MDX", MDXConnection.class); mp.define("connection-MDXOlap4j", MDXOlap4jConnection.class); mp.define( IDBDatasourceService.class, JndiDatasourceService.class, IPentahoDefinableObjectFactory.Scope.GLOBAL); mp.define( MDXConnection.MDX_CONNECTION_MAPPER_KEY, MondrianOneToOneUserRoleListMapper.class, IPentahoDefinableObjectFactory.Scope.GLOBAL); mp.define(IDatasourceMgmtService.class, MockDatasourceMgmtService.class); mp.define(IClientRepositoryPathsStrategy.class, MockClientRepositoryPathsStrategy.class); mp.define(ISecurityHelper.class, MockSecurityHelper.class); mp.define(UserDetailsService.class, MockUserDetailService.class); mp.define("singleTenantAdminUserName", "admin"); mp.defineInstance(IMetadataDomainRepository.class, createMetadataDomainRepository()); mp.defineInstance(IAuthorizationPolicy.class, mockAuthorizationPolicy); mp.defineInstance( IPluginResourceLoader.class, new PluginResourceLoader() { protected PluginClassLoader getOverrideClassloader() { return new PluginClassLoader( new File(".", "test-res/solution1/system/simple-jndi"), this); } }); mp.defineInstance(IUserRoleListService.class, mockUserRoleListService); mp.defineInstance(IDataAccessPermissionHandler.class, mockDataAccessPermHandler); mp.setSettingsProvider(new SystemSettings()); mp.start(); PentahoSessionHolder.setStrategyName(PentahoSessionHolder.MODE_GLOBAL); SecurityContextHolder.setStrategyName(SecurityContextHolder.MODE_GLOBAL); }