/**
*
*/
package fr.cedrik.inotes;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.util.Date;
import java.util.List;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import fr.cedrik.email.MessagesMetaData;
import fr.cedrik.email.spi.Message;
import fr.cedrik.util.IteratorChain;
/**
* @author Cédrik LIME
*/
public class SessionTest {
private static INotesProperties iNotes;
private static Session session;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
iNotes = new INotesProperties(INotesProperties.FILE);
session = new Session(iNotes);
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
session = null;
}
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
/**
* Test method for {@link fr.cedrik.inotes.Session}.
*/
@Test
public void testSessionWorkflow() throws IOException {
if (session.login(iNotes.getUserName(), iNotes.getUserPassword())) {
try {
MessagesMetaData<MessageMetaData> messages = session.getMessagesMetaData();
assertNotNull("messages", messages);
assertNotNull("messages.entries", messages.entries);
if (! messages.entries.isEmpty()) {
checkMessagesOrder(messages.entries);
MessageMetaData message = messages.entries.get(0);
IteratorChain<String> mimeHeaders = session.getMessageMIMEHeaders(message);
assertNotNull("MIME headers", mimeHeaders);
assertTrue("MIME", mimeHeaders.hasNext());
assertTrue("Empty MIME headers", mimeHeaders.hasNext());
mimeHeaders.close();
IteratorChain<String> mime = session.getMessageMIME(message);
assertNotNull("MIME", mime);
assertTrue("MIME", mime.hasNext());
assertTrue("Empty MIME", mime.hasNext());
mime.close();
}
// INotesMessagesMetaData<MeetingNoticeMetaData> notices = session.getMeetingNoticesMetaData();
// assertNotNull("notices", notices);
// assertNotNull("notices.entries", notices.entries);
// if (! notices.entries.isEmpty()) {
// MeetingNoticeMetaData notice = notices.entries.get(0);
// Calendar ics = session.getMeetingNoticeICS(notice);
// assertNotNull("ICS Meeting Notice", ics);
// }
MessagesMetaData<? extends Message> allMessages = session.getMessagesAndMeetingNoticesMetaData();
assertNotNull("allMessages", allMessages);
assertNotNull("allMessages.entries", allMessages.entries);
} finally {
boolean logout = session.logout();
assertTrue("logout", logout);
}
}
}
/**
* Check messages are in ASCending order
* @param messages
*/
protected void checkMessagesOrder(List<? extends BaseINotesMessage> messages) {
Date date = new Date(0);
for (BaseINotesMessage message : messages) {
if (date.after(message.getDate())) {
throw new IllegalArgumentException(message.toString());
}
date = message.getDate();
}
}
}