package tv.dyndns.kishibe.qmaclone.server.websocket; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import java.net.InetSocketAddress; import org.eclipse.jetty.websocket.api.Session; import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import tv.dyndns.kishibe.qmaclone.client.packet.PacketServerStatus; import tv.dyndns.kishibe.qmaclone.server.ServerStatusManager; import tv.dyndns.kishibe.qmaclone.server.websocket.ServerStatusWebSocketServlet.ServerStatusWebSocket; @RunWith(MockitoJUnitRunner.class) public class ServerStatusWebSocketServletTest { @Mock private ServerStatusManager mockServerStatusManager; @Mock private Session mockSession; @Mock private MessageSender<PacketServerStatus> mockMessageSender; @Mock private WebSocketServletFactory mockWebSocketServletFactory; private ServerStatusWebSocketServlet servlet; private ServerStatusWebSocket webSocket; @Before public void setUp() throws Exception { servlet = new ServerStatusWebSocketServlet(mockServerStatusManager); webSocket = new ServerStatusWebSocket(); } @Test public void onConnectJoinsSessionToServerStatusMessageSender() { when(mockServerStatusManager.getServerStatusMessageSender()).thenReturn(mockMessageSender); webSocket.onConnect(mockSession); verify(mockMessageSender).join(mockSession); } @Test public void onCloseByesSessionFromServerStatusMessageSender() { when(mockServerStatusManager.getServerStatusMessageSender()).thenReturn(mockMessageSender); webSocket.onConnect(mockSession); webSocket.onClose(0, ""); verify(mockMessageSender).bye(mockSession); } @Test public void onErrorByesSessionFromServerStatusMessageSender() { when(mockServerStatusManager.getServerStatusMessageSender()).thenReturn(mockMessageSender); when(mockSession.getRemoteAddress()).thenReturn(new InetSocketAddress(0)); webSocket.onConnect(mockSession); webSocket.onError(new Exception()); verify(mockMessageSender).bye(mockSession); } @Test public void configureRegistersServerStatusWebSocket() { servlet.configure(mockWebSocketServletFactory); verify(mockWebSocketServletFactory).register(ServerStatusWebSocket.class); } }