package org.robotninjas.barge.jaxrs.ws; import org.eclipse.jetty.websocket.api.Session; import org.junit.Before; import org.junit.Test; import static org.mockito.Mockito.*; public class EventSocketTest { private final WsEventListener events = mock(WsEventListener.class); private final Session session = mock(Session.class); private final Listener listener = mock(Listener.class); private final SessionToListener listenerFactory= mock(SessionToListener.class); private final EventSocket socket = new EventSocket(events, listenerFactory); @Before public void setup(){ when(listenerFactory.createListener(session)).thenReturn(listener); } @Test public void registers_a_listener_when_sockets_open() throws Exception { socket.onWebSocketConnect(session); verify(events).addClient(listener); } @Test public void removes_registered_session_when_sockets_close() throws Exception { socket.onWebSocketConnect(session); socket.onWebSocketClose(200, "closing"); verify(events).removeClient(listener); } @Test public void removes_registered_session_and_notifies_exception_when_sockets_has_error() throws Exception { Exception error = new Exception("error"); socket.onWebSocketConnect(session); socket.onWebSocketError(error); verify(events).removeClient(listener); verify(events).error(socket, error); } }