2 changed files with 112 additions and 12 deletions
@ -0,0 +1,98 @@ |
|||||
|
package org.thingsboard.server.service.mail; |
||||
|
|
||||
|
import com.fasterxml.jackson.databind.node.ObjectNode; |
||||
|
import org.junit.Test; |
||||
|
import org.junit.runner.RunWith; |
||||
|
import org.mockito.Mockito; |
||||
|
import org.mockito.junit.MockitoJUnitRunner; |
||||
|
import org.thingsboard.common.util.JacksonUtil; |
||||
|
import javax.mail.MessagingException; |
||||
|
import javax.mail.Session; |
||||
|
import javax.mail.internet.MimeMessage; |
||||
|
import java.util.ArrayList; |
||||
|
import java.util.List; |
||||
|
import java.util.Properties; |
||||
|
|
||||
|
import static org.mockito.ArgumentMatchers.any; |
||||
|
import static org.mockito.Mockito.mock; |
||||
|
import static org.mockito.Mockito.spy; |
||||
|
import static org.mockito.Mockito.times; |
||||
|
|
||||
|
@RunWith(MockitoJUnitRunner.class) |
||||
|
public class TbMailSenderTest { |
||||
|
|
||||
|
@Test |
||||
|
public void testDoSendSendMail() { |
||||
|
ObjectNode jsonConfig = getBasicMailConfig(); |
||||
|
TbMailSender tbMailSender = spy(new TbMailSender(mock(TbMailContextComponent.class), jsonConfig)); |
||||
|
|
||||
|
MimeMessage mimeMsg = new MimeMessage(Session.getInstance(new Properties())); |
||||
|
List<MimeMessage> mimeMessages = new ArrayList<>(1); |
||||
|
mimeMessages.add(mimeMsg); |
||||
|
|
||||
|
Mockito.doNothing().when(tbMailSender).updateOauth2PasswordIfExpired(); |
||||
|
Mockito.doNothing().when(tbMailSender).doSendSuper(any(), any()); |
||||
|
|
||||
|
tbMailSender.doSend(mimeMessages.toArray(new MimeMessage[0]), null); |
||||
|
|
||||
|
Mockito.verify(tbMailSender, times(1)).updateOauth2PasswordIfExpired(); |
||||
|
} |
||||
|
|
||||
|
@Test |
||||
|
public void testTestConnection() throws MessagingException { |
||||
|
ObjectNode jsonConfig = getBasicMailConfig(); |
||||
|
TbMailSender tbMailSender = spy(new TbMailSender(mock(TbMailContextComponent.class), jsonConfig)); |
||||
|
|
||||
|
Mockito.doNothing().when(tbMailSender).updateOauth2PasswordIfExpired(); |
||||
|
Mockito.doNothing().when(tbMailSender).testConnectionSuper(); |
||||
|
|
||||
|
tbMailSender.testConnection(); |
||||
|
|
||||
|
Mockito.verify(tbMailSender, times(1)).updateOauth2PasswordIfExpired(); |
||||
|
} |
||||
|
|
||||
|
@Test |
||||
|
public void testUpdateOauth2PasswordIfExpiredIfOauth2Enabled() { |
||||
|
ObjectNode jsonConfig = getOauth2Config(); |
||||
|
TbMailSender tbMailSender = spy(new TbMailSender(mock(TbMailContextComponent.class), jsonConfig)); |
||||
|
|
||||
|
Mockito.doNothing().when(tbMailSender).refreshAccessToken(); |
||||
|
|
||||
|
tbMailSender.updateOauth2PasswordIfExpired(); |
||||
|
|
||||
|
Mockito.verify(tbMailSender, times(1)).refreshAccessToken(); |
||||
|
Mockito.verify(tbMailSender, times(1)).setPassword(any()); |
||||
|
} |
||||
|
|
||||
|
@Test |
||||
|
public void testUpdateOauth2PasswordIfExpiredIfOauth2Disabled() { |
||||
|
ObjectNode jsonConfig = getBasicMailConfig(); |
||||
|
TbMailSender tbMailSender = spy(new TbMailSender(mock(TbMailContextComponent.class), jsonConfig)); |
||||
|
|
||||
|
tbMailSender.updateOauth2PasswordIfExpired(); |
||||
|
|
||||
|
Mockito.verify(tbMailSender, Mockito.never()).refreshAccessToken(); |
||||
|
Mockito.verify(tbMailSender, Mockito.never()).setPassword(any()); |
||||
|
} |
||||
|
|
||||
|
private static ObjectNode getOauth2Config() { |
||||
|
ObjectNode jsonConfig = JacksonUtil.newObjectNode(); |
||||
|
jsonConfig.put("smtpProtocol", "smtps"); |
||||
|
jsonConfig.put("timeout", "1000"); |
||||
|
jsonConfig.put("enableOauth2", true); |
||||
|
jsonConfig.put("smtpHost", "smtp.gmail.com"); |
||||
|
jsonConfig.put("smtpPort", "465"); |
||||
|
jsonConfig.put("username", "testUser"); |
||||
|
return jsonConfig; |
||||
|
} |
||||
|
|
||||
|
private static ObjectNode getBasicMailConfig() { |
||||
|
ObjectNode jsonConfig = JacksonUtil.newObjectNode(); |
||||
|
jsonConfig.put("smtpProtocol", "smtps"); |
||||
|
jsonConfig.put("timeout", "1000"); |
||||
|
jsonConfig.put("smtpHost", "smtp.gmail.com"); |
||||
|
jsonConfig.put("smtpPort", "465"); |
||||
|
jsonConfig.put("username", "testUser"); |
||||
|
return jsonConfig; |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue