diff --git a/config/alfresco/subsystems/ActivitiesFeed/default/activities-feed-context.xml b/config/alfresco/subsystems/ActivitiesFeed/default/activities-feed-context.xml index 67100aa43b..649fb930f3 100644 --- a/config/alfresco/subsystems/ActivitiesFeed/default/activities-feed-context.xml +++ b/config/alfresco/subsystems/ActivitiesFeed/default/activities-feed-context.xml @@ -34,6 +34,7 @@ + ${activities.feed.max.idRange} @@ -100,6 +101,8 @@ + + alfresco/extension/templates/activities diff --git a/source/java/org/alfresco/repo/activities/ActivityPostServiceImpl.java b/source/java/org/alfresco/repo/activities/ActivityPostServiceImpl.java index ae9b3f5503..9e8394e5ef 100644 --- a/source/java/org/alfresco/repo/activities/ActivityPostServiceImpl.java +++ b/source/java/org/alfresco/repo/activities/ActivityPostServiceImpl.java @@ -233,6 +233,11 @@ public class ActivityPostServiceImpl implements ActivityPostService { Date postDate = new Date(); ActivityPostEntity activityPost = new ActivityPostEntity(); + //MNT-9104 If username contains uppercase letters the action of joining a site will not be displayed in "My activities" + if (! userNamesAreCaseSensitive) + { + userId = userId.toLowerCase(); + } activityPost.setUserId(userId); activityPost.setSiteNetwork(tenantService.getName(siteId)); diff --git a/source/java/org/alfresco/repo/activities/ActivityServiceImpl.java b/source/java/org/alfresco/repo/activities/ActivityServiceImpl.java index 0004790ad4..42867062dd 100644 --- a/source/java/org/alfresco/repo/activities/ActivityServiceImpl.java +++ b/source/java/org/alfresco/repo/activities/ActivityServiceImpl.java @@ -624,6 +624,11 @@ public class ActivityServiceImpl implements ActivityService, InitializingBean { logger.debug("Inserting feed control for siteId: " + feedControl.getSiteId() + ",\n appToolId : " + feedControl.getAppToolId() + ",\n for user : " + userId); } + //MNT-9104 If username contains uppercase letters the action of joining a site will not be displayed in "My activities" + if (! userNamesAreCaseSensitive) + { + userId = userId.toLowerCase(); + } feedControlDAO.insertFeedControl(new FeedControlEntity(userId, feedControl)); } } @@ -673,6 +678,11 @@ public class ActivityServiceImpl implements ActivityService, InitializingBean { ParameterCheck.mandatoryString("userId", userId); + if (!userNamesAreCaseSensitive) + { + userId = userId.toLowerCase(); + } + try { List feedControlDaos = feedControlDAO.selectFeedControls(userId); @@ -721,6 +731,12 @@ public class ActivityServiceImpl implements ActivityService, InitializingBean { logger.debug("Deleting feed control for siteId: " + feedControl.getSiteId() + ",\n appToolId : " + feedControl.getAppToolId() + ",\n for user : " + userId); } + // MNT-9104 If username contains uppercase letters the action of joining a site will not be displayed in "My activities" + if (!userNamesAreCaseSensitive) + { + userId = userId.toLowerCase(); + } + feedControlDAO.deleteFeedControl(new FeedControlEntity(userId, feedControl)); } catch (SQLException e) @@ -746,6 +762,12 @@ public class ActivityServiceImpl implements ActivityService, InitializingBean { logger.debug("Selecting feed control for siteId: " + feedControl.getSiteId() + ",\n appToolId : " + feedControl.getAppToolId() + ",\n for user : " + userId); } + // MNT-9104 If username contains uppercase letters the action of joining a site will not be displayed in "My activities" + if (!userNamesAreCaseSensitive) + { + userId = userId.toLowerCase(); + } + long id = feedControlDAO.selectFeedControl(new FeedControlEntity(userId, feedControl)); boolean exists = (id != -1); if (logger.isDebugEnabled()) diff --git a/source/java/org/alfresco/repo/activities/feed/FeedTaskProcessor.java b/source/java/org/alfresco/repo/activities/feed/FeedTaskProcessor.java index 5e4800fec8..51be2d348c 100644 --- a/source/java/org/alfresco/repo/activities/feed/FeedTaskProcessor.java +++ b/source/java/org/alfresco/repo/activities/feed/FeedTaskProcessor.java @@ -81,6 +81,13 @@ public abstract class FeedTaskProcessor private static final String URL_SERVICE_TEMPLATES = "/api/activities/templates"; private static final String URL_SERVICE_TEMPLATE = "/api/activities/template"; + private boolean userNamesAreCaseSensitive = false; + + public void setUserNamesAreCaseSensitive(boolean userNamesAreCaseSensitive) + { + this.userNamesAreCaseSensitive = userNamesAreCaseSensitive; + } + public void process(int jobTaskNode, long minSeq, long maxSeq, RepoCtx ctx) throws Exception { long startTime = System.currentTimeMillis(); @@ -245,6 +252,12 @@ public abstract class FeedTaskProcessor ActivityFeedEntity feed = new ActivityFeedEntity(); // Generate activity feed summary + //MNT-9104 If username contains uppercase letters the action of joining a site will not be displayed in "My activities" + if (! userNamesAreCaseSensitive) + { + recipient = recipient.toLowerCase(); + postingUserId = postingUserId.toLowerCase(); + } feed.setFeedUserId(recipient); feed.setPostUserId(postingUserId); feed.setActivityType(activityType); @@ -618,6 +631,12 @@ public abstract class FeedTaskProcessor protected List getFeedControls(String connectedUser) throws SQLException { + //MNT-9104 If username contains uppercase letters the action of joining a site will not be displayed in "My activities" + if (! userNamesAreCaseSensitive) + { + connectedUser = connectedUser.toLowerCase(); + } + return selectUserFeedControls(connectedUser); } diff --git a/source/java/org/alfresco/repo/activities/feed/cleanup/FeedCleaner.java b/source/java/org/alfresco/repo/activities/feed/cleanup/FeedCleaner.java index f74f80e71e..930f958fc5 100644 --- a/source/java/org/alfresco/repo/activities/feed/cleanup/FeedCleaner.java +++ b/source/java/org/alfresco/repo/activities/feed/cleanup/FeedCleaner.java @@ -68,6 +68,7 @@ public class FeedCleaner implements NodeServicePolicies.BeforeDeleteNodePolicy private int maxIdRange = 1000000; private int maxAgeMins = 0; private int maxFeedSize = 100; + private boolean userNamesAreCaseSensitive = false; private ActivityFeedDAO feedDAO; @@ -80,6 +81,10 @@ public class FeedCleaner implements NodeServicePolicies.BeforeDeleteNodePolicy private FeedCleanerDeleteSiteTransactionListener deleteSiteTransactionListener; private FeedCleanerDeletePersonTransactionListener deletePersonTransactionListener; + public void setUserNamesAreCaseSensitive(boolean userNamesAreCaseSensitive) + { + this.userNamesAreCaseSensitive = userNamesAreCaseSensitive; + } public void setFeedDAO(ActivityFeedDAO feedDAO) { @@ -430,7 +435,11 @@ public class FeedCleaner implements NodeServicePolicies.BeforeDeleteNodePolicy public void beforeDeleteNodePerson(NodeRef personNodeRef) { String userId = (String)nodeService.getProperty(personNodeRef, ContentModel.PROP_USERNAME); - + //MNT-9104 If username contains uppercase letters the action of joining a site will not be displayed in "My activities" + if (! userNamesAreCaseSensitive) + { + userId = userId.toLowerCase(); + } Set deletedUserIds = (Set)AlfrescoTransactionSupport.getResource(KEY_DELETED_USER_IDS); if (deletedUserIds == null) { @@ -503,8 +512,19 @@ public class FeedCleaner implements NodeServicePolicies.BeforeDeleteNodePolicy Set deletedUserIds = TransactionalResourceHelper.getSet(KEY_DELETED_USER_IDS); if (deletedUserIds != null) { - for (final String userId : deletedUserIds) + for (String user : deletedUserIds) { + //MNT-9104 If username contains uppercase letters the action of joining a site will not be displayed in "My activities" + final String userId; + if (! userNamesAreCaseSensitive) + { + userId = user.toLowerCase(); + } + else + { + userId = user; + } + transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback() { public Void execute() throws Throwable diff --git a/source/test-java/org/alfresco/repo/activities/SiteActivityTest.java b/source/test-java/org/alfresco/repo/activities/AbstractSiteActivityTest.java similarity index 90% rename from source/test-java/org/alfresco/repo/activities/SiteActivityTest.java rename to source/test-java/org/alfresco/repo/activities/AbstractSiteActivityTest.java index 91b1618573..7b955c6dd1 100644 --- a/source/test-java/org/alfresco/repo/activities/SiteActivityTest.java +++ b/source/test-java/org/alfresco/repo/activities/AbstractSiteActivityTest.java @@ -18,11 +18,11 @@ */ package org.alfresco.repo.activities; +import static org.junit.Assert.*; + import java.util.ArrayList; import java.util.List; -import junit.framework.TestCase; - import org.alfresco.model.ContentModel; import org.alfresco.repo.activities.feed.FeedGenerator; import org.alfresco.repo.activities.feed.local.LocalFeedTaskProcessor; @@ -37,30 +37,27 @@ import org.alfresco.service.cmr.security.MutableAuthenticationService; import org.alfresco.service.cmr.security.PersonService; import org.alfresco.service.cmr.site.SiteService; import org.alfresco.service.cmr.site.SiteVisibility; +import org.alfresco.util.ApplicationContextHelper; import org.alfresco.util.PropertyMap; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; import org.quartz.Scheduler; import org.springframework.context.ApplicationContext; -import org.springframework.context.support.ClassPathXmlApplicationContext; /** * Simple Activity Service unit test using site (membership) activities * * @author janv */ -public class SiteActivityTest extends TestCase +public abstract class AbstractSiteActivityTest { - private static Log logger = LogFactory.getLog(SiteActivityTest.class); + private static Log logger = LogFactory.getLog(AbstractSiteActivityTest.class); - private static final String[] CONFIG_LOCATIONS = - { - "classpath:alfresco/application-context.xml" - //, "classpath:alfresco/subsystems/ActivitiesFeed/default/activities-feed-context.xml" - }; - - private static ApplicationContext applicationContext = new ClassPathXmlApplicationContext( - SiteActivityTest.CONFIG_LOCATIONS); + private ApplicationContext applicationContext; private SiteService siteService; private ActivityService activityService; @@ -99,14 +96,14 @@ public class SiteActivityTest extends TestCase private static boolean membersRemoved = false; private static boolean controlsCreated = false; - public SiteActivityTest() + public AbstractSiteActivityTest() { } - @Override - protected void setUp() throws Exception + @Before + public void setUp() throws Exception { - super.setUp(); + applicationContext = ApplicationContextHelper.getApplicationContext(); String testid = ""+System.currentTimeMillis(); // Let's shut down the scheduler so that we aren't competing with the scheduled versions of the post lookup and @@ -143,10 +140,10 @@ public class SiteActivityTest extends TestCase site2 = "test_site2_" + testid; site3 = "test_site3_" + testid; - user1 = "test_user1_" + testid; - user2 = "test_user2_" + testid; - user3 = "test_user3_" + testid; - user4 = "test_user4_" + testid; + user1 = "Test_User1_" + testid; + user2 = "Test_User2_" + testid; + user3 = "Test_User3_" + testid; + user4 = "Test_User4_" + testid; // create users @@ -168,8 +165,8 @@ public class SiteActivityTest extends TestCase createSite(site3, false); } - @Override - protected void tearDown() throws Exception + @After + public void tearDown() throws Exception { login(ADMIN_USER, ADMIN_PW); @@ -185,8 +182,6 @@ public class SiteActivityTest extends TestCase membersAddedUpdated = false; membersRemoved = false; controlsCreated = false; - - super.tearDown(); } protected void createSite(String siteId, boolean isPublic) throws Exception @@ -205,6 +200,22 @@ public class SiteActivityTest extends TestCase siteService.deleteSite(siteId); } + @Test + //MNT-9104 If username contains uppercase letters the action of joining a site will not be displayed in "My activities" + public void testUserActivitiesOnSite() throws Exception + { + login(ADMIN_USER, ADMIN_PW); + + addMembership(site1, user4, SiteModel.SITE_CONSUMER); + + generateFeed(); + + login(user4, USER_PW); + + getUserFeed(user4, site1, false, false, true, 1); + } + + @Test public void testGetSiteFeedsBefore() throws Exception { login(ADMIN_USER, ADMIN_PW); @@ -245,6 +256,7 @@ public class SiteActivityTest extends TestCase assertEquals(expectedCount, activityService.getSiteFeedEntries(siteId).size()); } + @Test public void testGetUserFeedsBefore() throws Exception { // as admin @@ -305,6 +317,7 @@ public class SiteActivityTest extends TestCase assertEquals(expectedCount, activityService.getUserFeedEntries(userId, siteId, excludeThisUser, excludeOtherUsers, null, null).size()); } + @Test public void testUserFeedControls() throws Exception { if (! controlsCreated) @@ -327,6 +340,7 @@ public class SiteActivityTest extends TestCase } } + @Test public void testAddAndUpdateMemberships() throws Exception { if (! membersAddedUpdated) @@ -343,6 +357,7 @@ public class SiteActivityTest extends TestCase } } + @Test public void testGetSiteFeedsAfterAddAndUpdateMemberships() throws Exception { testAddAndUpdateMemberships(); @@ -369,6 +384,8 @@ public class SiteActivityTest extends TestCase // ignore } } + + @Test public void testRemoveMemberships() throws Exception { if (! membersRemoved) @@ -420,6 +437,7 @@ public class SiteActivityTest extends TestCase activityService.setFeedControl(new FeedControl(siteId, appToolId)); } + @Test public void testGetSiteFeedsAfterRemoveMemberships() throws Exception { testAddAndUpdateMemberships(); @@ -458,6 +476,7 @@ public class SiteActivityTest extends TestCase } } + @Test public void testGetUserFeedsAfter() throws Exception { testUserFeedControls(); @@ -566,4 +585,11 @@ public class SiteActivityTest extends TestCase postLookup.execute(); feedGenerator.execute(); } + + @AfterClass + // remove system "user.name.caseSensitive" property + public static void afterClass() + { + System.clearProperty("user.name.caseSensitive"); + } } diff --git a/source/test-java/org/alfresco/repo/activities/SiteActivityTestCaseInsensitivity.java b/source/test-java/org/alfresco/repo/activities/SiteActivityTestCaseInsensitivity.java new file mode 100644 index 0000000000..85f876c81d --- /dev/null +++ b/source/test-java/org/alfresco/repo/activities/SiteActivityTestCaseInsensitivity.java @@ -0,0 +1,9 @@ +package org.alfresco.repo.activities; + +public class SiteActivityTestCaseInsensitivity extends AbstractSiteActivityTest +{ + static + { + System.setProperty("user.name.caseSensitive", "false"); + } +} diff --git a/source/test-java/org/alfresco/repo/activities/SiteActivityTestCaseSensitivity.java b/source/test-java/org/alfresco/repo/activities/SiteActivityTestCaseSensitivity.java new file mode 100644 index 0000000000..4fe131ee1f --- /dev/null +++ b/source/test-java/org/alfresco/repo/activities/SiteActivityTestCaseSensitivity.java @@ -0,0 +1,9 @@ +package org.alfresco.repo.activities; + +public class SiteActivityTestCaseSensitivity extends AbstractSiteActivityTest +{ + static + { + System.setProperty("user.name.caseSensitive", "true"); + } +} diff --git a/source/test-java/org/alfresco/repo/activities/feed/cleanup/FeedCleanerTest.java b/source/test-java/org/alfresco/repo/activities/feed/cleanup/AbstractFeedCleanerTest.java similarity index 88% rename from source/test-java/org/alfresco/repo/activities/feed/cleanup/FeedCleanerTest.java rename to source/test-java/org/alfresco/repo/activities/feed/cleanup/AbstractFeedCleanerTest.java index 1a5661a5bf..f0366e39b7 100644 --- a/source/test-java/org/alfresco/repo/activities/feed/cleanup/FeedCleanerTest.java +++ b/source/test-java/org/alfresco/repo/activities/feed/cleanup/AbstractFeedCleanerTest.java @@ -18,6 +18,8 @@ */ package org.alfresco.repo.activities.feed.cleanup; +import static org.junit.Assert.*; + import java.io.PrintWriter; import java.io.StringWriter; import java.util.Date; @@ -37,6 +39,10 @@ import org.alfresco.service.cmr.site.SiteService; import org.alfresco.service.cmr.site.SiteVisibility; import org.alfresco.util.ApplicationContextHelper; import org.alfresco.util.PropertyMap; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; import org.quartz.Scheduler; import org.springframework.context.ApplicationContext; @@ -46,16 +52,16 @@ import org.springframework.context.ApplicationContext; * @author janv * @since 3.0 */ -public class FeedCleanerTest extends TestCase -{ - private static ApplicationContext ctx = ApplicationContextHelper.getApplicationContext(); +public abstract class AbstractFeedCleanerTest +{ + private ApplicationContext ctx; private ActivityFeedDAO feedDAO; - private FeedCleaner cleaner; + protected FeedCleaner cleaner; private SiteService siteService; private PersonService personService; protected RetryingTransactionHelper transactionHelper; - + private static final String TEST_SITE = "testSite"; private static final String TEST_SITE_1 = TEST_SITE+"1"; @@ -70,12 +76,13 @@ public class FeedCleanerTest extends TestCase private static final String TEST_USER_B = "testUserB"; private static final String TEST_USER_C = "testUserC"; private static final String TEST_USER_D = "testUserD"; - private static final String TEST_USER_E = "testUserE"; + protected static final String TEST_USER_E = "testUserE"; private static final String TEST_USER_F = "testUserF"; - @Override + @Before public void setUp() throws Exception { + ctx = ApplicationContextHelper.getApplicationContext(); JobLockService jobLockService = (JobLockService) ctx.getBean("JobLockService"); PolicyComponent policyComponent = (PolicyComponent) ctx.getBean("policyComponent"); NodeService nodeService = (NodeService) ctx.getBean("NodeService"); @@ -84,7 +91,7 @@ public class FeedCleanerTest extends TestCase personService = (PersonService) ctx.getBean("PersonService"); feedDAO = (ActivityFeedDAO) ctx.getBean("feedDAO"); transactionHelper = (RetryingTransactionHelper)ctx.getBean("retryingTransactionHelper"); - + // Let's shut down the scheduler so that we aren't competing with the scheduled versions of jobs (ie. feed cleaner) Scheduler scheduler = (Scheduler) ctx.getBean("schedulerFactory"); scheduler.shutdown(); @@ -107,6 +114,7 @@ public class FeedCleanerTest extends TestCase cleaner.setNodeService(nodeService); } + @After public void tearDown() throws Exception { AuthenticationUtil.setFullyAuthenticatedUser(AuthenticationUtil.getAdminUserName()); @@ -130,6 +138,7 @@ public class FeedCleanerTest extends TestCase // NOOP } + @Test public void testMaxIdRange() throws Exception { // insert site feed entries for TEST_SITE_4 @@ -154,6 +163,8 @@ public class FeedCleanerTest extends TestCase // Check assertEquals(5, feedDAO.selectSiteFeedEntries(TEST_SITE_4, -1).size()); } + + @Test public void testMaxAge() throws Exception { cleaner.setMaxFeedSize(0); @@ -199,7 +210,7 @@ public class FeedCleanerTest extends TestCase feedEntry.setPostDate(new Date()); // now feedEntry.setSiteNetwork(TEST_SITE_3); - feedEntry.setActivityType("testActivityType"); + feedEntry.setActivityType("testActivityType"); feedEntry.setPostUserId(TEST_USER_A); feedEntry.setFeedUserId(TEST_USER_B); feedEntry.setFeedDate(new Date()); @@ -217,10 +228,11 @@ public class FeedCleanerTest extends TestCase assertEquals(1, feedDAO.selectUserFeedEntries(TEST_USER_B, null, false, false, -1L, -1).size()); } + @Test public void testMaxSize() throws Exception { cleaner.setMaxAgeMins(0); - + // insert site feed entries for TEST_SITE_4 for (int i = 0; i < 10; i++) @@ -310,6 +322,7 @@ public class FeedCleanerTest extends TestCase assertEquals(10, feedDAO.selectUserFeedEntries(TEST_USER_F, null, false, false, -1L, -1).size()); } + @Test public void testSiteDelete() throws Exception { cleaner.setMaxAgeMins(100); @@ -348,7 +361,7 @@ public class FeedCleanerTest extends TestCase feedEntry.setPostDate(new Date(System.currentTimeMillis()-(i*60*1000L))); feedEntry.setSiteNetwork(TEST_SITE_5); - feedEntry.setActivityType("testActivityType"); + feedEntry.setActivityType("testActivityType"); feedEntry.setPostUserId(TEST_USER_C); feedEntry.setFeedUserId(TEST_USER_D); feedEntry.setFeedDate(new Date()); @@ -378,14 +391,28 @@ public class FeedCleanerTest extends TestCase }, false, true); } + @Test public void testPersonDelete() throws Exception + { + boolean caseSensitive = Boolean.getBoolean(System.getProperty("user.name.caseSensitive")); + if (caseSensitive) + { + testPersonDelete(TEST_USER_E); + } + else + { + testPersonDelete(TEST_USER_E.toLowerCase()); + } + } + + protected void testPersonDelete(final String userId) throws Exception { cleaner.setMaxAgeMins(100); - createPerson(TEST_USER_E); // ignore result + createPerson(userId); // ignore result assertEquals(0, feedDAO.selectSiteFeedEntries(TEST_SITE_6, -1).size()); - assertEquals(0, feedDAO.selectUserFeedEntries(TEST_USER_E, null, false, false, -1L, -1).size()); + assertEquals(0, feedDAO.selectUserFeedEntries(userId, null, false, false, -1L, -1).size()); final int site6FeedCnt = 10; @@ -397,16 +424,16 @@ public class FeedCleanerTest extends TestCase feedEntry.setPostDate(new Date(System.currentTimeMillis()-(i*60*1000L))); feedEntry.setSiteNetwork(TEST_SITE_6); feedEntry.setActivityType("testActivityType"); - feedEntry.setPostUserId(TEST_USER_E); + feedEntry.setPostUserId(userId); feedEntry.setFeedUserId(""); feedEntry.setFeedDate(new Date()); - + //bypassing FeedTaskProcessor.process() call feedDAO.insertFeedEntry() feedDAO.insertFeedEntry(feedEntry); // for TEST_SITE_6 site feed - - feedEntry.setFeedUserId(TEST_USER_E); // for TEST_USER_E user feed + + feedEntry.setFeedUserId(userId); // for TEST_USER_E user feed feedEntry.setFeedDate(new Date()); - - feedDAO.insertFeedEntry(feedEntry); + //bypassing FeedTaskProcessor.process() call feedDAO.insertFeedEntry() + feedDAO.insertFeedEntry(feedEntry); } final int site7FeedCnt = 5; @@ -418,26 +445,26 @@ public class FeedCleanerTest extends TestCase feedEntry.setPostDate(new Date(System.currentTimeMillis()-(i*60*1000L))); feedEntry.setSiteNetwork(TEST_SITE_7); - feedEntry.setActivityType("testActivityType"); - feedEntry.setPostUserId(TEST_USER_E); + feedEntry.setActivityType("testActivityType"); + feedEntry.setPostUserId(userId); feedEntry.setFeedUserId(""); feedEntry.setFeedDate(new Date()); - + //bypassing FeedTaskProcessor.process() call feedDAO.insertFeedEntry() feedDAO.insertFeedEntry(feedEntry); // for TEST_SITE_7 site feed - - feedEntry.setFeedUserId(TEST_USER_E); // for TEST_USER_E user feed + + feedEntry.setFeedUserId(userId); // for TEST_USER_E user feed feedEntry.setFeedDate(new Date()); - + //bypassing FeedTaskProcessor.process() call feedDAO.insertFeedEntry() feedDAO.insertFeedEntry(feedEntry); } assertEquals(site6FeedCnt, feedDAO.selectSiteFeedEntries(TEST_SITE_6, -1).size()); assertEquals(site7FeedCnt, feedDAO.selectSiteFeedEntries(TEST_SITE_7, -1).size()); - assertEquals(site6FeedCnt+site7FeedCnt, feedDAO.selectUserFeedEntries(TEST_USER_E, null, false, false, -1L, -1).size()); - + assertEquals(site6FeedCnt+site7FeedCnt, feedDAO.selectUserFeedEntries(userId, null, false, false, -1L, -1).size()); + // delete the person - personService.deletePerson(TEST_USER_E); - + personService.deletePerson(userId); + // note: site feed cleanup is done in separate txn after commit transactionHelper.doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback() { @@ -446,11 +473,11 @@ public class FeedCleanerTest extends TestCase assertEquals(site6FeedCnt, feedDAO.selectSiteFeedEntries(TEST_SITE_6, -1).size()); assertEquals(site7FeedCnt, feedDAO.selectSiteFeedEntries(TEST_SITE_7, -1).size()); - assertEquals(0, feedDAO.selectUserFeedEntries(TEST_USER_E, null, false, false, -1L, -1).size()); + assertEquals(0, feedDAO.selectUserFeedEntries(userId, null, false, false, -1L, -1).size()); - assertTrue(createPerson(TEST_USER_E)); - - assertEquals(0, feedDAO.selectUserFeedEntries(TEST_USER_E, null, false, false, -1L, -1).size()); + assertTrue(createPerson(userId)); + + assertEquals(0, feedDAO.selectUserFeedEntries(userId, null, false, false, -1L, -1).size()); return null; } }, false, true); @@ -476,6 +503,7 @@ public class FeedCleanerTest extends TestCase return false; // already exists } + @Test public void testConcurrentAccessAndRemoval() throws Exception { cleaner.setMaxAgeMins(1); @@ -604,4 +632,11 @@ public class FeedCleanerTest extends TestCase } } } + + @AfterClass + // remove system "user.name.caseSensitive" property + public static void afterClass() + { + System.clearProperty("user.name.caseSensitive"); + } } diff --git a/source/test-java/org/alfresco/repo/activities/feed/cleanup/FeedCleanerTestCaseInsensitivity.java b/source/test-java/org/alfresco/repo/activities/feed/cleanup/FeedCleanerTestCaseInsensitivity.java new file mode 100644 index 0000000000..f739d67a1d --- /dev/null +++ b/source/test-java/org/alfresco/repo/activities/feed/cleanup/FeedCleanerTestCaseInsensitivity.java @@ -0,0 +1,10 @@ +package org.alfresco.repo.activities.feed.cleanup; + +public class FeedCleanerTestCaseInsensitivity extends AbstractFeedCleanerTest +{ + static + { + System.setProperty("user.name.caseSensitive", "false"); + } + +} diff --git a/source/test-java/org/alfresco/repo/activities/feed/cleanup/FeedCleanerTestCaseSensitivity.java b/source/test-java/org/alfresco/repo/activities/feed/cleanup/FeedCleanerTestCaseSensitivity.java new file mode 100644 index 0000000000..8c1ce213fc --- /dev/null +++ b/source/test-java/org/alfresco/repo/activities/feed/cleanup/FeedCleanerTestCaseSensitivity.java @@ -0,0 +1,10 @@ +package org.alfresco.repo.activities.feed.cleanup; + +public class FeedCleanerTestCaseSensitivity extends AbstractFeedCleanerTest +{ + static + { + System.setProperty("user.name.caseSensitive", "true"); + } + +}