* 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 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.DefaultContainer;
+import org.wamblee.system.adapters.ObjectConfiguration;
+import org.wamblee.system.core.Scope;
+import org.wamblee.system.spring.DatabaseTesterComponent;
+import org.wamblee.usermgt.UserAccessor;
+import org.wamblee.usermgt.hibernate.AuthorizationComponent;
+import org.wamblee.usermgt.hibernate.ExternalDatasourceComponent;
+import org.wamblee.usermgt.hibernate.HibernateUserAdministrationTest;
+import org.wamblee.usermgt.hibernate.UserAdministrationComponent;
/**
- * Unit test for the persistent authorization service.
- *
+ * Unit test for the persistent authorization service.
+ *
* @author Erik Brakkee
*/
-public class PersistentAuthorizationServiceTest extends AuthorizationServiceTest {
-
- private static final Logger LOGGER = Logger.getLogger(PersistentAuthorizationServiceTest.class);
-
+public class PersistentAuthorizationServiceTest extends
+ AuthorizationServiceTest {
+
+ private static final Logger LOGGER = Logger
+ .getLogger(PersistentAuthorizationServiceTest.class);
+
private static final String SERVICE_TABLE = "AUTHORIZATION_SERVICE";
- private static final String RULES_TABLE = "AUTHORIZATION_RULES";
+ private static final String RULES_TABLE = "AUTHORIZATION_RULES";
private static final String SERVICE_RULES_TABLE = "AUTHORIZATION_SERVICE_RULES";
private static final String OPERATIONCOND_TABLE = "OPERATION_CONDITIONS";
private static final String PATHCOND_TABLE = "PATH_CONDITIONS";
private static final String USERCOND_TABLE = "USER_CONDITIONS";
-
- public PersistentAuthorizationServiceTest() {
- super(AuthorizationSpringConfigFiles.class, AuthorizationMappingFiles.class);
+ private DefaultContainer _container;
+ private Scope _scope;
+
+ private DatabaseTesterComponent _databaseTester;
+ private UserAccessor _userAccessor;
+ private HibernateTemplate _hibernateTemplate;
+ private AuthorizationService _authorizationService;
+
+ @Override
+ protected void setUp() throws Exception {
+
+ _container = new DefaultContainer("top");
+ _container.addComponent(new ExternalDatasourceComponent("datasource"));
+ _container.addComponent("userAccessor", TestUserAccessor.class);
+ _container.addComponent(new AuthorizationComponent("authorization",
+ true));
+
+ _container
+ .addComponent("databaseTester", DatabaseTesterComponent.class);
+
+ ObjectConfiguration config = new ObjectConfiguration(
+ PersistentAuthorizationServiceTest.class);
+ config.getSetterConfig().clear().add("userAccessor").add(
+ "databaseTester").add("hibernateTemplate").add(
+ "authorizationService");
+ _container.addComponent("testcase", this, config);
+
+ _scope = _container.start();
+
+ _databaseTester.cleanDatabase();
+
+ super.setUp();
+ }
+
+ public void setDatabaseTester(DatabaseTesterComponent aDatabaseTester) {
+ _databaseTester = aDatabaseTester;
+ }
+
+ public void setUserAccessor(UserAccessor aUserAccessor) {
+ _userAccessor = aUserAccessor;
+ }
+
+ public void setHibernateTemplate(HibernateTemplate aHibernateTemplate) {
+ _hibernateTemplate = aHibernateTemplate;
}
- /* (non-Javadoc)
+ public void setAuthorizationService(
+ AuthorizationService aAuthorizationService) {
+ _authorizationService = aAuthorizationService;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
* @see org.wamblee.security.authorization.AuthorizationServiceTest#createService()
*/
@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)
+
+ /*
+ * (non-Javadoc)
+ *
* @see org.wamblee.security.authorization.AuthorizationServiceTest#checkRuleCount(int)
*/
@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;
+
+ public void testPerformance() {
+
+ PersistentAuthorizationService service = (PersistentAuthorizationService) getService();
+
+ int n = 1000;
long time = System.currentTimeMillis();
- for (int i = 0; i < n; i++) {
- testFirstRuleGrants();
+ 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.");
}
}