/*
* Copyright 2005 the original author or authors.
- *
+ *
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
- */
-
+ */
package org.wamblee.security.authorization.hibernate;
-import java.sql.SQLException;
-
import org.apache.log4j.Logger;
+
+import org.hibernate.cfg.Configuration;
+
+import org.hibernate.dialect.MySQL5Dialect;
+import org.hibernate.dialect.MySQL5InnoDBDialect;
+
+import org.hibernate.tool.hbm2ddl.SchemaExport;
+
import org.springframework.orm.hibernate3.HibernateTemplate;
+
import org.wamblee.general.BeanKernel;
+
import org.wamblee.security.authorization.AuthorizationService;
import org.wamblee.security.authorization.AuthorizationServiceTest;
+import org.wamblee.security.authorization.TestUserAccessor;
+
+import org.wamblee.system.adapters.ClassConfiguration;
+import org.wamblee.system.adapters.ClassConfigurationTest;
+import org.wamblee.system.adapters.DefaultContainer;
+import org.wamblee.system.adapters.ObjectConfiguration;
+import org.wamblee.system.components.DatabaseComponentFactory;
+import org.wamblee.system.core.Scope;
+import org.wamblee.system.spring.component.DatabaseTesterComponent;
+import org.wamblee.system.spring.component.DatasourceComponent;
+
+import org.wamblee.usermgt.UserAccessor;
+import org.wamblee.usermgt.hibernate.AuthorizationComponent;
+import org.wamblee.usermgt.hibernate.HibernateUserAdministrationTest;
+import org.wamblee.usermgt.hibernate.UserAdministrationComponent;
+
+import java.sql.SQLException;
+
/**
- * Unit test for the persistent authorization service.
+ * Unit test for the persistent authorization service.
*
* @author Erik Brakkee
*/
public class PersistentAuthorizationServiceTest extends AuthorizationServiceTest {
-
+ /**
+ * DOCUMENT ME!
+ */
private static final Logger LOGGER = Logger.getLogger(PersistentAuthorizationServiceTest.class);
-
+
+ /**
+ * DOCUMENT ME!
+ */
private static final String SERVICE_TABLE = "AUTHORIZATION_SERVICE";
- private static final String RULES_TABLE = "AUTHORIZATION_RULES";
+
+ /**
+ * DOCUMENT ME!
+ */
+ private static final String RULES_TABLE = "AUTHORIZATION_RULES";
+
+ /**
+ * DOCUMENT ME!
+ */
private static final String SERVICE_RULES_TABLE = "AUTHORIZATION_SERVICE_RULES";
+
+ /**
+ * DOCUMENT ME!
+ */
private static final String OPERATIONCOND_TABLE = "OPERATION_CONDITIONS";
+
+ /**
+ * DOCUMENT ME!
+ */
private static final String PATHCOND_TABLE = "PATH_CONDITIONS";
+
+ /**
+ * DOCUMENT ME!
+ */
private static final String USERCOND_TABLE = "USER_CONDITIONS";
-
- public PersistentAuthorizationServiceTest() {
- super(AuthorizationSpringConfigFiles.class, AuthorizationMappingFiles.class);
+ /**
+ * DOCUMENT ME!
+ */
+ private DefaultContainer container;
+
+ /**
+ * DOCUMENT ME!
+ */
+ private Scope scope;
+
+ /**
+ * DOCUMENT ME!
+ */
+ private DatabaseTesterComponent databaseTester;
+
+ /**
+ * DOCUMENT ME!
+ */
+ private UserAccessor userAccessor;
+
+ /**
+ * DOCUMENT ME!
+ */
+ private HibernateTemplate hibernateTemplate;
+
+ /**
+ * DOCUMENT ME!
+ */
+ private AuthorizationService authorizationService;
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @throws Exception DOCUMENT ME!
+ */
+ @Override
+ protected void setUp() throws Exception {
+ container = new DefaultContainer("top");
+ DatabaseComponentFactory.addDatabaseConfig(container);
+ container.addComponent(new DatasourceComponent("datasource"));
+
+ ClassConfiguration useraccessorConfig = new ClassConfiguration(TestUserAccessor.class);
+ useraccessorConfig.getObjectConfig().getSetterConfig().initAllSetters();
+ container.addComponent("userAccessor", useraccessorConfig);
+ container.addComponent(new AuthorizationComponent("authorization", true));
+
+ ClassConfiguration dbtesterConfig = new ClassConfiguration(DatabaseTesterComponent.class);
+ dbtesterConfig.getObjectConfig().getSetterConfig().initAllSetters();
+ container.addComponent("databaseTester", dbtesterConfig);
+
+ ObjectConfiguration config = new ObjectConfiguration(PersistentAuthorizationServiceTest.class);
+ config.getSetterConfig().clear().add("setUserAccessor")
+ .add("setDatabaseTester").add("setHibernateTemplate")
+ .add("setAuthorizationService");
+ container.addComponent("testcase", this, config);
+
+ scope = container.start();
+
+ databaseTester.cleanDatabase();
+
+ super.setUp();
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param aDatabaseTester DOCUMENT ME!
+ */
+ public void setDatabaseTester(DatabaseTesterComponent aDatabaseTester) {
+ databaseTester = aDatabaseTester;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param aUserAccessor DOCUMENT ME!
+ */
+ public void setUserAccessor(UserAccessor aUserAccessor) {
+ userAccessor = aUserAccessor;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param aHibernateTemplate DOCUMENT ME!
+ */
+ public void setHibernateTemplate(HibernateTemplate aHibernateTemplate) {
+ hibernateTemplate = aHibernateTemplate;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param aAuthorizationService DOCUMENT ME!
+ */
+ public void setAuthorizationService(
+ AuthorizationService aAuthorizationService) {
+ authorizationService = aAuthorizationService;
}
-
- /* (non-Javadoc)
- * @see org.wamblee.security.authorization.AuthorizationServiceTest#createService()
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.wamblee.security.authorization.AuthorizationServiceTest#createService
+ * ()
+ */
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
*/
@Override
protected AuthorizationService createService() {
- PersistentAuthorizationService service = new PersistentAuthorizationService("DEFAULT",
- BeanKernel.getBeanFactory().find(HibernateTemplate.class), createUserAccessor(), 10000);
- return service;
+ PersistentAuthorizationService service = new PersistentAuthorizationService("DEFAULT",
+ hibernateTemplate, createUserAccessor(), 10000);
+
+ return service;
}
-
- /* (non-Javadoc)
- * @see org.wamblee.security.authorization.AuthorizationServiceTest#checkRuleCount(int)
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.wamblee.security.authorization.AuthorizationServiceTest#checkRuleCount
+ * (int)
+ */
+ /**
+ * DOCUMENT ME!
+ *
+ * @param aCount DOCUMENT ME!
+ *
+ * @throws RuntimeException DOCUMENT ME!
*/
@Override
protected void checkRuleCount(int aCount) {
- try {
- assertEquals(1, getTableSize(SERVICE_TABLE));
- assertEquals(aCount, getTableSize(RULES_TABLE));
- assertEquals(aCount, getTableSize(SERVICE_RULES_TABLE));
- assertEquals(aCount, getTableSize(USERCOND_TABLE));
- assertEquals(aCount, getTableSize(PATHCOND_TABLE));
- assertEquals(aCount, getTableSize(OPERATIONCOND_TABLE));
- } catch (SQLException e) {
+ try {
+ assertEquals(1, databaseTester.getTableSize(SERVICE_TABLE));
+ assertEquals(aCount, databaseTester.getTableSize(RULES_TABLE));
+ assertEquals(aCount,
+ databaseTester.getTableSize(SERVICE_RULES_TABLE));
+ assertEquals(aCount, databaseTester.getTableSize(USERCOND_TABLE));
+ assertEquals(aCount, databaseTester.getTableSize(PATHCOND_TABLE));
+ assertEquals(aCount,
+ databaseTester.getTableSize(OPERATIONCOND_TABLE));
+ } catch (SQLException e) {
throw new RuntimeException(e);
}
-
}
-
- public void testPerformance() {
-
- PersistentAuthorizationService service = (PersistentAuthorizationService)getService();
-
- int n = 1000;
- long time = System.currentTimeMillis();
- for (int i = 0; i < n; i++) {
- testFirstRuleGrants();
+
+ /**
+ * DOCUMENT ME!
+ */
+ public void testSchemaExport() {
+ Configuration config = new Configuration();
+
+ for (String mappingFile : new AuthorizationMappingFiles()) {
+ config.addResource(mappingFile);
+ }
+
+ config.setProperty("hibernate.dialect",
+ MySQL5InnoDBDialect.class.getName());
+
+ SchemaExport exporter = new SchemaExport(config);
+ exporter.setOutputFile("target/mysql5.schema.sql");
+ exporter.create(true, false);
+ }
+
+ /**
+ * DOCUMENT ME!
+ */
+ public void testPerformance() {
+ PersistentAuthorizationService service = (PersistentAuthorizationService) getService();
+
+ int n = 1000;
+ long time = System.currentTimeMillis();
+
+ for (int i = 0; i < n; i++) {
+ testFirstRuleGrants();
resetTestRules();
testSecondRuleDenies();
resetTestRules();
testThirdRuleGrants();
- resetTestRules();
+ resetTestRules();
testNoRulesSupportResource();
}
- LOGGER.info("Executed " + 4*n + " authorization checks in " + (float)(System.currentTimeMillis()-time)/(float)1000 + " seconds.");
+
+ LOGGER.info("Executed " + (4 * n) + " authorization checks in "
+ + ((float) (System.currentTimeMillis() - time) / (float) 1000)
+ + " seconds.");
}
}