package io.kaif.mail;
import static org.mockito.Mockito.*;
import java.time.Instant;
import java.util.Locale;
import java.util.concurrent.CompletableFuture;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import org.springframework.mail.MailException;
import io.kaif.model.account.Account;
public class MailAgentTest extends MailTestCases {
private MailAgent mockMailAgent;
private MailAgent mailAgent;
@Before
public void setUp() throws Exception {
MailProperties mailProperties = new MailProperties();
mailProperties.setSenderName("Kaif");
mailProperties.setSenderAddress("noreply@kaif.io");
MailComposer mailComposer = new MailComposer(messageSource, configuration, mailProperties);
mockMailAgent = Mockito.mock(MailAgent.class);
when(mockMailAgent.mailComposer()).thenReturn(mailComposer);
mailAgent = new MailAgent() {
@Override
public CompletableFuture<Boolean> send(Mail mailMessage) throws MailException {
return mockMailAgent.send(mailMessage);
}
@Override
public MailComposer mailComposer() {
return mockMailAgent.mailComposer();
}
};
}
@Test
public void sendAccountActivation() throws Exception {
Account account = Account.create("aName", "foo@gmail.com", "pw", Instant.now());
mailAgent.sendAccountActivation(Locale.ENGLISH, account, "myActivationId");
Mail mailMessage = new Mail();
mailMessage.setFrom("noreply@kaif.io");
mailMessage.setSubject("kaif account activation");
mailMessage.setText("Dear aName\n"
+ "\n"
+ "Your kaif account has been created, please click on the URL below to activate it:\n"
+ "\n"
+ " https://kaif.io/account/activation?key=myActivationId\n"
+ "\n"
+ "Regards,\n"
+ "\n"
+ "- kaif Team.");
mailMessage.setTo("foo@gmail.com");
verify(mockMailAgent).send(mailMessage);
}
@Test
public void sendResetPassword() throws Exception {
Account account = Account.create("aName", "foo@gmail.com", "pw", Instant.now());
mailAgent.sendResetPassword(Locale.ENGLISH, account, "myToken");
Mail mailMessage = new Mail();
mailMessage.setFrom("noreply@kaif.io");
mailMessage.setSubject("kaif account password reset");
mailMessage.setText("Dear aName\n"
+ "\n"
+ "You have been requested password reset, please click on the URL below to reset it:\n"
+ "\n"
+ " https://kaif.io/account/reset-password?key=myToken\n"
+ "\n"
+ "Regards,\n"
+ "\n"
+ "- kaif Team.");
mailMessage.setTo("foo@gmail.com");
verify(mockMailAgent).send(mailMessage);
}
@Test
public void sendPasswordWasReset() throws Exception {
Account account = Account.create("aName", "foo@gmail.com", "pw", Instant.now());
mailAgent.sendPasswordWasReset(Locale.ENGLISH, account);
Mail mailMessage = new Mail();
mailMessage.setFrom("noreply@kaif.io");
mailMessage.setSubject("Your kaif password has been reset.");
mailMessage.setText("Dear aName\n"
+ "\n"
+ "The password for your kaif id, has been successfully reset.\n"
+ "\n"
+ "If you didn’t make this change or if you believe an unauthorized person has accessed your account, go to https://kaif.io/account/forget-password to reset your password immediately.\n"
+ "\n"
+ "Regards,\n"
+ "\n"
+ "- kaif Team.");
mailMessage.setTo("foo@gmail.com");
verify(mockMailAgent).send(mailMessage);
}
}