package de.asideas.crowdsource.testsupport.util;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.util.Arrays;
import java.util.List;
@Service
public class MailServerClient {
@Autowired
private UrlProvider urlProvider;
private RestTemplate restTemplate = new RestTemplate();
public void clearMails() {
restTemplate.delete(urlProvider.mailserverUrl());
}
public void waitForMails(int mailCount, long wait) {
long start = System.currentTimeMillis();
String url = urlProvider.mailserverUrl();
while (messages(url).size() < mailCount && System.currentTimeMillis() < start + wait) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
private List<Message> messages(String url) {
final Message[] messages = restTemplate.getForObject(url, Message[].class);
return Arrays.asList(messages);
}
public List<Message> messages() {
return messages(urlProvider.mailserverUrl());
}
public static class Message {
public String from;
public String to;
public String subject;
public String message;
}
}