package com.plexobject.rbac.repository.bdb; import java.io.File; import java.util.ArrayList; import java.util.Collection; import java.util.List; import junit.framework.Assert; import org.apache.commons.io.FileUtils; import org.apache.log4j.Logger; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.plexobject.rbac.repository.DomainRepository; import com.plexobject.rbac.repository.PermissionRepository; import com.plexobject.rbac.repository.RepositoryFactory; import com.plexobject.rbac.domain.Domain; import com.plexobject.rbac.domain.Permission; import com.plexobject.rbac.domain.Subject; import com.plexobject.rbac.utils.CurrentRequest; public class PermissionRepositoryImplTest { private static final String USERNAME = "shahbhat"; private static final String APPNAME = "appname"; private static final String TEST_DB_DIR = "test_db_dir_perm"; private static final Logger LOGGER = Logger .getLogger(PermissionRepositoryImplTest.class); private RepositoryFactory repositoryFactory; private DomainRepository appRepository; private PermissionRepository permissionRepository; @Before public void setUp() throws Exception { FileUtils.deleteDirectory(new File(TEST_DB_DIR)); CurrentRequest.startRequest(APPNAME, USERNAME, "127.0.0.1"); repositoryFactory = new RepositoryFactoryImpl(TEST_DB_DIR); appRepository = repositoryFactory.getDomainRepository(); permissionRepository = repositoryFactory .getPermissionRepository(APPNAME); } @After public void tearDown() throws Exception { ((RepositoryFactoryImpl) repositoryFactory).close(APPNAME); FileUtils.deleteDirectory(new File(TEST_DB_DIR)); CurrentRequest.endRequest(); } @Test public void testGetAllDatabases() { } @Test public void testRemoveDatabase() { } @Test public void testCreateDatabase() { } @Test public void testFindAll() { repositoryFactory.getSubjectRepository(APPNAME).getOrCreateSubject( new Subject(USERNAME, "pass")); final Domain app = new Domain(APPNAME, "desc"); appRepository.save(app); List<Permission> saved = new ArrayList<Permission>(); for (int i = 0; i < 10; i++) { String operation = null; if (i == 0) { operation = "(read|write|update|delete)"; } else if (i == 10 - 1) { operation = "*"; } else if (i % 2 == 0) { operation = "read"; } else { operation = "(read|write)"; } Permission permission = new Permission(operation, "database", "amount <= 500 && dept == 'sales' && time between 8:00am..5:00pm"); LOGGER.debug("Saving " + permission); permissionRepository.save(permission); saved.add(permission); } Collection<Permission> all = permissionRepository.findAll(null, 10); int count = 0; for (Permission permission : all) { Assert.assertEquals("expected " + saved.get(count) + ", but was " + permission, permission, saved.get(count)); if (LOGGER.isDebugEnabled()) { LOGGER.debug("permission " + permission); } count++; } Assert.assertEquals(10, count); } @Test public void testFindById() { } @Test public void testRemove() { } @Test public void testSave() { } }