package fr.keemto.provider.exchange.importer;
import microsoft.exchange.webservices.data.*;
import org.junit.Before;
import org.junit.Test;
import java.net.URI;
import java.util.Date;
import java.util.Enumeration;
import java.util.List;
import static org.hamcrest.CoreMatchers.*;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import static org.junit.Assume.assumeThat;
public class EmailExchangeServiceIT {
private ExchangeServiceWrapper serviceWrapper;
@Before
public void setUp() throws Exception {
String login = System.getProperty("provider.ews.xebia.login");
assumeThat(login, notNullValue());
String pwd = System.getProperty("provider.ews.xebia.password");
ExchangeService exchangeService = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
exchangeService.setUrl(new URI("https://owa.exchange-login.net/EWS/Exchange.asmx"));
ExchangeCredentials credentials = new WebCredentials(login, pwd);
exchangeService.setCredentials(credentials);
serviceWrapper = new ExchangeServiceWrapper(exchangeService);
}
@Test
public void shouldReturnMailsSinceEpoch() throws Exception {
Enumeration<List<EmailMessage>> emails = serviceWrapper.getEmailsNewerThan(0L);
List<EmailMessage> messages = emails.nextElement();
assertThat(messages.isEmpty(), is(false));
assertThat(messages.size(), equalTo(100));
EmailMessage emailMessage = messages.get(0);
assertThat(emailMessage.getBody(), notNullValue());
assertThat(emailMessage.getId(), notNullValue());
assertThat(emailMessage.getSender(), notNullValue());
assertThat(emailMessage.getSubject(), notNullValue());
assertThat(emailMessage.getDateTimeCreated(), not(equalTo(new Date())));
assertThat(emails.hasMoreElements(), is(true));
}
@Test
public void lastMailShouldNotBeReturned() throws Exception {
Enumeration<List<EmailMessage>> emails = serviceWrapper.getEmailsNewerThan(0L);
List<EmailMessage> messages = emails.nextElement();
EmailMessage lastEmail = messages.get(messages.size() - 1);
emails = serviceWrapper.getEmailsNewerThan(lastEmail.getDateTimeCreated().getTime());
messages = emails.nextElement();
for (EmailMessage message : messages) {
assertThat(message.getId(),not(equalTo(lastEmail.getId())));
}
}
}