/*
* Copyright (c) JForum Team. All rights reserved.
*
* The software in this package is published under the terms of the LGPL
* license a copy of which has been included with this distribution in the
* license.txt file.
*
* The JForum Project
* http://www.jforum.net
*/
package net.jforum.util.mail;
import static org.mockito.Matchers.*;
import static org.mockito.Mockito.*;
import java.util.ArrayList;
import java.util.List;
import net.jforum.entities.Post;
import net.jforum.entities.Topic;
import net.jforum.entities.User;
import net.jforum.repository.TopicRepository;
import net.jforum.util.ConfigKeys;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import com.dumbster.smtp.SimpleSmtpServer;
import com.dumbster.smtp.SmtpMessage;
/**
* @author Rafael Steil, Jonatan Cloutier
*/
@RunWith(MockitoJUnitRunner.class)
public class TopicReplySpammerTestCase extends MailTestCase {
@Mock private TopicRepository repository;
@Test
public void send() {
when(repository.getTotalPosts(notNull(Topic.class))).thenReturn(10);
TopicReplySpammer spammer = new TopicReplySpammer(config);
List<User> users = new ArrayList<User>();
User u1 = new User(); u1.setEmail("email@addres.verify");
User u2 = new User(); u2.setEmail("email@addres.two");
users.add(u1); users.add(u2);
Topic topic = new Topic(repository); topic.setId(1); topic.setSubject("subject x");
topic.setLastPost(new Post()); topic.getLastPost().setId(123);
spammer.prepare(topic, users);
SimpleSmtpServer server = null;
try {
server = SimpleSmtpServer.start(config.getInt(ConfigKeys.MAIL_SMTP_PORT));
spammer.dispatchMessages();
}
finally {
if (server != null) {
server.stop();
}
}
Assert.assertEquals(2, server.getReceivedEmailSize());
SmtpMessage message = (SmtpMessage)server.getReceivedEmail().next();
Assert.assertTrue(message.getBody().indexOf("subject x") > -1);
Assert.assertTrue(message.getBody().indexOf("http://localhost/topics/list/1.page#123") > -1);
Assert.assertTrue(message.getBody().indexOf("http://localhost/topics/unwatch/1.page") > -1);
}
}