package cc.blynk.server.hardware.handlers; import cc.blynk.server.core.BlockingIOProcessor; import cc.blynk.server.core.dao.SessionDao; import cc.blynk.server.core.dao.UserDao; import cc.blynk.server.core.model.DashBoard; import cc.blynk.server.core.model.Profile; import cc.blynk.server.core.model.auth.User; import cc.blynk.server.core.model.widgets.notifications.Mail; import cc.blynk.server.core.protocol.enums.Command; import cc.blynk.server.core.protocol.exceptions.IllegalCommandException; import cc.blynk.server.core.protocol.exceptions.NotAllowedException; import cc.blynk.server.core.protocol.model.messages.MessageFactory; import cc.blynk.server.core.protocol.model.messages.hardware.MailMessage; import cc.blynk.server.core.session.HardwareStateHolder; import cc.blynk.server.hardware.handlers.hardware.logic.MailLogic; import cc.blynk.server.notifications.mail.MailWrapper; import cc.blynk.utils.ServerProperties; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import static org.mockito.Mockito.when; /** * The Blynk Project. * Created by Dmitriy Dumanskiy. * Created on 07.04.15. */ @RunWith(MockitoJUnitRunner.class) public class MailHandlerTest { @Mock private BlockingIOProcessor blockingIOProcessor; @Mock private MailWrapper mailWrapper; private final MailLogic mailHandler = new MailLogic(blockingIOProcessor, mailWrapper, 1); @Mock private ChannelHandlerContext ctx; @Mock private UserDao userDao; @Mock private SessionDao sessionDao; @Mock private ServerProperties serverProperties; @Mock private User user; @Mock private Profile profile; @Mock private DashBoard dashBoard; @Mock private Channel channel; @Test(expected = NotAllowedException.class) public void testNoEmailWidget() throws InterruptedException { MailMessage mailMessage = (MailMessage) MessageFactory.produce(1, Command.EMAIL, "body"); user.profile = profile; when(profile.getDashByIdOrThrow(1)).thenReturn(dashBoard); when(dashBoard.getWidgetByType(Mail.class)).thenReturn(null); HardwareStateHolder state = new HardwareStateHolder(1, 0, user, "x"); mailHandler.messageReceived(ctx, state, mailMessage); } @Test(expected = IllegalCommandException.class) public void testNoToBody() throws InterruptedException { MailMessage mailMessage = (MailMessage) MessageFactory.produce(1, Command.EMAIL, "".replaceAll(" ", "\0")); user.profile = profile; when(profile.getDashByIdOrThrow(1)).thenReturn(dashBoard); Mail mail = new Mail(); when(dashBoard.getWidgetByType(Mail.class)).thenReturn(mail); dashBoard.isActive = true; HardwareStateHolder state = new HardwareStateHolder(1, 0, user, "x"); mailHandler.messageReceived(ctx, state, mailMessage); } @Test(expected = IllegalCommandException.class) public void testNoBody() throws InterruptedException { MailMessage mailMessage = (MailMessage) MessageFactory.produce(1, Command.EMAIL, "body".replaceAll(" ", "\0")); user.profile = profile; when(profile.getDashByIdOrThrow(1)).thenReturn(dashBoard); when(dashBoard.getWidgetByType(Mail.class)).thenReturn(new Mail()); dashBoard.isActive = true; HardwareStateHolder state = new HardwareStateHolder(1, 0, user, "x"); mailHandler.messageReceived(ctx, state, mailMessage); } }