PersistentAuthorizationTest is now componentized.
[utils] / security / src / test / java / org / wamblee / security / authorization / hibernate / PersistentAuthorizationServiceTest.java
index 6cbbd39e7f90699252137712189e02f1694d9f67..453cf1a98f6229e1d1fc475ea3e1329a16d94220 100644 (file)
@@ -12,7 +12,7 @@
  * 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;
 
@@ -23,71 +23,135 @@ 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.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.");
     }
 }