/* * Copyright 2014-2016 CyberVision, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.kaaproject.kaa.server.operations.service.akka.actors.core.endpoint; import akka.actor.ActorContext; import akka.actor.ActorRef; import org.junit.Assert; import org.junit.Test; import org.kaaproject.kaa.common.hash.EndpointObjectHash; import org.kaaproject.kaa.server.operations.service.OperationsService; import org.kaaproject.kaa.server.operations.service.akka.AkkaContext; import org.kaaproject.kaa.server.operations.service.akka.actors.core.endpoint.local.LocalEndpointActorMessageProcessor; import org.kaaproject.kaa.server.operations.service.akka.messages.core.session.ActorTimeoutMessage; import org.kaaproject.kaa.server.operations.service.akka.messages.core.user.EndpointEventReceiveMessage; import org.kaaproject.kaa.server.transport.channel.ChannelAware; import org.mockito.Mockito; public class EndpointActorMessageProcessorTest { @Test public void noChannelsForEventsTest() { OperationsService osMock = Mockito.mock(OperationsService.class); ActorContext ctxMock = Mockito.mock(ActorContext.class); ActorRef appActorMock = Mockito.mock(ActorRef.class); Mockito.when(ctxMock.parent()).thenReturn(appActorMock); AkkaContext context = Mockito.mock(AkkaContext.class); Mockito.when(context.getOperationsService()).thenReturn(osMock); LocalEndpointActorMessageProcessor processor = Mockito.spy(new LocalEndpointActorMessageProcessor(context, "APP_TOKEN", EndpointObjectHash .fromSha1("key"), "actorKey")); EndpointEventReceiveMessage msg = Mockito.mock(EndpointEventReceiveMessage.class); Mockito.doNothing().when(processor).tellParent(Mockito.any(ActorContext.class), Mockito.any(Object.class)); processor.processEndpointEventReceiveMessage(ctxMock, msg); Mockito.verify(processor).tellParent(Mockito.any(ActorContext.class), Mockito.any(Object.class)); } @Test public void actorTimeoutTest() { OperationsService osMock = Mockito.mock(OperationsService.class); ActorContext ctxMock = Mockito.mock(ActorContext.class); ActorRef appActorMock = Mockito.mock(ActorRef.class); Mockito.when(ctxMock.parent()).thenReturn(appActorMock); AkkaContext context = Mockito.mock(AkkaContext.class); Mockito.when(context.getOperationsService()).thenReturn(osMock); LocalEndpointActorMessageProcessor processor = Mockito.spy(new LocalEndpointActorMessageProcessor(context, "APP_TOKEN", EndpointObjectHash .fromSha1("key"), "actorKey")); ActorTimeoutMessage msg = new ActorTimeoutMessage(System.currentTimeMillis()); Mockito.doNothing().when(processor).tellParent(Mockito.any(ActorContext.class), Mockito.any(Object.class)); processor.processActorTimeoutMessage(ctxMock, msg); Mockito.verify(processor).tellParent(Mockito.any(ActorContext.class), Mockito.any(Object.class)); } @Test public void actorTimeoutNegativeTest() { OperationsService osMock = Mockito.mock(OperationsService.class); ActorContext ctxMock = Mockito.mock(ActorContext.class); ActorRef appActorMock = Mockito.mock(ActorRef.class); Mockito.when(ctxMock.parent()).thenReturn(appActorMock); AkkaContext context = Mockito.mock(AkkaContext.class); Mockito.when(context.getOperationsService()).thenReturn(osMock); LocalEndpointActorMessageProcessor processor = Mockito.spy(new LocalEndpointActorMessageProcessor(context, "APP_TOKEN", EndpointObjectHash .fromSha1("key"), "actorKey")); ActorTimeoutMessage msg = new ActorTimeoutMessage(-1); Mockito.doNothing().when(processor).tellParent(Mockito.any(ActorContext.class), Mockito.any(Object.class)); processor.processActorTimeoutMessage(ctxMock, msg); Mockito.verify(processor, Mockito.never()).tellParent(Mockito.any(ActorContext.class), Mockito.any(Object.class)); } @Test public void processDisconnectMessageTest() { OperationsService osMock = Mockito.mock(OperationsService.class); ActorContext ctxMock = Mockito.mock(ActorContext.class); ActorRef appActorMock = Mockito.mock(ActorRef.class); Mockito.when(ctxMock.parent()).thenReturn(appActorMock); AkkaContext context = Mockito.mock(AkkaContext.class); Mockito.when(context.getOperationsService()).thenReturn(osMock); LocalEndpointActorMessageProcessor processor = Mockito.spy(new LocalEndpointActorMessageProcessor(context, "APP_TOKEN", EndpointObjectHash .fromSha1("key"), "actorKey")); ChannelAware msg = Mockito.mock(ChannelAware.class); Assert.assertFalse(processor.processDisconnectMessage(ctxMock, msg)); } }