/*
* $Id$
* $URL$
*/
package org.subethamail.rtest;
import static org.junit.Assert.assertEquals;
import org.junit.Assume;
import org.junit.Before;
import org.subethamail.core.lists.i.SearchResult;
import org.subethamail.rtest.util.AdminMixin;
import org.subethamail.rtest.util.MailingListMixin;
import org.subethamail.rtest.util.PersonInfoMixin;
import org.subethamail.rtest.util.PersonMixin;
import org.subethamail.rtest.util.SubEthaTestCase;
/**
* @author Jeff Schnitzer
*/
public class SearchTest extends SubEthaTestCase
{
/** */
AdminMixin admin;
String uniqueString;
PersonMixin pers;
MailingListMixin ml;
/** */
@Before
public void setUp() throws Exception
{
super.setUp();
this.admin = new AdminMixin();
PersonInfoMixin info = new PersonInfoMixin();
this.uniqueString = info.getEmail(); // should be unique enough
// Create a list with the person subscribed
this.pers = new PersonMixin(this.admin);
this.ml = new MailingListMixin(this.admin, this.pers.getAddress());
}
/** */
@org.junit.Test
public void testNothingFound() throws Exception
{
Assume.assumeTrue(ResinTestSetup.exists());
// The email should be suitable unique
SearchResult result = this.admin.getArchiver().search(this.ml.getId(), this.uniqueString, 0, 5);
assertEquals(0, result.getTotal());
assertEquals(0, result.getHits().size());
}
/** */
@org.junit.Test
public void testSimpleFind() throws Exception
{
Assume.assumeTrue(ResinTestSetup.exists());
// Create two messages, one with subject one with body
byte[] rawMsg1 = this.createMessage(this.pers.getAddress(), this.ml.getAddress(), this.uniqueString, TEST_BODY);
byte[] rawMsg2 = this.createMessage(this.pers.getAddress(), this.ml.getAddress(), TEST_SUBJECT, this.uniqueString);
this.admin.getInjector().inject(this.pers.getAddress().getAddress(), this.ml.getEmail(), rawMsg1);
this.admin.getInjector().inject(this.pers.getAddress().getAddress(), this.ml.getEmail(), rawMsg2);
SearchResult result = this.admin.getArchiver().search(this.ml.getId(), this.uniqueString, 0, 5);
assertEquals(2, result.getTotal());
assertEquals(2, result.getHits().size());
}
/** */
@org.junit.Test
public void testListIsolation() throws Exception
{
Assume.assumeTrue(ResinTestSetup.exists());
MailingListMixin otherList = new MailingListMixin(this.admin, this.pers.getAddress());
// Create two messages, one with subject one with body
byte[] rawMsg1 = this.createMessage(this.pers.getAddress(), this.ml.getAddress(), this.uniqueString, TEST_BODY);
byte[] rawMsg2 = this.createMessage(this.pers.getAddress(), this.ml.getAddress(), TEST_SUBJECT, this.uniqueString);
this.admin.getInjector().inject(this.pers.getAddress().getAddress(), this.ml.getEmail(), rawMsg1);
this.admin.getInjector().inject(this.pers.getAddress().getAddress(), this.ml.getEmail(), rawMsg2);
// Now search the other list
SearchResult result = this.admin.getArchiver().search(otherList.getId(), this.uniqueString, 0, 5);
assertEquals(0, result.getTotal());
assertEquals(0, result.getHits().size());
}
}