diff --git a/source/test-java/org/alfresco/repo/imap/ImapServiceImplTest.java b/source/test-java/org/alfresco/repo/imap/ImapServiceImplTest.java index 9cddd9aa92..80dbae2b6c 100644 --- a/source/test-java/org/alfresco/repo/imap/ImapServiceImplTest.java +++ b/source/test-java/org/alfresco/repo/imap/ImapServiceImplTest.java @@ -22,8 +22,11 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.Serializable; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.Date; +import java.util.GregorianCalendar; import java.util.Iterator; import java.util.LinkedList; import java.util.List; @@ -33,7 +36,17 @@ import java.util.Properties; import javax.mail.Flags; import javax.mail.Session; +import javax.mail.internet.AddressException; +import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; +import javax.mail.search.AndTerm; +import javax.mail.search.BodyTerm; +import javax.mail.search.ComparisonTerm; +import javax.mail.search.FromTerm; +import javax.mail.search.ReceivedDateTerm; +import javax.mail.search.SearchTerm; +import javax.mail.search.SentDateTerm; +import javax.mail.search.SubjectTerm; import javax.transaction.UserTransaction; import junit.framework.TestCase; @@ -1089,4 +1102,45 @@ public class ImapServiceImplTest extends TestCase List nodeRefs = searchService.selectNodes(storeRootNodeRef, APP_COMPANY_HOME, null, namespaceService, false); return nodeRefs.get(0); } + + /** + * MNT-12773 + * @throws AddressException + */ + public void testSearchTerms() throws AddressException + { + List mf = imapService.listMailboxes(user, IMAP_ROOT+"/"+TEST_IMAP_FOLDER_NAME+"/_*", false); + ArrayList res = new ArrayList(); + SearchTerm st = null; + + st = new SentDateTerm(ComparisonTerm.LT, new Date()); + extractSearchTermResultsToList(mf, st, res); + assertEquals("Size of mails isn't correct. Search by sent date", 3, res.size()); + + res.clear(); + st = new SubjectTerm("For Test"); + extractSearchTermResultsToList(mf, st, res); + assertEquals("Size of mails isn't correct. Search by subject", 1, res.size()); + + res.clear(); + st = new FromTerm(new InternetAddress("admin@alfresco.com")); + extractSearchTermResultsToList(mf, st, res); + assertEquals("Size of mails isn't correct. Search by \"From\" term", 1, res.size()); + + res.clear(); + st = new AndTerm(st, new SubjectTerm("For Test")); + extractSearchTermResultsToList(mf, st, res); + assertEquals("Size of mails isn't correct. Search by \"From\" and \"Subject\" terms", 1, res.size()); + } + + private void extractSearchTermResultsToList(List folders, SearchTerm searchTerm, ArrayList resList) + { + for (AlfrescoImapFolder folder : folders) + { + for (long l : folder.search(searchTerm)) + { + resList.add(l); + } + } + } }