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.PacketChatMessages; import tv.dyndns.kishibe.qmaclone.server.ChatManager; import tv.dyndns.kishibe.qmaclone.server.websocket.ChatMessagesWebSocketServlet.ChatMessagesWebSocket; @RunWith(MockitoJUnitRunner.class) public class ChatMessagesWebSocketServletTest { @Mock private ChatManager mockChatManager; @Mock private Session mockSession; @Mock private MessageSender<PacketChatMessages> mockMessageSender; @Mock private WebSocketServletFactory mockWebSocketServletFactory; private ChatMessagesWebSocketServlet servlet; private ChatMessagesWebSocket webSocket; @Before public void setUp() throws Exception { servlet = new ChatMessagesWebSocketServlet(mockChatManager); webSocket = new ChatMessagesWebSocket(); } @Test public void onConnectJoinsSessionToChatMessageMessageSender() { when(mockChatManager.getChatMessagesMessageSender()).thenReturn(mockMessageSender); webSocket.onConnect(mockSession); verify(mockMessageSender).join(mockSession); } @Test public void onCloseByesSessionFromChatMessageMessageSender() { when(mockChatManager.getChatMessagesMessageSender()).thenReturn(mockMessageSender); webSocket.onConnect(mockSession); webSocket.onClose(0, ""); verify(mockMessageSender).bye(mockSession); } @Test public void onErrorByesSessionFromChatMessageMessageSender() { when(mockChatManager.getChatMessagesMessageSender()).thenReturn(mockMessageSender); when(mockSession.getRemoteAddress()).thenReturn(new InetSocketAddress(0)); webSocket.onConnect(mockSession); webSocket.onError(new Exception()); verify(mockMessageSender).bye(mockSession); } @Test public void configureRegistersChatMessagesWebSocket() { servlet.configure(mockWebSocketServletFactory); verify(mockWebSocketServletFactory).register(ChatMessagesWebSocket.class); } }